Можем ли мы интегрировать проект Laravel в библиотеку в CodeIgniter?

Я хочу расширить функциональность моего проекта CodeIgniter, интегрируя некоторый код, написанный в laravel? как я могу приблизиться, могу ли я включить код через библиотеку в CodeIgniter? Если да, то как? Я хочу включить контроллеры и ORM в CI.

Код Laravel – это своего рода api-приемник с функцией переговоров с другими сторонними службами.

Related of "Можем ли мы интегрировать проект Laravel в библиотеку в CodeIgniter?"

Да, вы можете использовать композитор для установки Laravel конкретных модулей / проектов, сторонних проектов в CodeIginter. Просто autoload в свой файл `index.php 'вверху

 // Composer autoload require_once __DIR__.'/vendor/autoload.php'; 

Я использую Eloquent как ORM в кодовой базе CodeIgniter.

Создайте classmap в каталоге приложения в composer.json

 "autoload": { "psr-4": { "YourApp\\": ["application/"] }, 

Использовать Eloquent

Чтобы использовать Eloquent , вам потребуется создать библиотеку для настройки Eloquent для использования.

 /** * Capsule setting manager for Illuminate/database */ use Illuminate\Database\Capsule\Manager as CapsuleManager; use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; class Capsule extends CapsuleManager { public function __construct() { parent::__construct(); //Loaded by CI if(function_exists('get_instance')) { $ci = &get_instance(); $db = new stdClass; $db = $ci->db; } else { require_once __DIR__.'/../config/database.php'; $db = (object) $db['default']; } $this->addConnection(array( 'driver' => $db->dbdriver, 'host' => $db->hostname, 'database' => $db->database, 'username' => $db->username, 'password' => $db->password, 'charset' => $db->char_set, 'collation' => $db->dbcollat, 'prefix' => $db->dbprefix, )); $this->setEventDispatcher(new Dispatcher(new Container)); // Make this Capsule instance available globally via static methods... (optional) $this->setAsGlobal(); // Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher()) $this->bootEloquent(); } } // END Capsule Class 

Теперь загрузите автозагрузку библиотеки, и у вас есть красноречивая красота.

Аналогичным образом, вы можете использовать MonoLog для ведения журнала, « Whoops для отображения ошибок», « Formers\Former для создания форм и т. Д.

Использовать Упс

Вы можете разместить этот код где-нибудь после autload и определить среду CI в вашем index.php чтобы использовать красивую библиотеку https://github.com/filp/whoops

 if (ENVIRONMENT == 'development') { $whoops = new \Whoops\Run; $whoops->pushHandler(new Whoops\Handler\PrettyPageHandler()); $whoops->register(); } 

Вы также можете расширить CI_Router чтобы использовать маршрутизацию стиля Laravel в приложении Code Igniter.

Шаблоны клинков

Вы можете расширить CI_Loader чтобы использовать Blade templating в Code Igniter. Создайте новый файл MY_Loader в своем каталоге application/core MY_Loader с помощью этого кода.

 use Illuminate\Blade\Environment; use Illuminate\Blade\Loader; use Illuminate\Blade\View; class MY_Loader extends CI_Loader { public function __construct() { parent::__construct(); } public function blade($view, array $parameters = array()) { $CI =& get_instance(); $CI->config->load('blade', true); return new View( new Environment(Loader::make( $CI->config->item('views_path', 'blade'), $CI->config->item('cache_path', 'blade') )), $view, $parameters ); } } 

Возможно, вам придется создать файл конфигурации blade.php в вашем каталоге application/config для хранения конкретных конфигураций blade blade.php .

 //config/blade.php $config['views_path'] = APPPATH . 'views/blade/'; $config['cache_path'] = APPPATH . 'cache/blade/'; 

Теперь вы можете сделать что-то подобное в своем контроллере

 class Home extends CI_Controller { public function index() { // Prepare some test data for our views $array = explode('-', date('dm-Y')); list($d, $m, $y) = $array; // Basic view with no data echo $this->load->blade('home.index'); // Passing a single value echo $this->load->blade('home.index')->with('day', $d); // Multiple values with method chaining echo $this->load->blade('home.index') ->with('day', $d) ->with('month', $m) ->with('year', $y); // Passing an array echo $this->load->blade('home.index', array( 'day' => $d, 'month' => $m, 'year' => $y )); } }