V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LukeXuan
V2EX  ›  问与答

有关一段 php 代码的疑惑

  •  
  •   LukeXuan · 2014-07-02 21:28:41 +08:00 · 2231 次点击
    这是一个创建于 3801 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前我一直在用其他人的模板架构,今天仔细看了一下 发现很多奇怪的地方,比如这里

    var_dump(method_exists('page', 'buildRevisions'));

    var_dump($page->buildRevisions());

    php返回的是

    bool(false)
    object(fRecordSet)#221 (5) { ["class:private"]=> string(8) "Revision" ["limit:private"]=> NULL ["page:private"]=> int(1) ["non_limited_count:private"]=> NULL ["records:private"]=> array(58) { [0]=> object(Revision)#217 (4) { ["cache:protected"]=> array(0) { } ["old_values:protected"]=> array(0) { } ["related_records:protected"]=> array(0) { } ["values:protected"]=> array(10) { ["id"]=> string(3) "229" ["page_id"]=> string(1) "1" ["title"]=> string(6) "首页" ["body"]=> string(7037) "

    谁能告诉我这个method是怎么出现的啊= =、在对Page这个类的定义里也没有出现过 但是在另外一个不具备继承关系的class Preview里面却出现了定义

    对Page类的定义在这里:
    https://github.com/iwg/phpwiki/blob/master/inc/phpwiki/Page.php

    我就是想提出对于getLatestRevision里$this->buildRevisions()是如何执行的疑惑 谢谢!
    2 条回复    2014-07-03 09:44:10 +08:00
    raincious
        1
    raincious  
       2014-07-02 21:47:09 +08:00
    用的是flourishlib么?代码没仔细研究,但fActiveRecord用了__call魔法方式,几乎能实现你想要Call的任何东西了,而且我知道的IDE里面是跟不到的。实现是这里:

    https://github.com/flourishlib/flourish-classes/blob/master/fActiveRecord.php#L192
    CoX
        2
    CoX  
       2014-07-03 09:44:10 +08:00
    var_dump(method_exists($page, 'buildRevisions'));
    第一个参数是object,不是string
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:41 · PVG 10:41 · LAX 18:41 · JFK 21:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.