![](/img/trans.png)
[英]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.