美文网首页
PHP操作数据库——ORM

PHP操作数据库——ORM

作者: CommandM | 来源:发表于2016-10-21 15:35 被阅读210次

    对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

    实现声明下这ORM不是用来弥补不会SQL的技能缺失的。SQL是一项简单基本且必须不可或缺的后端知识。

    举点ORM的缺点:

    1. 无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。
    2. 对象的查询语言(X-QL)作为一种数据库与对象之间的过渡,虽然隐藏了数据层面的业务抽象,但并不能完全的屏蔽掉数据库层的设计,并且无疑将增加学习成本.
    3. 复杂查询,ORM仍然力不从心。虽然可以实现,但是不值的。

    几乎所有大的框架都有带ORM功能,例如laravel。

    我这里举栗子的叫doctrine想必很多大佬都知道的吧……它在packagist.org也就是composer上提交了很多库……相当好评!

    ……然后就变成了doctrine的介绍了……

    Doctrine是基于数据库抽像层上的ORM,它可以通过PHP对象轻松访问所有的数据库,例如Mysql。

    我们这样下载:在项目里 composer require doctrine/orm

    <?php
    // bootstrap.php
    use Doctrine\ORM\Tools\Setup;
    use Doctrine\ORM\EntityManager;
    require_once "vendor/autoload.php";
    
    // 创建一个默认的Docrine ORM配置 
    $isDevMode = true;
    $config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);
    // 如果你喜欢yaml或XML(yaml要添加symfony/yaml)
    //$config = Setup::createXMLMetadataConfiguration(array(__DIR__."/config/xml"), $isDevMode);
    //$config = Setup::createYAMLMetadataConfiguration(array(__DIR__."/config/yaml"), $isDevMode);
    
    // 数据库配置参数
    $conn = array( 
        //'driver' => 'pdo_sqlite', 
        //'path' => __DIR__ . '/db.sqlite',
        'driver' => 'pdo_mysql', 
        'user' => 'root', 
        'password' => '', 
        'dbname' => 'foo',
    );
    // 获取实体管理器
    $entityManager = EntityManager::create($conn, $config);
    
    <?php
    // src/Product.php
    class Product{
        /** * @var int */ 
        protected $id; 
        /** * @var string */ 
        protected $name;
        public function getId() { 
            return $this->id; 
        } 
        public function getName() { 
            return $this->name; 
        } 
        public function setName($name) { 
            $this->name = $name; 
        }
    }
    

    相关文章

      网友评论

          本文标题:PHP操作数据库——ORM

          本文链接:https://www.haomeiwen.com/subject/rldwettx.html