我想知道什么是处理获取对象的更好方法。
1)
class UserInfo{
private $UserName;
private $UserID;
}
function GetUserInfo($UserID){
$User = new User();
// something
$User->UserName = "Arnold";
return $User;
}
2)
class UserInfo{
private $UserName;
private $UserID;
public function GetUserInfo($UserID){
// something
$this->UserName = "Arnold";
}
}
使用第二个时是否有任何重大问题?
请注意,这是一个高度简化的示例: - )
编辑:这不是我的问题。也没有使用Magic setters / getters(这是不好的imho)。但是我想知道将对象getter放在类外部/内部是否有一些缺点。所以我要么调用它$ User = GetUserInfo(1)或$ User = new User(); $用户 - > GetUserInfo(1)
答案 0 :(得分:0)
<强>可见性强>
可以通过在声明前加上关键字public,protected或private来定义属性或方法的可见性。声明为public的类成员可以随处访问。声明受保护的成员只能在类本身以及继承和父类中访问。声明为私有的成员只能由定义成员的类访问。
财产可见性
必须将类属性定义为public,private或protected。如果使用var声明,则该属性将被定义为public。
答案 1 :(得分:0)
您可以使用以下解决方案中给出的任何方法。创建Getter&amp;私有变量的Setter方法或在构造函数中传递值以在实例化时初始化值。
1
class UserInfo{
private $UserName;
private $UserID;
public function _setUserName($UserName){
$this->UserName = $username;
}
public function _getUserName(){
return $this->UserName;
}
public function _setUserId($UserID){
$this->UserId = $UserID;
}
public function _getUserId(){
return $this->UserId;
}
}
$user = new UserInfo();
$user->_setUserName("Username Passed Here");
$user->_setUserID("UserId Passed here");
echo $user->_getUserName." ".$user->_getUserID;
or You can use constructor to set values at time of Object Instantiation like given below
1
class UserInfo{
private $UserName;
private $UserID;
function __construct($UserName, $UserId){
$this->UserName = $username;
$this->UserId = $UserID;
}
public function _getUserName(){
return $this->UserName;
}
public function _getUserId(){
return $this->UserId;
}
}
$user = new UserInfo("Username Passed Here", "UserID Passed Here");
echo $user->_getUserName." ".$user->_getUserID;