我正在学习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");
}
}?>
任何评论都是当然的欢迎!
答案 0 :(得分:2)
我的第一条建议是不重新发明轮子,PHP已经提供了一些内置的数据库接口对象类,如PDO,或MySQLi扩展的类版本。
我还建议您不要使用@来抑制错误消息,因为如果您需要调试脚本,它将在以后再次困扰您,并且它还会对脚本性能产生负面影响。
至于你的OOP方法,你的课程相当小,所以还没有太多评论。我建议你不要使用var来声明你的类属性,而是使用public,protected或private来设置适当的可见性。 var关键字是PHP 4的回归,最终可能会被删除。此外,它是公众的别名。作为一般经验法则,您不希望公共属性,您希望将它们设置为受保护或私有,并实现getter和setter以授予其他类访问权限。这样做的原因是,如果你有公共属性,就没有什么可以阻止另外一些代码来搞砸你对象的内部状态。封装和数据隐藏是OOP中的重要概念,因此您可能需要查看它们。
答案 1 :(得分:1)
使用@来抑制错误并不是一个很好的做法。 在类中使用die也是一种非常糟糕的做法(它使得代码不能用phpunit测试),你应该使用Exceptions
http://www.php.net/manual/en/language.exceptions.php
PHP已经有了一些以这种方式管理数据库的类。
由于你的课很简单,为什么不使用
Mysqli课程 http://www.php.net/manual/en/class.mysqli.php
PDO我建议: http://ca2.php.net/manual/en/class.pdo.php
管理数据库连接。如果你想要增加功能,你可以继承PDO或Mysqli。