2013-09-21 24 views
1

我被卡住了这部分代码..我试图调用我的静态表变量,但我不能。PHP类 - 调用数组变量

方法我有一个非常简单的问题,但是..对我的项目有效和有害。

我的类:

<?php 

public $table; 

class Functions 
{ 
    public function ehe() 
    { 
     return $table[4]; 
    } 
} 

?> 

我system.php文件:

$fn = new Functions(); 

    /* static tables */ 
    $table = array(
        0 => 'account.account', 
        1 => 'player.player', 
        2 => 'auction_house.items', 
        3 => 'auction_house.admin', 
        4 => 'auction_house.store', 
        5 => 'auction_house.styles', 
        6 => 'auction_house.logs', 
        7 => 'auction_house.coupons', 
        ); 

我的索引文件(例如):(用system.php连接&班)

echo $fn->ehe; 

我的错误:

Notice: Undefined property: Functions::$ehe in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\.......php on line 178 

第二个问题: 另外我有2个班。 1:函数类。 (包含查询处理等) 2:MySQL连接类。 我想连接这两个类的查询。这怎么可能? ..

+1

那么$表超出范围在外置热交换器()方法 –

+0

'$ table'超出范围,马克说。你也在这里获得一个属性'echo $ fn-> ehe',这是该类中的一个变量。你必须调用'echo $ fn-> ehe()'来访问一个方法。方法和函数**总是**必须用括号调用,即使它们没有接收参数(好吧,不是“总是”......有例外,比如'echo',提到一个)。 –

回答

0

有几个问题与您的代码:

  • 您正在访问ehe就好像它是一个属性,而不是方法。方法调用始终有(),如果需要,它们包含参数。
  • 您无法修改全局范围内变量的可见性 - 您的public $table;将导致语法错误。
  • $table超出了您的ehe()方法的范围。

你可能使用global关键字:

$table; 

class Functions { 
    public function ehe() { 
     global $table; 
     return $table[4]; 
    } 
} 

$fn = new Functions(); 

/* static tables */ 
$table = array(
      0 => 'account.account', 
      1 => 'player.player', 
      2 => 'auction_house.items', 
      3 => 'auction_house.admin', 
      4 => 'auction_house.store', 
      5 => 'auction_house.styles', 
      6 => 'auction_house.logs', 
      7 => 'auction_house.coupons', 
     ); 

echo $fn->ehe(); // auction_house.store 
+0

是的就是这样。 但是我使用system.php这个表变量,system.php是另一个函数的静态文件(没有类)。 所以在这里,我试图为这两个变量使用这个变量。 函数类和其他函数.. 我希望你能理解我。 –

+0

看我的编辑 - “使用'全球'关键字” –

+0

全球关键字正在工作! 解决,谢谢。 –

1

您需要调用它,它是一个函数,而不是一个属性。

echo $fn->ehe(); 
+1

我做到了,我再次遇到问题 **注意:未定义的变量:C:\ Program Files文件(x86)\ EasyPHP-DevServer-13.1VC9 \ ...中的表178 **线 –