我正在学习OOPHP,我只是想问一些有经验的脚本编写人员的输入。这个脚本确实可以工作,但如果我从一开始就学习它会更好。
这是我的connect。php
<?php
include ("classes/mysql.class.php");
$mysql = new Connect();
$mysql->mysql_Connect('localhost', 'root', 'root', 'test');?>
这是我的mysql_class。php
<?php
class Connect {
var $serverhost, $username, $password, $db_name;
public function mysql_Connect($host, $user, $pass, $db) {
$this->serverhost = $host;
$this->username = $user;
$this->password = $pass;
$this->db_name = $db;
@mysql_connect($this->serverhost, $this->username, $this->password) or die("Kan geen verbinding maken met de database!");
@mysql_select_db($this->db_name) or die("Kan geen verbinding maken met de geselecteerde database naam");
}
}?>
当然欢迎任何评论!
我的第一个建议是不要重新发明轮子,PHP已经提供了一些内置的数据库接口对象类,如PDO,或MySQLi扩展的类版本。
我还建议您不要使用@来抑制错误消息,因为如果您需要调试脚本,它会回来困扰您,并且它还会对脚本性能产生负面影响。
就你的面向对象方法而言,你的类相当小,所以还没有太多可评论的。我建议你不要使用var来声明你的类属性,而是使用public、protected或private来设置适当的可见性。var关键字是PHP 4的回归,最终可能会被删除。而且,它是public的别名。作为一般的经验法则,您不需要公共属性,您希望使它们受保护或私有,并实现getter和setter来给其他类访问。这样做的原因是,如果你有公共属性,没有什么可以阻止其他代码搞砸你的对象的内部状态。封装和数据隐藏是OOP中的重要概念,因此您可能希望了解它们。
使用@来抑制错误并不是一个很好的实践。此外,在类中使用die也是一种非常糟糕的做法(它使代码无法使用phpunit进行测试),您应该使用Exceptions来代替
http://www.php.net/manual/en/language.exceptions.phpPHP已经有了这样管理数据库的类。
既然你的类真的很简单,为什么不用
呢?Mysqli类http://www.php.net/manual/en/class.mysqli.php
PDO我推荐:http://ca2.php.net/manual/en/class.pdo.php
管理数据库连接。如果你想添加功能,你可以子类化PDO或Mysqli。