谁知道如何重新声明功能?
例如:
class Name{}
//Code here
class Name{}
输出是:
无法重新声明课程
所以我试着将类命名为变量:
$foo = 'name';
class $foo{}
//Code
class $foo{}
编辑:我有一个DataBase表,我正在从表用户'while()'循环中读取数据。
我有一个使用该表并回显一些信息的类。
这就是原因。
它还没有用...... 有什么建议吗?
答案 0 :(得分:4)
如果你想拥有几个同名的课程,那么你应该使用namespaces。
答案 1 :(得分:0)
不。 PHP根本不支持对现有类的运行时修改
答案 2 :(得分:0)
你为什么要重新宣布一个班级?什么时候你可以在任何时候引用它?
答案 3 :(得分:0)
我认为您正在寻找的是创建一个类的新实例:
$foo = 'name';
$obj1 = new $foo();
//Code
$obj2 = new $foo();
答案 4 :(得分:0)
您不应该有2个或更多具有相同名称的类。这不起作用。口译员应该如何知道哪个班级是正确的班级?
更改第二个类的名称,并在需要时扩展它们。
编辑:使用您需要相同类名的命名空间,或者如果您有现有的类。
答案 5 :(得分:0)
如果你需要一个类的两个实例,你可以将它初始化为两个不同的变量;
class Foo{}
$foo1 = new Foo;
$foo2 = new Foo;
答案 6 :(得分:0)
使用PHP namespaces来声明具有相同名称但目的不同的类。
答案 7 :(得分:0)
首先:不要这样做。
那就是说,如果你真的需要“重新”一个类,你可以使用包装类来实现这个目的
<?php
class foo { //Original definition here };
class bar {
var $baseobj;
function bar($some, $args) {
$this->baseobj=new $which($some, $args);
}
function someMethod() {
return $this->baseobj->someMthod();
}
//...
}
class baz {
function someMethod() {
return "This is the result";
}
//...
}
$obj=new bar($this, $that);
//$obj is now a wrapped foo object
echo $obj->someMethod(); //Will call into foo
$obj->baseobj=new baz($this, $that);
//$obj is now a wrapped baz object
echo $obj->someMethod(); //Will call into baz
?>
再说一次:如果没有非常好的理由,不要这样做!
免责声明:此实施不仅仅是粗略的,只是传达这个想法。
答案 8 :(得分:0)
namespace A {
class Name {
function __toString() {
return __METHOD__;
}
}
}
namespace B {
class Name {
function __toString() {
return __METHOD__;
}
}
}
namespace C {
echo new \A\Name ,PHP_EOL;
echo new \B\Name ,PHP_EOL;
}
输出
A\Name::__toString
B\Name::__toString