php 命名空间使用使用有关问题

php中文网
发布: 2016-06-13 11:54:19
原创
1276人浏览过
php 命名空间使用使用问题
本帖最后由 potency 于 2014-03-20 09:46:47 编辑 test1.php:
namespace test1;
function test()
{
    echo __FUNCTION__;
}
[/code]

test2.php

<br /><?php<br />use test1;<br />function test2()<br />{<br />    echo __FUNCTION__;<br />}<br />echo test1();<br />
登录后复制

这2个php文件都在同一个子目录 test 下面。
在浏览器里运行http://localhost/test/test2.php 出现如下错误:
----------

( ! ) Warning: The use statement with non-compound name 'test1' has no effect in E:\wamp\Apache\htdocs\robot\test\test2.php on line 6

( ! ) Fatal error: Call to undefined function test1() in E:\wamp\Apache\htdocs\robot\test\test2.php on line 11
Call Stack
# Time Memory Function Location
1 0.0020 134912 {main}( ) ..\test2.php:0

--------------
很奇怪。有人知道是什么问题吗?我php是5.4

------解决方案--------------------
include 'test1.php';<br />//use test1;<br />function test2()<br />{<br />    echo __FUNCTION__;<br />}<br />echo test1\test();
登录后复制

------解决方案--------------------
namespace test1;<br />include 'test1.php';<br />function test2()<br />{<br />    echo __FUNCTION__;<br />}<br />echo test();
登录后复制

------解决方案--------------------
函数和常量是不支持use导入规则的,只有类能支持导入规则。
而且use test1;这种写法本身就是不对的。
像use test1/classname 这种写法才行,下面实例化函数的时候
new classname; //php会在test1命名空间下找classname的类,如果没有找到就自动装载了。

------解决方案--------------------
正如版主的例子 在用use的时候要像下面这样:
use test1\test as test2; 
或者
use test1\test; 这个 其实相当与 use test1\test as test;

上面的test1是命名空间后面跟着的test是test1命名下的test类
然后实例化 new test() 等价与 new test1\test();
这个就是use的作用,就是别名的意思。
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号