【问题标题】:PHP: calling require_once in constructor functionPHP:在构造函数中调用require_once
【发布时间】:2017-03-12 05:55:27
【问题描述】:

require_once 在构造函数中,不起作用我也尝试了 include 和 require。 file_exists 功能正常。

这是我的代码:

<?php

class App {

    protected $controller = 'home';
    protected $method = 'index';
    protected $params = [];

    public function __construct() {
        $url = $this->parseUrl();
        //print_r($url);

        if(file_exists(__DIR__.'/../controllers/'. $url[0] . '.php')) {
            $this->controller = $url[0];
            unset($url[0]);
        }

        require_once(__DIR__.'/../controllers/Home.php');
        echo $this->controller;

    }
}

【问题讨论】:

  • 你的question具体是什么?
  • “不工作”是什么意思?是加载失败吗? PHP 错误信息是怎么说的?还是正在加载但无法正常运行?在这种情况下,您要加载的文件应该做什么?出了什么问题?
  • @Simba,我收到了 HTTP ERROR 500。你可以在这里查看 - [Github][1]。 [1]:github.com/iaditya/Progs/blob/master/codeCourse_MVC/myApp/app/…
  • 如果您得到的只是 http 500,那么您需要检查服务器日志中的 PHP 错误,或者设置 PHP 配置以在浏览器中显示错误。一旦您看到实际的 PHP 错误消息,它几乎肯定会帮助您了解正在发生的事情。一个普通的旧 http 500 错误根本没有帮助。
  • 谢谢@Simba。我做了愚蠢的事情。错误日志对我有帮助。

标签: php constructor require-once


【解决方案1】:

我认为它有效。但您的代码将始终尝试包含__DIR__.'/../controllers/Home.php',而不是您在file_exists 调用中测试的文件。

我想你想做这样的事情:

if(file_exists(__DIR__.'/../controllers/'. $url[0] . '.php')) {
    require_once(__DIR__.'/../controllers/'. $url[0] . '.php');
    $this->controller = $url[0];
}

【讨论】:

  • 我发现了我的错误。这个功能很好用。我在 require_once() 函数中调用的那个文件中的代码出现了一些错误。
猜你喜欢
  • 2012-02-25
  • 2011-03-06
  • 2023-03-15
  • 2017-05-15
  • 2016-08-29
  • 2010-12-15
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多