为什么我必须在包含的文件中重新声明我的类?

时间:2016-01-26 09:28:06

标签: php oop include

我正在为客户建立一个网站,他希望有一个计算器供客户在他们想租赁汽车时计算他们的每月保费。此计算器出现在网站的三个不同位置,因此我决定构建一次,然后将include()文件放入主文件中。例如:

    case 'calculator':
    case 'bereken-leasebedrag':
        include('calculator.php');
        break;

但是,我在主文件中定义了几个类:

use site\database\Vote;
use site\database\Vehicle;
use site\database\VehicleType;

use site\utils\ApiConnect;
use site\utils\Calculator;

还有一些。

其中一些类由计算器文件使用,例如Calculator和Vehicle以及其他一些类。这些类在主文件中定义,但不会传输到计算器文件,而变量如$ _SESSION,$ _POST甚至我自己定义的变量(如$ car和$ calc)都可以在包含的文件中找到。

如果我不在calculator.php的开头重新声明我的课程,它会在页面中抛出一个致命的错误,说它无法找到,例如,ApiConnect类。

我在这里做错了吗?从逻辑上讲,包含的文件应该继承几乎所有东西,并且必须指定所包含文件所需的每个类似乎适得其反。

我在解释事情时非常糟糕,所以如果我需要详细说明一些事情,我会非常乐意。

1 个答案:

答案 0 :(得分:0)

感谢deceze,我了解到use用于别名,而我没有从Google搜索中获得。

显然自动加载器会自动包含我们拥有的所有类,我们只需为每个类手动应用别名。这有点奇怪,但你去了。

长话短说,我不得不在包含的文件中应用别名,以便我可以说new Calculator(),或删除别名并将每new {CLASS}()更改为new \{PATH}\{TO}\{CLASS}。我个人选择了第一个选项,但是如果你有一个自动加载器并遇到同样的问题,至少你可以选择。