php orm是什么意思,PHP-ORM的算法是什么?

好吧,让我们即时制作一些ORM框架.当您标记php标签时,让我们用PHP对其进行编码.

但是在我们写它之前,我们必须知道一些基本概念或一些基本术语

关于orm相关主题.在此示例中,我们将具有:

> ORM框架-ORM框架负责处理服务器连接和服务器连接抽象. (完整的orm框架还支持自动的类到表的映射).

>数据层-这部分负责将类映射到表.

例如,数据访问层知道如何将特定的类对象保存到实际表中,以及如何将特定的表加载到特定的类对象中. (注意:几乎所有最新的ORM框架都可以避免您进入该层.例如http://dbphp.net或Doctrine将支持该层的各个方面以及关系,甚至自动生成表).

>业务层-该层包含您实际的工作类,业务层通常代表模型或模型包含业务层

让我们从业务层或模型开始我们的示例.我们非常简单的项目可以保存和加载用户,它将具有一类业务层:

class user

{

public $id;

public $name

public function __construct ($name=null)

{

$this->name = $name;

}

}

?>

如您所见,您的业务层或模型不知道在何处以及如何保存或加载它.它只处理与项目相关的业务.这就是图层名称的来源.

其次,让我们建立一个简单的ORM框架:

//The connection link which can be changed any time

class link

{

public $link;

public function __construct ($hostname, $database, $username, $password)

{

$this->link = new \PDO ('mysql:host='.$hostname.';dbname='.$database, $username, $password);

$this->link->query('use '.$database);

}

public function fetch ($query)

{

$result = $this->link->query($query)->fetch();

}

public function query ($query)

{

return $this->link->query($query);

}

public function error ()

{

return $this->link->errorInfo();

}

}

//A structure which collects all link(s) and table/class handlers togather

class database

{

public $link;

public $tables = array ();

public function __construct ($link)

{

$this->link = $link;

table::$database = $this;

}

}

//A basic table handler class

//In recent ORM frameworks they do all the default mappings

class table

{

public static $database;

}

?>

如您所见,ORM框架中的表类似乎非常差.但是如果这个框架是一个

一个复杂的框架,它将同时支持数据层,并具有所有功能以与任何表一起使用.

但是,因为您需要了解在这种情况下ORM框架的工作方式,所以我们将制作数据层

我们业务层中每个类的处理程序.

这就是您的数据层.它是如此自我描述,我认为它没有

需要任何文件:

class users extends table

{

public function create ($row)

{

$return = new user ();

$return->id = $row[0];

$return->name = $row[1];

var_export($row);

return $return;

}

public function load ($id=null)

{

if ($id==null)

{

$result = self::$database->link->fetch("select * from users");

if ($result)

{

$return = array();

foreach ($result as $row)

{

$return[$row[0]] = $this->create($row);

}

return $return;

}

}

else

{

$result = self::$database->link->fetch("select * from users where id='".$id."'");

if ($result)

{

return $this->create(reset($result));

}

else

{

echo ("no result");

}

}

}

public function save ($user)

{

if (is_array($save))

{

foreach ($save as $item) $this->save ($item);

}

if ($user->id==null)

{

return self::$database->link->query("insert into users set

name='".$user->name."'");

}

else

{

return self::$database->link->query("update users set name='".$user->name."'

where id='".$user->id."'");

}

}

public function delete ($user)

{

self::$database->link->query ("delete from users where id='".$user->id."'");

}

}

?>

>最后让我们初始化$database对象

>建立一些到某些SQL Server的链接.

>将用户类处理程序添加到数据库.

>使用它.

它在工作中:

$database = new database (new link('127.0.0.1', 'system_db', 'root', '1234'));

$database->tables['users'] = new users();

if (!$database->tables['users']->save (new user('Admin')))

{

var_export($database->link->error());

}

var_export($database->tables['users']->load(2));

?>

如果您需要深入了解php ORM的其他概念,请随时访问

>教义-http://www.doctrine-project.org/-功能齐全的复杂PHP ORM框架

> db.php-http://dbphp.net/-功能齐全,但非常简单的PHP ORM框架.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值