最近在看《深入 PHP·面向对象、模式与实践这本书》,在第五章关于命名空间的文章中有如下一段代码
<?php
namespace popp\ch05\batch04\util;
class Debug
{
public static function helloWorld()
{
print "hello from Debug";
}
}
然后要在命名空间之外访问这个类
<?php
namespace main;
\popp\ch05\batch04\util\Debug::helloWorld();
popp\ch05\batch04\util\Debug::helloWorld();
可是,不管是\popp\ch05\batch04\util\Debug::helloWorld();
还是\popp\ch05\batch04\util\Debug::helloWorld();
都是运行错误啊。
多谢大家的指点,感觉还是基本不太牢靠,补点基础去了。
1
b821025551b 2020-03-30 11:29:01 +08:00 2
你没 include/require
|
2
fancy111 2020-03-30 11:30:48 +08:00
命名空间还 include ? use 啊
|
3
littleylv 2020-03-30 11:31:43 +08:00
先 include,或者做 autoload
|
5
b821025551b 2020-03-30 11:33:24 +08:00
@fancy111 #2 use 的前提是包中的文件需要提前 require 或者 include 进来。
|
6
littleylv 2020-03-30 11:35:31 +08:00
@fancy111 #2 哥,没 include 你怎么 use ?
而且可以不用 use,直接 \popp\ch05\batch04\util\Debug::helloWorld(); 就行 和 use popp\ch05\batch04\util\Debug 然后 Debug::helloWorld(); 效果一样的 基础不牢地动山摇+1 |
7
littleylv 2020-03-30 11:36:51 +08:00
楼主面向对象的基础还没学牢,就《深入 PHP 》了。建议基础先学
|
8
bzi 2020-03-30 11:51:32 +08:00
没做自动加载你就得手动引入
|
10
skyloongltl 2020-03-30 11:58:24 +08:00
自定义的类,不管哪种写法,都需要 include 或者 require 的。use 的话,就不用写前面“\popp\ch05\batch04\util\”这一串了,但是要用到自动加载,你可以百度一下 PHP 自动加载,挺简单的。
|
12
JJstyle 2020-03-30 12:04:48 +08:00
这本书我之前看过,这是一本进阶的书,还是先多了解基础在看吧。
|
13
yprisoner 2020-03-30 12:27:18 +08:00
spl_autoload_register 了解下,psr-4 自动加载规范了解下
|
14
dilu 2020-03-30 12:39:54 +08:00
先 include
然后自己写 spl_autoload_register 自动加载的逻辑 |
15
yc8332 2020-03-30 14:08:37 +08:00
要有使用自动加载。
|
16
star7th 2020-03-30 14:22:15 +08:00
use 本身只是使用 php 语法逻辑上的命名空间,并不会真正加载那个 php 文件进来。文件是文件,语法解析是语法解析。当然如果做了自动加载文件之类的暗操作就另说。
|
17
gidot 2020-03-31 17:56:32 +08:00
需要使用 spl 做选择性加载。include 还是要 include 的。
举一个简单的例子 ```php function autoload_modules($class){ $class = str_replace('\\', '\', $class); $file = APPLICATION_PATH . '/application/' . $class . '.php'; if (file_exists($file)) { include_once($file); } } spl_autoload_register('autoload_modules'); ``` |
18
handsomehaitao 2020-04-14 09:27:14 +08:00
你需要 composer 或者 required 引入进来
|
19
gdt 2020-04-17 14:46:11 +08:00
php 这个东西设计的真垃圾。
|