私はDataTableクラスを実装しようとしています。これは基本的にはSQLテーブルのようなデータを格納するテーブルで、の配列()保護された静的変数phpの値にアクセスできない
以下のようにクラスが定義されている:クラスの関数の外
class DataTable{
protected static $tabela; // table
//columns and strips, each column point to a strip
public function __construct($colunas, $faixas) {
$this->tabela = array();
$this->constroiDt($colunas, $faixas); //builds the table
}
public function getRows($where){
// todo
}
public static function getTabela(){
return $this->tabela;
}
private function constroiDt($colunas, $faixas){
if(count($colunas)!= count($faixas)){
$this->tabela = null;
return;
}
$i=0;
foreach($colunas as $cl){
$this->tabela = array_merge($this->tabela, array($cl => $faixas[$i]));
$i += $i + 1;
}
// the result will be an array like ('col1' => ('val1','val2'), 'col2' => ('val1','val2'))
// if I want to access a value, just type array['col1'][0] for example
}
}
、私は例DTを作成し、それをアクセスしようとすると、それが動作するようです:
$columns = array("name", "age");
$strips = array(array("someone","another person"),array("20","30"));
$dt1 = new DataTable($columns, $strips);
var_dump($dt1); // will print:
// object(DataTable)#1 (1) { ["tabela"]=> array(2) { ["nome"]=> array(2) { [0]=> string(6) "fulano" [1]=> string(7) "ciclano" } ["idade"]=> array(2) { [0]=> string(2) "20" [1]=> string(2) "30" } } }
しかし、その後、私はそれも印刷されない---をecho "--- " . $dt1::getTabela()['nome'][0];
を追加します。 var_dump($dt1::getTabela())
およびvar_dump($dt1->getTabela())
も空白です。ここでは何が見逃されていますか?またthisを試してみましたが、うまくいきませんでした。
ありがとう、私は静的に変更し、働いた – Fabiotk