Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wywoływanie class za pomoca ::
Forum PHP.pl > Forum > PHP
AcidBurnt
Witam

wiec sprawa taka jestem troszke zielony jeszcze w programowaniu obiektowym, tzn w sumie juz wiem sporo, ale jeszcze mało ;p

dobra sprawa jest taka mam dosc sporo klase do zarzadzania produktami

i wielu miejscach na stronie potrzebuje wybrac tylko 1 produkt i go wysiwtlic wiec stworzyłem sobie metode getOne($id)

no ale zała klasa w tym przypadku nie jest mi potrzebna w wiekszej czesci strony potrzebuje tylko tej jednej metody

dogrzebałem się gdzies aby wyolac to w ten sposob:

  1. <?php
  2.  
  3. pro::getOne($id)
  4.  
  5. ?>


tylko mam tutaj problema

Cytat
Fatal error: Using $this when not in object context in /home/sztucer/public_html/test/lib/pro/pro.class.php on line 19


no własnie problem z $this

tutaj konkretnie z $this -> db

jest to połaczenie z baza przekazywane do konstruktora:

  1. <?php
  2.  
  3. class pro{
  4. var $db;
  5. function __construct($db){
  6. $this -> db = $db
  7. }
  8. }
  9.  
  10. // w $db połączenie z ADODB
  11. $pro = new pro($db)
  12.  
  13. ?>


moze mi ktoś powiedziec jak to objesc ;> oczywiscie przy zalozeniu ze funkcionowanie calosci nie zmieni sie w kilku miejsach ptorzebuje wywolac metode getOne wewnatrz pozostałych metod obiektu:)

mam nadzieje ze w miare jestno opisałem problem smile.gif

pozdr
Fipaj
W metodach statycznych nie możesz odwoływać się do pseudozmiennej $this -> poczytaj o self::$zmienna. Ale i tak self::$zmienna odniesie się tylko do zmiennych statycznych... smile.gif

Obejść jest wiele. Najlepiej wydziel z klasy metody do łączenia z bazą i podaj je do metody statycznej przez argument ;-)
hugo_amv
Nie ma różnicy czy odwołasz się do metody statycznej, bez tworzenia obiektu danej klasy przez:
  1. <?php
  2.  
  3. pro::getOne($id)
  4.  
  5. ?>


Czy utworzysz obiekt i wowołasz jego metode
  1. <?php
  2. $obj = new pro();
  3. $obj->getOne($id)
  4. ?>

I tak kod całej klasy zostanie załadowany. Właściwie nie wiem co chcesz zyskać? Jeżeli już chcesz się korzystać z metod statycznych to muszą one korzystać ze zmiennych statycznych. Odwoływać się do nich musisz przez self::$zmienna a nie $this->$zmienna.
AcidBurnt
hugo_amv no włąsnie szukam rozwiazania jak nie ładowac całej kalsy winksmiley.jpg
mariuszn3
Cytat(AcidBurnt @ 2006-04-14 14:09:57)
hugo_amv no włąsnie szukam rozwiazania jak nie ładowac całej kalsy winksmiley.jpg

yy.. to tak jakbyś chciał załadować pół funkcji.. albo wywołać pół komendy..
Czy jesteś pewien, że wiesz o czym piszesz?
Nie możesz includować połowy pliku w php smile.gif
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.