Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何构建模型结构,如Laravel模型?_Php_Oop - Fatal编程技术网

Php 如何构建模型结构,如Laravel模型?

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

我试着创建一个类似“Laravel模型”的模型

我有一张mysql表。它的名字是“用户”。表中有3个用户

1-史蒂夫·罗杰斯 2-奥巴迪亚·斯坦 3-托尼·斯塔克

我做了一个模型,但没有工作。我的代码:

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
都不同,并且与从数据库检索的记录的主键匹配感谢您的回答:)