【问题标题】:Get php object methology获取php对象方法
【发布时间】:2013-09-21 09:12:13
【问题描述】:

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

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)

【问题讨论】:

  • 可以使用 PHP __get__set 魔法方法。
  • 第二种方法..你不能访问类之外的类的私有变量...用第二种方法创建setter和getter方法

标签: php oop object


【解决方案1】:

可见性

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

属性可见性

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

More info

【讨论】:

  • 嗨,这不是我的问题。也没有使用 Magic setter/getter(恕我直言)。但是我想知道将对象吸气剂放在类外/内是否有一些缺点。所以我要么称它为 $User = GetUserInfo(1) 要么 $User = new User(); $User->GetUserInfo(1)
【解决方案2】:

您可以使用以下解决方案中给出的任何方法。为私有变量创建 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-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多