Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Blad przy zwracaniu $this
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Czesc pisze nowa klase do walidacji danych chce konfigurowac walidator w taki sposob:
  1. $validation -> add_rule('name', new str()->configure(array('field' => 'name', 'required' => true)));

Jednak dostaje blad:
Cytat
Parse error: syntax error, unexpected T_OBJECT_OPERATOR

Jednak w klasie str mam tak:
  1. public function __construct()
  2. {
  3. parent::__construct();
  4. return $this;
  5. }

Zwracam this wiec powinno dzialac czy moze robie cos zle?Bo troche zamotany juz jestem

Ten post edytował marcio 23.10.2011, 15:25:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To jest po prostu ułomność składni języka, jakich w PHP wiele - musisz użyć dodatkowej zmiennej.

PS. Konstruktor nie powinien niczego zwracać.

EDIT:
Mógłbyś to rozwiązać wykorzystując metodę statyczną, tworzącą i zwracającą obiekt: Str::newInstance(...)->doSth();, ale to bardziej ominięcie niż rozwiązanie problemu.

Ten post edytował Crozin 23.10.2011, 15:49:57
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W PHP nie można tak zrobić:
  1. new str()->configure()

Musisz użyć dodatkowej zmiennej.
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
EDIT:
Mógłbyś to rozwiązać wykorzystując metodę statyczną, tworzącą i zwracającą obiekt: Str::newInstance(...)->doSth();, ale to bardziej ominięcie niż rozwiązanie problemu.

Hmm ale to chyba nie jest zle podejscie? czyli cos takiego
  1. public static function get_istance()
  2. {
  3. return new str();
  4. }
Go to the top of the page
+Quote Post
adbacz
post
Post #5





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Imho jest to coś jak Singleton. Warto by zastosowac nową zmienną i przypisać do niej obiekt tego właśnie validatora. Jak pisał batman, nie można zrobić w ten sposób, ale można zrobić coś takiego:
  1. $new = new str();
  2. $validation -> add_rule('name', $new->configure(array('field' => 'name', 'required' => true)));


PS. Konstruktor nie moze zwracać żadnych danych, ale może na nich operować.

Ten post edytował adbacz 26.10.2011, 07:45:47
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@adbacz: Możesz rozwinąć dlaczego uważasz, że jest to coś jak singleton?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Bo singleton ma metode o nazwie getInstance i marcio napisał get_instance() (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


@adbacz takie rozwiazanie jest kijowe to juz wole do konstruktora podawac konfiguracje.

@crozin & @nospor to nie mial byc singleton tylko to samo co mamy w kohanie metoda klasa::factory() zeby mozna bylo wlasnie zrobic method chaining...
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
@crozin & @nospor to nie mial byc singleton tylko to samo co mamy w kohanie metoda klasa::factory() zeby mozna bylo wlasnie zrobic method chaining...
Ba. my to wiemy. My się odnosimy do wypowiedzi adbacza a nie Twoich (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:57