我使用MVC结构处理自己的项目,并使用composer使用PSR-4处理自动加载类。我为路由器引擎选择了Php Fastroute库。
我的结构是:
index.php
define('DS', DIRECTORY_SEPARATOR, true);
define('BASE_PATH', dirname(__DIR__) . DS, TRUE);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require '../vendor/autoload.php';
require '../application/core/Core.php';
// Our framework is now handling itself the request
$app = new Framework\Core();
$response = $app->handle();
控制器:
namespace App\Core;
class Controller
{
public $templates;
public function __construct()
{
// My Question
$this->config = new \App\Core\Setting();
$this->Language = new Language('en');
$this->Url = new \App\Core\Url(Config::get('URL'),Config::get('URL'));
$this->templates = new \League\PlatesEngine(Config::get('PATH_VIEW'));
$this->Document = new \App\Core\Document();
}
public function loadModel($name, $path = null) {
$path = ($path === null) ? 'Catalog' : $path;
$path = '\App\\'.$path.'\Model\\'.$name;
$this->model = new $path;
return $this->model;
}
public function loadController($name) {
$path = '\App\Catalog\Controller\\'.$name;
$this->controller = new $path;
return $this->controller;
}
}
IndexController:
namespace App\Catalog\Controller\Home;
class IndexController extends \App\Core\Controller
{
public function index()
{
$add['power'] = $this->config->get('on');
$data['title'] = $this->Language->get('text_title');
$this->templates->addData($data, 'common/header');
//.... More Code
}
}
在操作中,我将类的新实例(库和核心类,即:Config或Ducoment或Templates或更多,如果需要...)放在Bridge __construct()
的{{1}}中,并扩展了{{1} }。这个模型对我有用,但是我不知道这个方法是对还是错?实际上,我需要将Object(新实例)从Core类加载到我的Controller
中,但是我不知道它将放置在哪里(更好和更合适)? (在IndexController
-在IndexController
-在Base Controller
-在IndexController
中)?
答案 0 :(得分:0)
我想为您提供一些如何使用PHP构建MVC 2 Web应用程序的想法:
目录结构
使用
之类的PHP(FIG)标准其他有用的技巧和库:
对您的问题: