現象:調動方法,在return之前有輸出值,但是在調用方法中就沒有相應的返回值
解決辦法:折騰了好久,原來在構造方法中已經傳遞了需要的變量,在方法中再次傳遞變量,在構造方法中有輸出值,但是在方法中因為參數傳遞錯誤無法正常得到返回值。代碼如下
public function __construct ( $usrid, $firmid=0, $depart=0 ) { $usrid = abs(intval($usrid)); parent::__construct($usrid); $firmid = abs(intval($firmid)); $depart = abs(intval($depart)); if ( empty($firmid) ) $firmid = FirmStaff::club($usrid); if ( empty($depart) ) $depart = FirmStaff::work4firm($usrid, $firmid); $this->_usrid = $usrid; }
public function joinurl ($userid) { if ( empty($userid) ) throw new Exception('查詢的主鍵信息不能為空'); $clubid = FirmStaff::club($userid); if ( !isset($clubid) || empty($clubid) ) throw new Exception( '該用戶沒有公司,請聯系公司的HR' ); debug_print_backtrace();die(); $firmobj = new CMFirm($clubid); $nmroad = $firmobj->challengemap(null,false,true); $roadlinks = UtilRoad::roadmaplinks(); return isset($roadlinks[$nmroad]) ? $roadlinks[$nmroad] : '/acteam/index'; }
反思:這種寫代碼方式是需要避免的,在構造方法中已經實例化的參數不要在在方法參數中添加,這樣做會是問題復雜化。