长时间阅读和测试,但我想知道.这是正确的
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.