MVC がどのように機能するかを学習する手段として、PHP で基本的な MVC 構造化 CMS を作成しています (したがって、実際に事前に構築されたエンジンを使用していません)。基本的なバージョンが機能しており、現在、次のように情報を構成ファイルに移行しようとしています。
config.php
<?php
return array(
// MySQL database details
'database' => array(
'host' => 'localhost',
'port' => '',
'username' => '',
'password' => '',
'name' => '',
'collation' => 'utf8_bin'
),
// Application settings
'application' => array(
// url paths
'default_controller' => 'index',
'default_action' => 'index',
'timezone' => 'UTC',
),
// Session details
'session' => array(
'name' => '',
'expire' => 3600,
'path' => '/',
'domain' => ''
),
// Error handling
'error' => array(
'ignore' => array(E_NOTICE, E_USER_NOTICE, E_DEPRECATED, E_USER_DEPRECATED),
'detail' => false,
'log' => false
)
);
次のように index.php ファイルに含めています。
index.php
define ('__SITE_PATH', $site_path);
$config = include __SITE_PATH . '/config.php';
ただし、後でテスト用のテンプレート ファイルやその他のファイルに読み込もうとすると、何も返されません。これはクラスの問題ですか?誰かがこの問題に光を当てることができれば、私は非常に感謝しています.
詳細な参照用に完全な index.php を次に示します。
<?php
/*** error reporting on ***/
error_reporting(E_ALL);
/*** define the site path ***/
$site_path = realpath(dirname(__FILE__));
define ('__SITE_PATH', $site_path);
$config = include __SITE_PATH . '/config.php';
/*** include the controller class ***/
include __SITE_PATH . '/application/' . 'controller_base.class.php';
/*** include the registry class ***/
include __SITE_PATH . '/application/' . 'registry.class.php';
/*** include the router class ***/
include __SITE_PATH . '/application/' . 'router.class.php';
/*** include the template class ***/
include __SITE_PATH . '/application/' . 'template.class.php';
/*** auto load model classes ***/
function __autoload($class_name) {
$filename = strtolower($class_name) . '.class.php';
$file = __SITE_PATH . '/model/' . $filename;
if (file_exists($file) == false) {
return false;
}
include ($file);
}
/*** a new registry object ***/
$registry = new registry;
/*** load the router ***/
$registry->router = new router($registry);
/*** set the controller path ***/
$registry->router->setPath (__SITE_PATH . '/controller');
/*** load up the template ***/
$registry->template = new template($registry);
/*** load the controller ***/
$registry->router->loader();