在OOPHP数据库连接脚本上输入

时间:2011-11-09 10:33:54

标签: php database oop mysqli

我正在学习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");
    }
}?>

任何评论都是当然的欢迎!

2 个答案:

答案 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。