【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决
上面这个是php对于命名空间功能的解释。目的就是为了解释类或函数的命字重复。
但我有一个疑惑是,非要用命名空间才能解决吗。
比如我在a和b两个文件夹下建了两个脚本文件名称都相同的c.php;此时我在这两个脚本中写相同的类名或函数,调用路径正确时怎么会出错呢?因为虽然名称相同,但是调用路径不同,作用域也不同,即使类和函数名都相同也不发生冲突!真不知道发明这个命名空间的意义在哪里?
php的引入机制(include、require)和其它语言如java是不太一样的。
include、require相当于把这个文件的代码全部载入进来,合并成一个代码文件。这样你就理解为什么不能有同名函数了。
但是引入命名空间就对这个做了区分。
ARE YOU SURE?
你的班级里面有 两个 张三。
老师上课点名:“张三” 。那么到底是那个张三 喊到呢?
。。。php不像其他语言,就是include多个文件,同一层的东西都是会互相污染。。。。
引入命名空间,其实就是模拟其他语言的import和package。。。
一班和二班都有个同学叫“张三”,有一天两个班合在一起举行茶话会,老师喊:“张三,你来把这个蛋糕分给你们班;张三,这箱苹果分给你们班”,请问,是一班的张三分蛋糕还是二班的张三分苹果?
如果老师喊:“一班的张三(Class1\Zhangsan)蛋糕分给你们班,二班的张三(Class2\Zhangsan)苹果拿走分了“,这样大家就很清楚了
引用来自“开源中国首席骨科主任”的评论
你的班级里面有 两个 张三。
老师上课点名:“张三” 。那么到底是那个张三 喊到呢?
引用来自“蒋贻华”的评论
如果一个文件d.php,即要require a文件夹中的c.php,也要require b文件夹中的c.php,如果有相同的类名能不报错?如果函数名相同能知道调用哪个函数?引用来自“Narky”的评论
一班和二班都有个同学叫“张三”,有一天两个班合在一起举行茶话会,老师喊:“张三,你来把这个蛋糕分给你们班;张三,这箱苹果分给你们班”,请问,是一班的张三分蛋糕还是二班的张三分苹果?
如果老师喊:“一班的张三(Class1\Zhangsan)蛋糕分给你们班,二班的张三(Class2\Zhangsan)苹果拿走分了“,这样大家就很清楚了
你所说的
如果老师喊:“一班的张三(Class1\Zhangsan)蛋糕分给你们班,二班的张三(Class2\Zhangsan)苹果拿走分了“,这样大家就很清楚了
就是我在一楼说的意思啊,就是因为这个我才感觉命名空间存在的意义不大!
引用来自“开源中国首席骨科主任”的评论
你的班级里面有 两个 张三。
老师上课点名:“张三” 。那么到底是那个张三 喊到呢?
引用来自“ziluopao”的评论
你为啥不把班说出来呢,比如一年级一班张三,和二年级二班李三。假如人们可以在一点向全世界说张三,那不更麻烦了,这就象坐标,立体空间中的一点,必须要有三个点才能确实,你非要用二点确实立体空间中的一点,那当然不行了。