Php 我是否正确使用名称空间、自动加载和别名?
我已经读了很多关于StackOverflow的文章,但我不确定我是否正确使用了名称空间、自动加载和别名。这功能正常,但我不确定我是否正确使用了这些概念。我在文章的底部列出了一些我认为这个设置不正确的原因 想象一下以下目录结构:Php 我是否正确使用名称空间、自动加载和别名?,php,oop,namespaces,autoload,Php,Oop,Namespaces,Autoload,我已经读了很多关于StackOverflow的文章,但我不确定我是否正确使用了名称空间、自动加载和别名。这功能正常,但我不确定我是否正确使用了这些概念。我在文章的底部列出了一些我认为这个设置不正确的原因 想象一下以下目录结构: \public_html - index.php \Classes \A - One.php \B - Two.php One.php的结构如下: <?php namespace Classes\A; class A { ...
\public_html
- index.php
\Classes
\A
- One.php
\B
- Two.php
One.php的结构如下:
<?php
namespace Classes\A;
class A { ....
<?php
namespace Classes\B;
class B { ....
所以,有几件事让我感到困扰:
use Classes\A;
new A\One();
因此,您可以看到在命名空间中是否有另一个类,可以用它进行实例化
new A\Three();
use
来定义它们。您可以直接调用它们\mysqli()
。是的,这有点难看,但它允许您在自己的代码中创建一个名为mysqli的函数,而不必担心与全局命名空间函数的冲突
使用
几乎就像查看包含
一样,当它们非常不同时,使用
,在这种情况下,是一件方便的事情,因此您不必每次都键入完整的名称空间
您的自动加载器也不需要知道您的名称空间。自动加载程序只是告诉PHP如何加载类。因此,如果它看到一个名为Classes\a\One
的类,您可以让它在目录/Classes/a
中查找名为One.php的文件并包含它。PHP将确保在适当的命名空间中分配类。autoloader只是一个方便的工具,它可以让您不必在每个PHP文件中执行include和requires操作
new A\Three();