Slim structure and bright ORM

I use Slim Frameworkalong with Laravel Eloquent ORM, and this is my code:

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();

As you can see in my code, I have to include the file User.phpin mine index.php. But what if I have several models? Can I just include the folder and all the models will also be included so that it does not look messy, including every model file in my index.

Thanks in advance.

UPDATE: I am using this piece of code that I saw

foreach (glob("app/models/*.php") as $filename)
{
    include $filename;
}

Is there a cleaner view?

+4
source share
2 answers

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, .

+8

, , : .

spl_autoload_register() .

, :

$loader = function load($class)
{
    include __DIR__."/app/$class.php";
}
spl_autoload_register($loader);
$user = new models\User();

, /models/User.php. - ; - Model\User, (app/Model/User.php)


:

foreach (glob("app/models/*.php") as $filename)
{
    include $filename;
}

, , script . , .

0

Source: https://habr.com/ru/post/1614382/


All Articles