Php 如何构建模型结构,如Laravel模型?
我试着创建一个类似“Laravel模型”的模型 我有一张mysql表。它的名字是“用户”。表中有3个用户 1-史蒂夫·罗杰斯 2-奥巴迪亚·斯坦 3-托尼·斯塔克 我做了一个模型,但没有工作。我的代码:Php 如何构建模型结构,如Laravel模型?,php,oop,Php,Oop,我试着创建一个类似“Laravel模型”的模型 我有一张mysql表。它的名字是“用户”。表中有3个用户 1-史蒂夫·罗杰斯 2-奥巴迪亚·斯坦 3-托尼·斯塔克 我做了一个模型,但没有工作。我的代码: abstract class Model { protected static $properties = array(); public static function find($id) { global $config; try
abstract class Model
{
protected static $properties = array();
public static function find($id)
{
global $config;
try {
$db = new PDO($config['dsn'], $config['user'], $config['password']);
} catch (PDOException $e) {
die ('Connect problem: <pre>' . $e->getMessage() . '</pre>');
}
$db->exec("SET NAMES 'utf8'; SET CHARSET 'utf8'");
$row = $db->query("SELECT * FROM ".static::$table." WHERE id='".$id."' LIMIT 1")->fetch();
if ($row)
{
foreach ($row as $key => $value)
{
if (is_numeric($key)) continue;
static::$properties[$key] = $value;
}
}
return $row ? new static : false;
}
public function __get($property)
{
return static::$properties[$property];
}
}
抽象类模型
{
受保护的静态$properties=array();
公共静态函数find($id)
{
全局$config;
试一试{
$db=新PDO($config['dsn'],$config['user'],$config['password']);
}捕获(PDO$e){
die('连接问题:'.$e->getMessage()');
class User extends Model
{
public static $table = 'users';
}
$k1 = User::find(1);
$k2 = User::find(2);
$k3 = User::find(3);
echo $k1->name." ".$k1->lastname."<br>".$k2->name." ".$k2->lastname."<br>".$k3->name." ".$k3->lastname;
}
$db->exec(“设置名称“utf8”;设置字符集“utf8”);
$row=$db->query(“SELECT*FROM”。static::$table。“WHERE id=”“$id.”“LIMIT 1”)->fetch();
如果($行)
{
foreach($key=>$value的行)
{
如果(是数字($key))继续;
静态::$properties[$key]=$value;
}
}
返回$row?新静态:false;
}
公共函数获取($property)
{
返回静态::$properties[$property];
}
}
我使用以下方法:
类用户扩展模型
{
公共静态$table='users';
}
$k1=用户::查找(1);
$k2=用户::查找(2);
$k3=用户::查找(3);
echo$k1->name.“$k1->lastname.”
“$k2->name.“$k2->lastname.”
“$k3->name.”。“$k3->lastname;
结果:
托尼·斯塔克托尼·斯塔克
托尼·斯塔克 我想要这个结果: 史蒂夫·罗杰斯
奥巴迪亚·斯坦
托尼·斯塔克
我的错误在哪里?无需重新发明轮子:您的错误是属性的
静态
。。。。。Laravel没有使用静态,而是使用Facade和使用foreach($row as$key=>$value)
,假设每个请求的$key
都不同,并匹配从数据库中检索的记录的主键感谢您的回答:)无需重新发明轮子:您的错误是属性的静态
。。。。。Laravel没有使用静态,而是使用Facade和foreach($key=>$value)的使用
,假设每个请求的$key
都不同,并且与从数据库检索的记录的主键匹配感谢您的回答:)