我正在制作一个PHP网站,用于浏览我在本地网络上的电影收藏。它经历了几次迭代,现在我认为面向对象是正确的方式。在目前的状态下,我有几个函数从数据库中获取电影信息。因此,每当我需要电影信息时,我必须调用几个函数来获取所有信息,并将其传递给其他函数以完成我想要的操作。
我的面向对象版本的想法是在构造函数中完成所有这些“getinfo”函数。因此,我只需创建一个电影对象,即可使用$movieobj->title
等方式轻松获取所有信息。
我尝试了一下,并得出了以下测试结果:
class movie{
public $tite = Null;
function __construct($id, $conn){
//set title property
$sql_select = $conn->prepare("SELECT title FROM movie.title
WHERE `movieID` = {$id} LIMIT 1");
$sql_select->execute();
$sql_select->bind_result($val);
$sql_select->fetch();
$this->title = $val;
}
这样做可以实现我想要的效果,可以使用以下方式获取电影标题:
$movie = new movie(100,$db);
echo $movie->title;
但实际上,我在构造函数中可能还有几个类似的代码块来获取电影的其他信息。
这样使用构造函数是否不正确?它应该更简单,然后有其他方法从数据库中提取这些信息吗?拥有复杂的构造函数可以使其他代码更加简单,但这是不好的做法吗?或者会引起我没有看到的问题吗?