我想知道如果在PHP中有两个具有相同名称的类,如果它们位于不同的子文件夹中是否有任何问题?
- 除了错误地编辑错误文件的明显“人为因素”之外。
@admin:我已经在网上找到了与此相关的其他帖子,但是没有找到回答这个具体问题的帖子。
@everyone:我确实发现这个(php - Autoload classes from different folders)非常有帮助,事实上它解决了one of my other questions!
答案 0 :(得分:7)
即使在同一个文件夹中也可以使用相同名称的类。
但请确保您一次只在PHP脚本中加载了一个类。
它们不能同时加载到同一个脚本中。
PHP不知道您是否创建了两个具有相同名称的类,但事实是PHP不会在同一个脚本中加载它们。您可以一次使用一个班级。
您还可以在php中查看namespaces。
答案 1 :(得分:5)
这就是名称空间的来源。 http://www.php.net/manual/en/language.namespaces.rationale.php http://www.php.net/manual/en/language.namespaces.basics.php
这允许您区分同名的两个类。
答案 2 :(得分:0)
我相信当你实例化这些类时你会有冲突。实际上我从来没有对它进行测试,但是PHP的行为与Java不同,你可以在不同的包中放置同名的类,并指定包以在实例化时区分它们......
答案 3 :(得分:0)
实际上你可以,但也要考虑重载和界面......
答案 4 :(得分:0)
当然,您可以使用相同的类名创建同一文件夹或不同文件夹中的文件,但只能在一个文件中使用一个实现。
如果您确实需要为这两个类赋予相同的名称并且必须在一个文件中使用它们,那么解决方案可能是命名空间... http://www.php.net/manual/en/language.namespaces.rationale.php
答案 5 :(得分:0)
'人为因素'就是重点 不仅编辑错误的文件问题,而且在相同的代码中使用这些类将是一个混乱。
答案 6 :(得分:0)
即使在同一文件夹中,也可能具有相同名称的类。这是代码示例。
文件名:namespace.php
<?php
namespace MyProject {
class Connection {
public function __construct(){
echo 'My Project class call';
}
}
function connect() {
echo 'My Project connect function.';
}
}
namespace AnotherProject {
class Connection {
public function __construct(){
echo 'Another Project class call';
}
}
function connect() {
echo 'Another Project connect function.';
}
}
?>
另一个文件,我们在其中使用此命名空间。 文件名:myapp.php
<?php
require 'namespace.php';
//create a class object
$obj = new MyProject\Connection;
//calling a function
MyProject\connect();
//calling a another function
AnotherProject\connect();
?>