抱歉由于缺乏有关此问题的信息,我只需要对某些代码提出一些建议。我认为只有程序员可以回答这个问题,因为我的代码是独一无二的,我找不到任何能帮助我的答案。
的index.php
<?php
include ( 'Blue/BlueDatabase.php' );
include ( 'Blue/BlueUsers.php' );
use Blue\BlueDatabase;
use Blue\BlueLoader;
$database = new BlueDatabase();
$database->Connect('localhost', 'root', '', 'database');
?>
现在我有了我的&#34; BlueLoader&#34; class和我在类中都有这个代码
$database = new BlueDatabase();
$database->Connect('localhost', 'root', '', 'database');
我想知道的是。是否值得将代码添加到每个类?它让它看起来不整洁,我认为会有更稳定的方式。我曾经做过之前需要做连接功能吗?是否需要为每个班级完成?我不熟悉php,也不确定某些事情。这个脚本稳定吗? /安全
任何建议或答案都会有所帮助
只是因为你需要我的连接功能(所有我的mysql命令都在像
这样的数组中//Example:
$commands['mysql_query'] = mysql_query;
final public function connect($sHost, $sUser, $sPass, $sName, $sPort = false, $sType = 'mysql_connect')
{
if(!$this->connected)
{
if ($sPort)
{
$sHost = $sHost . ':' . $sPort;
}
$this->connection = $this->_aCmd[$sType]($sHost, $sUser, $sPass);
if($this->connection)
{
$mydatabase = $this->_aCmd['mysql_select_db']($sName, $this->connection);
if($mydatabase)
{
$this->connected = true;
}
else
{
die('could not connect to database');
}
}
else
{
die('could not connect to host');
}
}
}
答案 0 :(得分:2)
建议:
Stop using the deprecated ext/mysql extension。不要试图将其包装在OO框架中。
使用PDO,因为它已经具有良好的OO使用率,并且具有ext / mysql没有的其他一些功能。 Mysqli是亚军,但我发现PDO更容易使用。
不要在每个使用数据库的类中打开新连接。创建一个连接并将连接对象传递给每个这样的类,可能作为构造函数参数。
另一种方法是使用Registry class来存储&#34;全球&#34;像数据库连接这样的对象。
答案 1 :(得分:0)
全球很棒!它们非常适合表明您采用次优方法,并且需要退后一步并重新评估。
以下是一些解决问题的方法。
$dbh = new DatabaseObject($connection_info);
$foo = new Object1($dbh);
$bar = new Object2();
$bar->GiveDbh($dbh);
$baz = new RegistryObject();
$baz->register('dbh', $dbh);
$bom = new Object3($baz);
我还包括一个Singleton方法,但每次我都会对我大喊大叫。 :/
此外,您可能应该重新启动数据库类以停止使用mysql_*
函数。 Yadda yadda PDO MySQLi,你知道这个演习。