Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Call to a member function
-chronos-
post 5.07.2013, 10:03:41
Post #1





Goście







Witajcie,
mam taki kod:
  1. function load() {
  2. require 'go.php';
  3. $go = new Go();
  4. }
  5. echo load();
  6. echo $go->start();



  1. class Go {
  2. function __construct() {
  3. echo 'Witaj w klasie GO! <br/>';
  4. }
  5.  
  6. public function start() {
  7. echo 'Metoda start';
  8. }
  9. }


jednak to nie mogę wywołać funkcji start,
Fatal error: Call to a member function start() on a non-object - to ta linia: echo $go->start();

Proszę o pomoc.
Go to the top of the page
+Quote Post
redeemer
post 5.07.2013, 10:08:42
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


http://php.net/manual/pl/language.variables.scope.php


--------------------
Go to the top of the page
+Quote Post
-chronos-
post 5.07.2013, 13:42:56
Post #3





Goście







próbuje z tym global, ale nadal nic:
  1. public function load($name) {
  2. global $name;
  3. require $name.'.php';
  4. $name_load = ucfirst($name);
  5. ${$name} = new $name_load();
  6. }


$go->start();
Proszę o pomoc.
Go to the top of the page
+Quote Post
nospor
post 5.07.2013, 13:49:00
Post #4





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




facepalmxd.gif

Robisz global po $name, ktore na marginesie mowiac przekazujesz jako parametr funkcji, a odwolujesz sie do $go... niby jakim cudem ma ci dzialac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-chronos-
post 5.07.2013, 18:56:19
Post #5





Goście







Chciałbym uzyskać efekt jak we frameworkach czyli przekazuje do funkcji load nazwę klasy do załadowania a później mogę się do niej odwoływać po przez podaną nazwę w funkcji. dlatego później odwołuję się do $go - bo go to nazwa klasy.
Go to the top of the page
+Quote Post
gr56
post 5.07.2013, 20:35:06
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 15
Dołączył: 19.11.2011

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


W takim wypadku powinieneś zwrócić obiekt z funkcji za pomocą return.

PS: Teraz ładowanie klas robi się troche inaczej: http://php.net/manual/en/language.oop5.autoload.php
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:53