获取php对象神话

时间:2013-09-21 09:12:14

标签: php oop object

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

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)

2 个答案:

答案 0 :(得分:0)

<强>可见性

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

财产可见性

必须将类属性定义为public,private或protected。如果使用var声明,则该属性将被定义为public。

More info

答案 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;