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