php – 这是OOP或类似OOP

长时间阅读和测试,但我想知道.这是正确的 PHP OOP代码,或不
Class User {

  function Add($Name,$Password){
    $sql_str = "INSERT INTO User SET Name = '$Name',Password = '$Password'";
    $sql->do_sql($sql_str);
  }

  function Del($UserID) {
    $sql_str = "DELETE FROM User WHERE UserID = '$UserID'";
    $sql->do_sql($sql_str);
  }

  function Show ($Limit)
    if ($limit > 0){
      $sql_str = "SELECT * FROM User ORDER BY Name LIMIT $Limit";
    }else{
      $sql_str = "SELECT * FROM User ORDER BY Name";
    }
    $result = $sql->do_sql($sql_str);
    for ($i = 0; $i < COUNT($result); $i++){
      $data[$i]['UserID'] = ....
      $data[$i]['Name'] = ....
    }
    return $Data
  }

}
$MyUser = new User;

现在从文件userControl.PHP我可以控制动作.如果我想做某事,我可以将动作发送到用户类的实例:$MyUser-> Add($Name,$Password);
这种方法更像是一个分组函数而不是OOP,还是更好地使用setter和getter?

如果这个例子不是OOP,那么我做错了怎么需要做这个例子的OOP方式呢?

TNX

你没有以正确的方式解决这个问题.你真正想要做的是拥有一个代表单个用户的类User,其方法反映了这一点.

来自维基百科:

In object-oriented programming,a
method is a subroutine that is
exclusively associated either with a
class (in which case it is called a
class method or a static method) or
with an object (in which case it is an
instance method).

用户对象至少应该具有实例方法,使其能够:

>从数据库加载
>保存到数据库

以及一种静态方法
– 创建用户并返回用户对象.

它还应该有一个构造函数方法(PHP5中的__construct(args)或PHP4中的User(args))在创建用户调用.这可能应该接受id或用户名或识别的东西,以便它可以加载正确的用户.

为了简单而不仅仅为您做一切,想象一下只有id和名称用户对象.以下是该类的外观:

假设PHP5:

class User{
    private $id;
    public $name;

    public function __construct($id){
        $this->load($id);
    }

    public function load($id){
        // Do a query to load a user and initialize $id and $name.
    }

    public function save(){
        // Do a query saving $this->id and $this->name to the database.
    }

    public static function create($name){
        // Do a query to create a user with name $name.
    }
}

您可以使用新用户($id)加载给定其ID的用户,或者创建一个给定的User :: create($name)

有可能被比喻钉死,我不会在PHP中使用setter和getter.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...