我有两个类,其中一个扩展另一个类:
class a{
private $name;
public function __construct(){
}
public function get($v){
$this->name=$v;
}
}
class b extends a{
public $user;
}
在页面顶部我正在创建一个对象:
$a=new a();
$a->get(1234);
然后我正在从b类创建另一个对象。
$b=new b();
但我想将 $ a 的所有当前变量复制到 $ b 。所以 $ b 类的变量 $ name 的值为 1234 。
我该怎么做?
答案 0 :(得分:1)
有充分的理由不这样做..
然而 - 使用序列化/反序列化的一些黑客可以使类的实例成为类b
function copyDown($obj, $newInstance) {
$data = serialize($obj);
$newData = preg_replace('~(^O:[0-9]+:)"([^"]+")~', '$1"' . $newInstance . '"', $data);
return unserialize($newData);
}
$a = new ClassA();
$b = copyDown($a, 'ClassB');
但请注意,ClassB应该继承自ClassA
答案 1 :(得分:0)
向b
添加构造函数,该构造函数采用a
类型的参数?
class b extends a{
public $user;
function __construct(a $a)
{
parent::__construct($a.name);
}
}
答案 2 :(得分:0)
我认为如果你通过传递值来创建类b的对象,那么你可以访问类b中的类a的变量,因为类b正在扩展类a。
<?php
class a {
private $name;
public function __construct($v){
$this->name=$v;
}
}
class b extends a {
public $user;
}
$b = new b(1234);
var_dump($b);
?>