PHP ActiveRecord demo栗子中 关于类名 的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP ActiveRecord demo栗子中 关于类名 的问题相关的知识,希望对你有一定的参考价值。

问题: 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栗子中 关于类名 的问题的主要内容,如果未能解决你的问题,请参考以下文章

jdk开发WebServer小栗子

ActiveRecord & PHP:定义两个模型之间不同关联的最佳方式

PHP PHP - 轻量级数据库和行集类,ActiveRecord样式函数

SQL 基准测试:PHP ActiveRecord ORM 与 MySQL 与 CodeIgniter Active Record 与标准 PHP

session栗子

php实现监控在线服务应用程序小栗子