我不知道这是否是一个微不足道的问题,但在PHP类:在PHP类中动态创建的实例变量
MyClass的:
class MyClass {
public $var1;
public $var2;
constructor() { ... }
public method1() {
// Dynamically create an instance variable
$this->var3 = "test"; // Public....?
}
}
主营:
$test = new MyClass();
$test->method1();
echo $test->var3; // Would return "test"
这是否工作?我如何得到这个工作? PS。我写得很快,所以请忽略我在设置类或调用方法时所犯的任何错误!
编辑 如何使这些实例变量,我创建私人?
EDIT 2 感谢所有为响应 - 人人是正确的 - 我应该刚刚测试了它自己,但我第二天早上有一个考试,有这种思想在学习,我想检查,看它是否工作。人们不断暗示其糟糕的OOP - 也许它确实允许一些优雅的代码。让我稍微解释一下,看看你是否仍然这么认为。以下是我想出了:
//PHP User Model:
class User {
constructor() { ... }
public static find($uid) {
$db->connect(); // Connect to the database
$sql = "SELECT STATEMENT ...WHERE id=$uid LIMIT 1;";
$result = $db->query($sql); // Returns an associative array
$user = new User();
foreach ($result as $key=>$value)
$user->$$key = $value; //Creates a public variable of the key and sets it to value
$db->disconnect();
}
}
//PHP Controller:
function findUser($id) {
$User = User::find($id);
echo $User->name;
echo $User->phone;
//etc...
}
我可以把它放在一个关联数组,但我永远不能正确名称阵列有意义的事(即$用户>数据[“名”] ...丑陋)。无论哪种方式,你必须知道数据库中的内容,所以我不明白什么是它的混淆,特别是因为你可以只为变量转储对象。
[您可以在PHP中动态创建实例属性?](http://stackoverflow.com/questions/829823/can-you-create-instance-properties-dynamically-in-php) – outis 2012-07-11 22:25:41