zoukankan      html  css  js  c++  java
  • PHP ActiveRecord demo栗子中 关于类名 的问题

    问题: ActiveRecord如何将单个类名与表名相关联?
    我昨天才发现了ActiveRecord,很奇妙的php数据库框架。
    
    但是,我仍然对以下工作感到困惑:
        

    1.下面这个Person Model类 会自动将这个类指向到 people表

       

    class Person extends ActiveRecordModel {}

    而我对类名和表名的联系的理解是下面这个关系

    例如 Post.php

    class Post extends ActiveRecordModel {}
    

      这个Post Model 类的 话 是自动解析 Post类 指向的是posts表

    所以问题就来了 !!!

    Answer: 到底作者用了什么方法 把Person类 解析为了 people 表 而不是 persons表?

    Question :

    Your ActiveRecordModel-derived class has a reference to an ActiveRecordTable.

    When the Table gets initialized (once per model-class through some static function calls), it is told it's model's classname.

    Table::__construct($classname)
    

    calls

    Table::set_table_name()

    Through the model's class name it asks if that class has statically overridden the table name. If not, it uses the Inflector library with:

    Inflector::instance()->tableize
    

    which is really just

    StandardInflector::tableize($classname)
    

    which underscorifies the name (Inflector::underscorify()) 
    converts it to lower case (strtolower())
    then hands it off to

    Utils::pluralize()
    

      In the Utils library, you will find the pluralize and singularize implementations, which basically have some predefined plurals for the uncountable items (stuff that doesn't get pluralized like sheep and deer), some standard irregular forms (like child > children), and then some cool pluralization rules ($plural and $singular) that it runs through the regex parser.

    #person会自动解析转义为people
    #Utils.php
    
    private static $irregular = array(
            'move'   => 'moves',
            'foot'   => 'feet',
            'goose'  => 'geese',
            'sex'    => 'sexes',
            'child'  => 'children',
            'man'    => 'men',
            'tooth'  => 'teeth',
            'person' => 'people'
        );
    

      And remember you can override the defaults back in your model class with:

    class MyModelClass extends ActiveRecordModel {
      static $table_name = 'whatever_it_is';
    }
    

      

    Thank you!

     
     
  • 相关阅读:
    把我给另外一个朋友的炒股劝告发给你一遍,希望你可以得到帮助!
    Microsoft Office Document Imaging批量ocr 方法
    Advanced GET 9.1 修正汉化版(免注册、页面加载、保存都正常)
    波浪分析数据转换:大智慧、钱龙、胜龙可用Advanced GET ToGet 数据转换器V3.05特别版
    怎样精确计算股市主力的持仓量
    混沌理论
    地产联盟内部资料总目录
    C语言 · P1001(大数乘法)
    C语言 · 排列数
    C语言 · 逆序排列
  • 原文地址:https://www.cnblogs.com/foreversun/p/6831013.html
Copyright © 2011-2022 走看看