作者HuangJC (吹笛牧童)
看板PHP
标题Re: [请益] 请问搜寻技巧,phpbb 3.0,user()
时间Thu Jul 17 02:56:39 2008
※ 引述《HuangJC (吹笛牧童)》之铭言:
: 初到贵宝地
: ;;
: PHP 是直译语言
: 和 C++ 编译语言不同
: 不能利用 compiler 工具找到函式定义让我蛮辛苦的
: (当然,它有它的强项)
: 今天的问题是,当我不懂某个指令时,我该怎麽去找到它的说明
: 出自 PhpBB 3.0 版
: $user = new user();
: 这一句,一开始我猜 user() 是内建指令
: 查了 PHP Manual 查不到
: 再来以为是 user defined class
: 用跨档搜寻也找不到 user() 关键字
: 那麽 user() 是怎麽可以用的呢?
: 以上,谢谢
我自己重回这个问题好了,现在我有不同的作法
http://localhost 尝试起的话,一般是 index.php
打开程式,用二分搜寻法去找
echo isset($user);exit;
就这样,如果某行已经定义了,就往前找
夹挤到正好定义那行,可能是呼叫别的函式,或者 require 别的档案
搜寻,开档,继续夹挤
为什麽会学到这种技巧? ~^_^~
因为 php 太强了,支援动态产生许多东西
有些 name 根本不存在於 code 内,永远都无法搜寻到
甚至有 __call 这种万用转向马上生函式的大绝.. *_*
因为我找 $this->User->findbyemail 函式,找三天了 *_* (CakePHP 语法..)
所以我深刻的知道..
全域搜寻 findbyeamil,永远找不到
printr($this->User);
这是我另一个希望,以为 findbyeamil 是一个变数,里面存的是一个函式指标
如果我可以 dump 它出来,我就可以知道它去 call 谁
结果也没有..
good die no die,我学到了这个,人生变成彩色 :)
xdebug_start_trace()
xdebug_stop_trace()
也就是 XDebug 系列 (果然 XD)
只夹挤一行 findbyemail,竟然给我生一大串 log
这才硬生生看到 __call 这个大绝怪兽!!
看完後的感想是
幸好我已经交了作业,自己拼装出 mysql 语法
不然我想移植这套给 phpbb2,只怕是小题大作了....
前情提要:我要合并两个独立的 PHP 程式,一个是抓来的 phpbb2
两个程式间如果有全域变数当然方便啦,可惜没有
也因为见不到对方,没有对方的物件及函式,所以无法使用对方的函式
唯一能乾净见到的就是双方的 database
所以不如直接取 database 出来改
而我语法不熟,就肖想去搬对方的内部 code 来用...
比如,我也要抓 cake 那边的使用者帐号
所以乾脆去搬它的 findbyemail 过来.....
如果我这麽做,怕再两个月也还写不出来吧 :P
(三点,今天进度不错 XD)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.219.65.16