首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >方法在实例化类时调用自身。

方法在实例化类时调用自身。
EN

Stack Overflow用户
提问于 2016-07-16 18:58:17
回答 1查看 34关注 0票数 2

我有OOP编程的基本技能,我正在尝试创建一个非常简单的MVC框架。奇怪的是,当我实例化应用程序而找不到原因时,index方法会自动调用。

我的索引文件有:$app = new ();

我的鞋带看起来像这样:

代码语言:javascript
运行
复制
class App {

   private $_controller = null;

   public function __construct() {
       $default_controller = 'controller/index.php';
       require $default_controller;
       $this->_controller = new Index();
   }
}

以下是我的主控制器类:

代码语言:javascript
运行
复制
class Controller {

    public function loadModel($name) {
        require('models/'. strtolower($name) .'.php');

        $model = new $name;
        return $model;
    }

    public function loadView($name) {
        $view = new View($name);
        return $view;
    }
}

我的主要模特课:

代码语言:javascript
运行
复制
class Model {

    public function __construct() {
        $this->db = new DB(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
    }

}

这是我的索引类:

代码语言:javascript
运行
复制
class Index extends Controller {

    public function index() {
        $example = $this->loadModel('Index_Model');
        $something = $example->content('test');

        $view = $this->loadView('index');
        $view->set('content', $something);
        $view->render();
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 19:05:07

代码语言:javascript
运行
复制
class Index extends Controller {

    public function index() {

在PHP 4中,与类的名称相同的方法充当构造函数--它仍然用作兼容性回退。

http://php.net/manual/en/language.oop5.decon.php

“为了与PHP 3和4向后兼容,如果PHP找不到给定类的__construct()函数,而且该类没有从父类继承一个函数,它将根据类的名称搜索旧的构造函数。”

( PHP在某些方面不区分大小写,这是最重要的。)

因此,您的意思是,如果类及其方法具有相同的名称,则在实例化类时将调用该方法吗?

是。

您必须重命名该方法,或者通过名称为__construct的方法在类本身或它扩展的方法中提供构造函数。

编辑:

正如您所说的,当您深入到MVC时,您可能需要查看名称空间。正如我链接到的手册页面所进一步指出的,“从PHP 5.3.3开始,名称与名称空间类名的最后一个元素相同的方法将不再被视为构造函数。”--这样也就消除了问题。http://php.net/manual/en/language.namespaces.rationale.php

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38414569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档