[英]Pagination with Slim Framework and Laravel's Eloquent ORM
[英]Slim Framework and Eloquent ORM
我正在使用Slim Framework
和Laravel's Eloquent ORM
,这是我的代码:
user.php的
class User extends \Illuminate\Database\Eloquent\Model
{
protected $table = 'accounts';
}
的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();
正如您在我的代码中看到的,我必须在index.php
包含User.php
文件。 但是,如果我有多个型号怎么办? 我可以只包含一个文件夹,所有模型也将被包含在内,这样它就不会看起来很杂乱,包括索引中的每个模型文件。
先感谢您。
更新:我正在使用我看到的这段代码
foreach (glob("app/models/*.php") as $filename)
{
include $filename;
}
有一个更清洁的方式吗?
您可以使用Composer自动包含项目中的类。 假设您的composer.json
文件存在于app
。 然后,你可以使用classmap
在你的属性composer.json
自动包含在所有的类models
:
...
"require": {
"php" : ">=5.4.0",
"slim/slim" : "2.*",
"illuminate/database" : "5.0.33",
...
},
"autoload": {
"classmap" : [
"models"
]
}
classmap
告诉Composer映射指定目录中的所有类。 然后,您需要做的就是运行composer update
以在每次向此目录添加新文件时更新Composer的包含列表。
是的 ,有一种更清洁的方法,即自动加载。
它归结为使用spl_autoload_register()和自定义类加载器。
原理是使用文件层次结构模拟命名空间,并相应地将它们加载到命名空间:
$loader = function load($class)
{
include __DIR__."/app/$class.php";
}
spl_autoload_register($loader);
$user = new models\User();
这将自动包含位于app / models / User.php的文件。 尊重命名空间中的大写是一种好习惯; 如果您的命名空间是Model \\ User,则该目录应该尊重大小写(app / Model / User.php)
您当前解决方案的问题:
foreach (glob("app/models/*.php") as $filename)
{
include $filename;
}
是它将加载所有类,即使脚本不会使用它们。 注册自动装带器可以防止这种情况,只需加载必要的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.