
最近在看《深入 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 你没 include/require |
2 fancy111 2020-03-30 11:30:48 +08:00 命名空间还 include ? use 啊 |
3 U7Q5tLAex2FI0o0g 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 U7Q5tLAex2FI0o0g 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 U7Q5tLAex2FI0o0g 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 这个东西设计的真垃圾。 |