Yev*_*Yev 5 php oop model-view-controller include-path
我正在研究我的第一个MVC框架,并希望为BASE_PATH,APP_PATH,LIB_PATH和PUBLIC_PATH定义4个常量.我的文件结构如下所示:
/
/app
/controllers
/models
/views
/config
/db
/lib
/public_html
/css
/js
/img
Run Code Online (Sandbox Code Playgroud)
我的index.php文件位于public_html目录中.目前有以下代码:
error_reporting(E_ALL);
define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',dirname(realpath(__FILE__)) . "/../app/");
define('LIB_PATH',dirname(realpath(__FILE__)) . "/../lib/");
define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");
require LIB_PATH . 'core.php';
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我觉得必须有一个更好的方法,没有所有的"..".任何建议或这是最好的方式吗?让我知道.谢谢!
回答
感谢@fireeyedboy和@KingCrunch,我想出了我想要的解决方案.这是我的最终代码:
define('PUBLIC_PATH', dirname(__FILE__) . "/");
define('BASE_PATH', dirname(PUBLIC_PATH) . "/");
define('APP_PATH', BASE_PATH . "app/");
define('LIB_PATH', BASE_PATH . "lib/");
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");
define('BASE_PATH',dirname(PUBLIC_PATH));
define('APP_PATH',BASE_PATH . "/app/");
define('LIB_PATH',BASE_PATH . "/lib/");
Run Code Online (Sandbox Code Playgroud)
换句话说dirname()再次使用.并重新定义常量以直接使用它们.不确定它有助于提高可读性.
第一:
realpath(__FILE__)
Run Code Online (Sandbox Code Playgroud)
只是没用
但是,没有"真正的"更好的方法,因为../不是"脏".我想到的唯一的其他解决方案
dirname(dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)
..文件系统(它不是由php发明;))定义其父目录的方式,也.定义了当前目录.
| 归档时间: |
|
| 查看次数: |
10559 次 |
| 最近记录: |