1. 程式人生 > >PHP ActiveRecord demo栗子中 關於類名 的問題

PHP ActiveRecord demo栗子中 關於類名 的問題

lower stat 單個 extend for lec light 解析 mem

問題: ActiveRecord如何將單個類名與表名相關聯?
我昨天才發現了ActiveRecord,很奇妙的php數據庫框架。

但是,我仍然對以下工作感到困惑:
    

1.下面這個Person Model類 會自動將這個類指向到 people表

   

class Person extends ActiveRecord\Model {}

而我對類名和表名的聯系的理解是下面這個關系

例如 Post.php

class Post extends ActiveRecord\Model {}

  這個Post Model 類的 話 是自動解析 Post類 指向的是posts表

所以問題就來了 !!!

Answer: 到底作者用了什麽方法 把Person類 解析為了 people 表 而不是 persons表?

Question :

Your ActiveRecord\Model-derived class has a reference to an ActiveRecord\Table.

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 ActiveRecord\Model {
  static $table_name = ‘whatever_it_is‘;
}

  

Thank you!

 
 

PHP ActiveRecord demo栗子中 關於類名 的問題