0

我想知道处理获取对象的更好方法是什么。

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 setter/getter(恕我直言)。但是我想知道将对象吸气剂放在类外/内是否有一些缺点。所以我要么称它为 $User = GetUserInfo(1) 要么 $User = new User(); $User->GetUserInfo(1)

4

2 回答 2

0

能见度

可以通过在声明前加上关键字 public、protected 或 private 来定义属性或方法的可见性。声明为 public 的类成员可以在任何地方访问。声明为受保护的成员只能在类本身内以及被继承类和父类访问。声明为私有的成员只能由定义该成员的类访问。

属性可见性

类属性必须定义为公共的、私有的或受保护的。如果使用 var 声明,该属性将被定义为 public。

更多信息

于 2013-09-21T09:17:38.307 回答
0

您可以使用以下解决方案中给出的任何方法。为私有变量创建 Getter 和 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;
于 2013-09-21T09:34:18.593 回答