看板 PHP 關於我們 聯絡資訊
※ 引述《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