Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tablica w klasie
Forum PHP.pl > Forum > PHP
metalzone
Witam.

Mam taki kodzik (jest to cala klasa i taka zmienna statyczna) :

  1. <?php
  2. public static $toSearch = array (
  3.        array('module'        => 'categories',
  4.              'module_name' => 'Categories',
  5.              'route_name'    => '@product_category?id=:id&title=:title',
  6.              'route_param' => array(':id', ':title'),
  7.              'route_fields'=> array('id', 'name'),
  8.              'route_required_fields' => array( [b][color="#FF0000"]"name_".self::$culture[/color][/b] => 'name'),
  9.              'table'        => Category::TABLE,
  10.              'primary'     => 'id',  
  11.              'fields'        => array([b][color="#FF0000"]'name_'.self::$culture[/color][/b] => 'name'),
  12.              'extra_fiels' => array('foto')
  13.        )
  14.       )
  15. ?>


i jak proboje konkatenowac w tablicy zmienna to wywala : Parse error: syntax error, unexpected '.', expecting ')' in ....

NIe wiem o co chodzi...

wogolnie nie mozna zrobic np.
class test {
public $a = arrray($b);
}

wywala blad.

a jak zrobie tak w metodzie jest ok



wyglada na to ze wogole nie mozna konkatenowac
skowron-line
Na końcu brakuje średnika.
blooregard
Cytat
wogolnie nie mozna zrobic np.
class test {
public $a = arrray($b);
}


Aby coś takiego Ci zadziałało, musisz tablicę $b przesłać jako argument do konstruktora i tam przypisać ją składowej klasy:
  1. <?php
  2. ...
  3. public $a = array();
  4.  
  5. public function __construct ( $b ) {
  6.   $this->a = array($b);
  7. }
  8. ?>
osl
odpowiedz sobie na pytaniem, zwłaszcza w tym drugim przypadku:
  1. <?php
  2. class test {
  3. public $a = array($b);
  4. }
  5. ?>

skąd php ma wiedzieć co to jest $b? ta zmienna jest niezainicjowana nigdzie dlatego nie da rady w ten sposób.
podobnie w pierwszym - próbujesz zainicjować zmienną zależącą od innych zmiennych/stałych, które mogą nie być ustawione jeszcze...
metalzone
no dobra ale jak jest zmienna statyczna to nie powinno byc problemu

w kazdym badz razie pewnie trzeba zainicjowac w konstruktorze.
blooregard
Cytat
no dobra ale jak jest zmienna statyczna to nie powinno byc problemu

Składowe klasy inicjalizujesz w konstruktorze w momencie tworzenia obiektu lub w odpowiednich metodach już po utworzeniu go.
dr_bonzo
Inicjacja zmienyych klasy/obiektu w php jest mocno ograniczona.
Otocz ta publiczna tablice jakas metoda ktora przy pierwszym wywolaniu zbuduje ta tablice, a potem bedzie tylko jej uzywac.
metalzone
dzieki wszystkim za odpowiedzi. zrobie wedlug waszych wskazowek.

pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.