超薄框架和雄辩的ORM

wob*_*ano 4 php slim laravel composer-php eloquent

我使用的Slim Framework一起Laravel's Eloquent ORM,这是我的代码:

user.php的

class User extends \Illuminate\Database\Eloquent\Model
{
    protected $table = 'accounts';
}
Run Code Online (Sandbox Code Playgroud)

的index.php

require_once 'vendor/autoload.php';

// Models
include 'app/models/User.php';

$app = new \Slim\Slim();

// Database information
$settings = array(
    'driver' => 'mysql',
    'host' => '127.0.0.1',
    'database' => 'photo_mgmt',
    'username' => 'root',
    'password' => '',
    'collation' => 'utf8_general_ci',
    'prefix' => '',
    'charset'   => 'utf8',
);

$container = new Illuminate\Container\Container;
$connFactory = new \Illuminate\Database\Connectors\ConnectionFactory($container);
$conn = $connFactory->make($settings);
$resolver = new \Illuminate\Database\ConnectionResolver();
$resolver->addConnection('default', $conn);
$resolver->setDefaultConnection('default');
\Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver);

$app->get('/', function () use ($app) {
    $users = \User::all();
    echo $users->toJson();
});

$app->run();
Run Code Online (Sandbox Code Playgroud)

正如您在我的代码中看到的,我必须将User.php文件包含在我的代码中index.php.但是,如果我有多个型号怎么办?我可以只包含一个文件夹,所有模型也将被包含在内,这样它就不会看起来很杂乱,包括索引中的每个模型文件.

先感谢您.

更新: 我正在使用我看到的这段代码

foreach (glob("app/models/*.php") as $filename)
{
    include $filename;
}
Run Code Online (Sandbox Code Playgroud)

有一个更清洁的方式吗?

ale*_*exw 8

您可以使用Composer自动包含项目中的类.假设您的composer.json文件存在app.然后,您可以使用您的classmap属性composer.json自动包含所有类models:

...
"require": {
    "php" : ">=5.4.0",
    "slim/slim" : "2.*",
    "illuminate/database" : "5.0.33",
    ...
},
"autoload": {
    "classmap" : [
        "models"
    ]
}
Run Code Online (Sandbox Code Playgroud)

classmap告诉作曲家的所有类在指定的目录(IES)映射.然后,composer update无论何时向该目录添加新文件,都需要运行以更新Composer的包含列表.