凌晨发贴,问个基础有关问题
程序员文章站
2022-05-14 14:05:20
...
凌晨发贴,问个基础问题
在维护个项目,倒是没啥问题,
项目用的doitphp框架
有个问题搜索没找到答案
比如说JAVA C# delphi等等语言,
如果在继承一个类,应该要引入对应的命名空间,文件之类的
但是在这个PHP项目中,
就是直接
他是怎么去找到基类并继承他呢?
------解决思路----------------------
一般情况下,你得先加载 Controller 类定义文件
但你用的是框架,那么加载基础类的工作已由框架完成。你只需使用即可
------解决思路----------------------
在入口文件处就require了基础的文件类
------解决思路----------------------
框架把好多操作都进行了封装,你的想法是没问题的
------解决思路----------------------
二楼正解,甚至在入口文件中会重新处理类名与文件名的关联问题,这个在YiiMailler插件中就有(包括楼主的问题,看看这个插件的代码也能解决)
------解决思路----------------------
这个框架比Thinkphp还简单
doit.class.php----> 281行 加载 Controller类 self::loadFile(DOIT_ROOT . 'core/Controller.class.php');
doit.class.php----> 286行 加载经过路由处理出来的当前控制器 self::loadFile(CONTROLLER_DIR . $controller . '.class.php');
doit.class.php----> 312行 执行当前控制器默认方法 $_app[$appId] = $appObject->$action();
------解决思路----------------------
DoitPHP.php 应该是把核心的文件初始化加载。
------解决思路----------------------
看看入口文件加载了什么。
在维护个项目,倒是没啥问题,
项目用的doitphp框架
有个问题搜索没找到答案
比如说JAVA C# delphi等等语言,
如果在继承一个类,应该要引入对应的命名空间,文件之类的
但是在这个PHP项目中,
就是直接
class AccountController extends Controller
他是怎么去找到基类并继承他呢?
------解决思路----------------------
一般情况下,你得先加载 Controller 类定义文件
但你用的是框架,那么加载基础类的工作已由框架完成。你只需使用即可
------解决思路----------------------
在入口文件处就require了基础的文件类
------解决思路----------------------
框架把好多操作都进行了封装,你的想法是没问题的
------解决思路----------------------
二楼正解,甚至在入口文件中会重新处理类名与文件名的关联问题,这个在YiiMailler插件中就有(包括楼主的问题,看看这个插件的代码也能解决)
------解决思路----------------------
这个框架比Thinkphp还简单
doit.class.php----> 281行 加载 Controller类 self::loadFile(DOIT_ROOT . 'core/Controller.class.php');
doit.class.php----> 286行 加载经过路由处理出来的当前控制器 self::loadFile(CONTROLLER_DIR . $controller . '.class.php');
doit.class.php----> 312行 执行当前控制器默认方法 $_app[$appId] = $appObject->$action();
------解决思路----------------------
DoitPHP.php 应该是把核心的文件初始化加载。
------解决思路----------------------
看看入口文件加载了什么。
相关文章
相关视频