Php 业务逻辑类,使用字典而不是属性
我有一个业务逻辑类,它保存用户的所有数据。该类应该能够从mysql数据库中插入/获取/更新/删除用户 我开始创建所有属性,如用户名、密码、电子邮件等。。。但是,我意识到拥有一个包含所有属性的单一字典更方便,因为我经常需要将用户对象与字典或字符串协调,并且需要保留键值对。我是这样写的:Php 业务逻辑类,使用字典而不是属性,php,properties,business-logic,Php,Properties,Business Logic,我有一个业务逻辑类,它保存用户的所有数据。该类应该能够从mysql数据库中插入/获取/更新/删除用户 我开始创建所有属性,如用户名、密码、电子邮件等。。。但是,我意识到拥有一个包含所有属性的单一字典更方便,因为我经常需要将用户对象与字典或字符串协调,并且需要保留键值对。我是这样写的: class User { public $parameters; public function __construct($parameters) { $this->
class User {
public $parameters;
public function __construct($parameters)
{
$this->parameters= $parameters;
}
public function __get($property) {
return $parameters[$property];
}
...
}
但它并没有像预期的那样起作用。我想要的行为是:
$user= new User($params);
echo user.username; // Searches in the parameters for the field "username"
有可能这样做吗
编辑
使用$user->username,我得到:
注意:未定义变量:第10行/Library/WebServer/Documents/Cinema/blogics/user.php中的参数
第10行是用户获取方法。您应该将
用户名
声明为类
变量
public $username;
然后,您可以使用用户对象作为
$user->username;
有关使用PHP的oops的更多详细信息,可以查看此链接
您应该将
用户名
声明为类
变量
public $username;
然后,您可以使用用户对象作为
$user->username;
有关使用PHP的oops的更多详细信息,可以查看此链接
您应该将
用户名
声明为类
变量
public $username;
然后,您可以使用用户对象作为
$user->username;
有关使用PHP的oops的更多详细信息,可以查看此链接
您应该将
用户名
声明为类
变量
public $username;
然后,您可以使用用户对象作为
$user->username;
有关使用PHP的oops的更多详细信息,可以查看此链接
- 在getter中使用
而不是$this->parameters[$property]
$parameters[$property]
- 称之为
$user->username
应该是私有的,以保持封装$parameters
class User {
private $parameters; // should be private (encapsulation)
public function __construct($parameters)
{
$this->parameters= $parameters;
}
public function __get($property) {
return $this->parameters[$property]; // instead of $parameters[$property]
}
}
$params = array(
"username" => "John Doe",
"age" => 33
);
$user = new User($params);
echo $user->username; // -> instead of .
- 在getter中使用
而不是$this->parameters[$property]
$parameters[$property]
- 称之为
$user->username
应该是私有的,以保持封装$parameters
class User {
private $parameters; // should be private (encapsulation)
public function __construct($parameters)
{
$this->parameters= $parameters;
}
public function __get($property) {
return $this->parameters[$property]; // instead of $parameters[$property]
}
}
$params = array(
"username" => "John Doe",
"age" => 33
);
$user = new User($params);
echo $user->username; // -> instead of .
- 在getter中使用
而不是$this->parameters[$property]
$parameters[$property]
- 称之为
$user->username
应该是私有的,以保持封装$parameters
class User {
private $parameters; // should be private (encapsulation)
public function __construct($parameters)
{
$this->parameters= $parameters;
}
public function __get($property) {
return $this->parameters[$property]; // instead of $parameters[$property]
}
}
$params = array(
"username" => "John Doe",
"age" => 33
);
$user = new User($params);
echo $user->username; // -> instead of .
- 在getter中使用
而不是$this->parameters[$property]
$parameters[$property]
- 称之为
$user->username
应该是私有的,以保持封装$parameters
class User {
private $parameters; // should be private (encapsulation)
public function __construct($parameters)
{
$this->parameters= $parameters;
}
public function __get($property) {
return $this->parameters[$property]; // instead of $parameters[$property]
}
}
$params = array(
"username" => "John Doe",
"age" => 33
);
$user = new User($params);
echo $user->username; // -> instead of .
如果您使用对象运算符
->
而不是串联运算符
则有帮助如果您使用对象运算符->
而不是串联运算符
则有帮助如果您使用对象运算符->
而不是串联运算符
则有帮助如果您使用对象运算符->
而不是连接运算符
即使这种方式不起作用,也不能识别为属性。即使这种方式不起作用,也不能识别为属性。即使这种方式不起作用,也不能识别为属性。即使这种方式不起作用,也不能识别为属性。“private”$parameters是一个很好的观点,因为您使用的是getter和setter“private”$parameters是一个很好的观点,因为您使用的是getter和setter“private”$parameters是一个很好的观点,因为您使用的是getter和setter