2012-12-26 24 views
0

好了,所以我試圖從用戶那裏得到ID,如果我鍵入$getid = '1'一切工作函數和類讓其他數據

require_once "../maincore.php"; 

$getid = '1'; 
class UploadHandler 
{ 
    protected $options; 
    // ... 

    function __construct($options=null, $getid = '1') { 

     $this->options = array( 
      'script_url' => 'myfile/'.$getid.'/', 

    // ... 

如果鍵入像$getid = $userdata['user_id'] 或者我把東西變成像類和$myid = $userdata['user_id'];設置$getid = $myid 然後沒有任何作品。我現在一直在嘗試大量的工作和案例。 紅教程,什麼是私人聚會等

也試過私人$myid = $userdata['user_id'];和VAR $myid = $userdata['user_id'];

所以我只是想獲得的數據爲$userdata['user_id'],我不能設法得到它的工作。

+1

什麼是'$ userdata'?它不存在於你的代碼中... – knittl

+0

$ userdata的輸出是什麼,得到它的輸出寫入像var_dump($ userdata);並讓我們知道結果 –

回答

0

您必須將數據傳遞到類或者注入的數據(另一個主題):

當你構建你的類時,你會告訴這個類是什麼值。

//some place in your code 
$userdata = array(...some data from somewhere ...); 
//$options is optional but at the beginning of the args so the 'null' is required 
$class = new UploadHandler(null, $userdata['user_id']); 

它往往有助於把可選參數在你的函數參數的結尾:

class UploadHandler 
{ 
    protected $options; 
    // ... 

    // Required params first then optional params 
    function __construct($getid ,$options=null) { 

     $this->options = array( 
      'script_url' => 'myfile/'.$getid.'/', 

然後您構建類:

//some place in your code 
$userdata = array(...some data from somewhere ...); 
//$options is now optional and at the end so the default value will be 'null' 
$class = new UploadHandler($userdata['user_id']); 
0

它在我看來好像你試圖分配一個全局變量作爲方法參數的默認值...這不能完成。這有很多原因,但現在最重要的是,這與OOP的主要想法相矛盾:OOP的要點是,不需要多次編寫代碼,無論發生了什麼事情:

class My_DB_Object 
{ 
    private $_connection = null; 
    public function __construct($dbType = 'mysql', array $loginParams = array()) 
    { 
     switch(strtolower($dbType)) 
     { 
      case 'mysql': 
       return $this->constructMySQL($loginParams); 
      case 'pgsql': 
       return $this->constructPGSql($loginParams); 
      case 'mssql': 
       return $this->constructMSSQL($loginParams); 
      default: 
       throw new InvalidArgumentException($dbType.' is not supported, yet?'); 
     } 
    } 
    private function constructMySQL(array $loginParams) 
    { 
     //and so on... 
    } 
} 

這個對象可以在所有的項目中,可以使用無論DB你要使用什麼的,它可能有一個select方法定義,即用不同的方式來查詢各種數據庫的交易,沒有你不得不重寫相同的查詢的時間和時間...

不能保證你試圖分配的變量作爲默認值將被設置, l 的範圍爲:您可以在另一個對象的成員函數中創建一個新實例,該實例也可能位於完全不同的名稱空間中。

基本上:默認值是硬編碼的。
一個文件包含或者類定義或生成輸出的代碼,你的代碼片段似乎都可以。

您的代碼應該是這樣的:

require_once('UploadHandler.php');//or look into __autload() 
$uploadInstance = new UploadHandler(null, $userdata['user_id']); 

UploadHandler.php文件應該是這樣的:

<?php 
class UploadHandler 
{ 
    protected $options = null; 
    public function __construct (array $options = array(), $getid = '1') 
    {//assuming $options should be an array 
     $this->options = $options; 
     $this->options['script_url'] = 'myfile/'.$getid.'/'; 
    } 
} 
//no closing ?> tag!