Php 在Laravel外部使用Illumb库时未调用引导方法
我正在尝试使用外部拉威尔。通过遵循此回购协议,我成功地将雄辩的模型用于我的项目。但是,我设置了boot方法,然后没有调用它 封装器Php 在Laravel外部使用Illumb库时未调用引导方法,php,laravel,illuminate-container,Php,Laravel,Illuminate Container,我正在尝试使用外部拉威尔。通过遵循此回购协议,我成功地将雄辩的模型用于我的项目。但是,我设置了boot方法,然后没有调用它 封装器 <?php namespace App\Eloquent; use Illuminate\Container\Container; use Illuminate\Database\Capsule\Manager as Capsule; use Illuminate\Events\Dispatcher; class Encapsulator {
<?php namespace App\Eloquent;
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
class Encapsulator
{
private static $conn;
private function __construct() {}
static public function init()
{
if (is_null(self::$conn))
{
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => HOSTNAME,
'database' => DATABASE,
'username' => USERNAME,
'password' => PASSWORD,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => PREFIX,
]);
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->setAsGlobal();
$capsule->bootEloquent();
}
}
}
封装了eQuentBase.php
<?php namespace App\Eloquent;
use Illuminate\Database\Eloquent\Model as Eloquent;
abstract class EncapsulatedEloquentBase extends Eloquent
{
public function __construct(array $attributes = array())
{
Encapsulator::init();
parent::__construct($attributes);
}
}
User.php
<?php namespace App\Eloquent;
class User extends EncapsulatedEloquentBase
{
protected static function boot() {
parent::boot();
echo 'hey boot!!'; // called!
static::creating(function($node) {
echo 'hey creating!!'; // never called!
});
}
}
我可以使用模型,但不调用注册方法。我想问题是我没有正确设置EventDispatcher,但我不知道如何设置。请帮帮我 我已经解决了我的问题。关键的一点是,不要在每个新的雄辩模型中创建新的封装器实例。 在中,我扩展了用于用户模型的封装雄辩库,所以当我创建两个用户并执行某些操作时,它们是不同的。这就造成了问题 因此,解决方案是让用户扩展Illumb\Database\Eloquent\Model
<?php namespace App\Eloquent;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
Encapsulator::init();
User::create(['name' => 'John']);