php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2057字,纯文字阅读大概需要3分钟。
内容图文
![php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法](/upload/InfoBanner/zyjiaocheng/904/bdd9b263b4ec4362aa2f6d64056f5119.jpg)
我正在开发一个PHP Web应用程序,用户可以创建到目的地的旅行,并邀请其他用户参加这些旅行.
我有针对Destinations,Trips和Users的MySql表,以及一个名为Invites的表来解决Users和Trips之间的多对多关系.
对于这些表中的每一个,我在我的应用程序中创建了一个类(因此Destinations是一个类,Trips是一个类,等等).我为这些类中的每一个编写了一个静态函数,它允许实例化对象并从MySQL查询中分配它们的属性(因此从SELECT *查询返回的每一行都会导致实例化对象并分配属性).
我正在尝试创建一个页面,用户可以在其中查看他们计划的所有行程的详细信息.此页面将显示目的地(来自目的地),旅行详细信息(例如来自Trips的日期)以及他们邀请的用户的详细信息(例如来自用户的用户名),并将所有这些数据放在html表中,其中每次旅行都是行.
为了实现这一点,到目前为止,我一直在实例化与用户的user_id相关的Trips,与这些Trips相关的Destinations和Invites,以及与这些Invites相关的用户.然后我使用嵌套的foreach循环来显示这些,如下所示:
foreach($trips as $trip) {
foreach($invites as $invite) {
foreach($invited_users as $invited_user) {
if($invite->trip_id == $trip->id && $invite->guest_id == $invited_user->id) {
echo $invited_user->name;
} } } }
我能看到的是可怕的,没有办法做到这一点.
从阅读,我想我想使用MySQL加入4个表,然后只选择与我的相关旅行相关的数据.但我不确定的是:
a)如何从MySQL结果中实例化对象并正确分配其属性?
b)即使完成了这项工作,如何避免昂贵的foreach循环在正确的行程中显示正确的数据?
是否存在以面向对象的方式显示来自多个相关数据库表的数据的“最佳实践”方法?
解决方法:
我认为你使事情变得复杂,你不需要一次加载所有数据.
为什么要迭代所有行程,而您需要显示一个用户的行程?
使用OOP的一种天真但简单的方法:一个User类,它具有检索用户相关行程的方法.
它可以返回一个Trip数组,自己引用受邀用户:
class User {
private $id;
public function __construct($id) {
$this->id = $id;
}
public function getTrips() {
$trips = array();
// Run your query using $this->id to build the WHERE clause
return $trips;
}
}
class Trip {
// Array of User objects invited to the trip
private $invited = array();
// Other methods here to add/retrieve invited users
}
$user = new User(1);
foreach ($user->getTrips() as $trip) {
// Do something with $trip
}
理想情况下,用户实例将存储在会话中
内容总结
以上是互联网集市为您收集整理的php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法全部内容,希望文章能够帮你解决php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。