【发布时间】:2017-05-28 05:54:58
【问题描述】:
我已经阅读了很多关于 StackOverflow 的帖子,但我不确定我是否正确使用了命名空间、自动加载和别名。这运行良好,但我不确定我是否正确使用了这些概念。我在帖子底部列出了一些我认为此设置不正确的原因。
想象以下目录结构:
\public_html
- index.php
\Classes
\A
- One.php
\B
- Two.php
One.php 的结构如下:
<?php
namespace Classes\A;
class A { ....
Two.php 的结构如下:
<?php
namespace Classes\B;
class B { ....
然后,在 index.php 中我执行以下操作:
<?php
use Classes\A\One as One;
use Classes\B\Two as Two;
spl_autoload_register(function ($className) {
...
});
... ?>
所以,有几件事让我对此感到烦恼:
如果我正在使用别名(“使用”语句),我仍然需要列出所有文件。我们不是想通过使用自动加载来避免这样做吗?
如果我想使用内部类,我需要添加一行如“use \mysqli;”进入使用它的类并执行“new \mysqli()”之类的操作。好像有点乱?
如果一个类从另一个命名空间扩展一个类(例如 Two.php 扩展 One.php),那么我需要包含“使用 \Classes\A\One 作为 One;”在 One.php 中,这似乎是我们首先要避免的
【问题讨论】:
标签: php oop namespaces autoload