【问题标题】:PHP Include class to my mini framework - errorPHP 在我的迷你框架中包含类 - 错误
【发布时间】:2013-09-05 16:32:17
【问题描述】:

快速提问。我有 mvc(我的迷你框架;))进行教育。

https://github.com/aras123/MiniFramework

如果我在根目录中创建文件 test.php(例如)。

test.php

<?php 
class Example {
    public function __construct() {
    echo 'This is example!';
    }
}

并在我的框架中为 IndexController 创建操作并希望包含并运行类

应用程序/控制器/IndexController.php

<?php
namespace Application\Controller;
use Framework\Controller;

class IndexController extends Controller {
    public function _init() {
    }

    public function IndexAction() {
        require 'test.php'; //path is ok
                $aaa = new Example(); //is error 
    }

错误信息:

Fatal error: Class 'Application\Controller\Example' not found in
/Application/Controller/IndexController.php on line ...

【问题讨论】:

  • 您是否包含文件?
  • 我建议看一下您在 index.php 中的__autoload 函数,并检查它是否被调用为示例,如果是,它正在寻找什么文件。检查以确保其位于正确的位置
  • 正如 Jason 所说,您是否包含了该文件?否则,尝试更改 $aaa = new Example(); to $aaa = new Example;
  • @briosheje,new Example()new Example 没有区别
  • 示例似乎没有命名空间,所以使用new \Example;(假设它确实包含在上面)

标签: php include fatal-error


【解决方案1】:

它们是您的自动加载器的工作方式,它不会拾取您创建的文件。这里有两种解决方案,或者你在控制器顶部有一个包含

<?php
namespace Application\Controller;
require __DIR__ . '/../../test.php';
// ...

或者,您将test.php 移动到Application\Controller 并将其重命名为Example.php

我建议后者

【讨论】:

  • 我只能说看看你的自动加载器,它是如何工作的
【解决方案2】:

是的!这是很好的代码:

<?php
namespace Application\Controller;
use Framework\Controller;

class IndexController extends Controller {
    public function _init() {
    }

    public function IndexAction() {
        require 'test.php'; //path is ok
                $aaa = new \Example(); //now is ok!
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多