Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z klasą...
Turgon
post 14.02.2006, 19:34:19
Post #1





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Chciałem nieco sobie ułatwić zadanie i to wyszło.
  1. <?php
  2.  
  3. class loadclasses
  4. {
  5. function load($classname,$classpath,$objectname)
  6. {
  7. include ($classpath);
  8. $$objectname = new $classname;
  9. $wynik = ob_get_contents();
  10. return $wynik;
  11. }
  12. }
  13. ?>


I jak sprawdzam na takich plikach :

index.php :
  1. <?
  2. include ('ClassLoad.php');
  3.  
  4. $mod = new loadclasses;
  5. $mod->load('wyswietl','test.php','foo');
  6. $foo->wyswietlaj('lalalala');
  7.  
  8. ?>

i test.php
  1. <?
  2. class wyswietl
  3. {
  4. function wyswietlaj($tekst)
  5. {
  6. echo $tekst;
  7. }
  8. }
  9. ?>

[comment]Klasa głupawa ale do testu się nada.[/comment]

Błąd :
Cytat
Fatal error: Call to a member function wyswietlaj() on a non-object in C:\Documents and Settings\Administrator\Moje dokumenty\Xampp\xampplite\htdocs\testy\index.php on line 6


Dlaczego nie ładuje mi klasy ( to wnioskuje z błędu) ?


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post 14.02.2006, 19:51:25
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Dziwny ten kod.

  1. <?php
  2. $mod->load('wyswietl','test.php','foo');
  3. ?>

$foo bedzie dostepne TYLKO wewnatrz metody load(), a ona zwraca, cos tam zwraca (tekst wyslany do przegladarki podczas ladowania klasy).
wiec kolejne wywylanie
$foo->wyswielt()
nie zadziala


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
LBO
post 14.02.2006, 19:52:46
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


$$objectname widoczne jest tylko w metodzie load() klasy loadclasses.. poczytaj o zasiegu zmiennych
Go to the top of the page
+Quote Post
crash
post 14.02.2006, 19:57:28
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Może coś takiego Cię zadowoli:
  1. <?php
  2. class LoadClasses
  3. {
  4.  var $CLASS_DIR = './';
  5.  
  6.  var $loaded = array();
  7.  
  8.  function __construct() {}
  9.  
  10.  function loadClass( $className )
  11.  {
  12. if( !class_exists( $className ) and file_exists( $classFile = $this->CLASS_DIR . strtolower( $className ) . '.class.php' ) )
  13. {
  14.  include_once( $classFile );
  15.  
  16.  $this->loaded[ $className ] = new $className;
  17. }
  18.  }
  19.  
  20.  function getClass( $className )
  21.  {
  22. if( !array_key_exists( $className, $this->loaded ) )
  23. {
  24.  $this->loadClass( $className );
  25. }
  26.  
  27. return $this->loaded[ $className ];
  28.  }
  29. }
  30.  
  31. $ld = new LoadClasses;
  32.  
  33. $ld->getClass( 'Klasa' )->smth( 'Abc!' );
  34. ?>


klasa.class.php:
  1. <?php
  2. class Klasa
  3. {
  4.  function smth( $x )
  5.  {
  6. echo '<b>' . $x . '</b>';
  7.  }
  8. }
  9. ?>


--------------------
Go to the top of the page
+Quote Post
Turgon
post 14.02.2006, 20:11:07
Post #5





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Wszystko super i pięknie. Tylko miałbym jedną prośbe crash - php 4, a nie php 5. Serwery z których korzystam php 5 nie obsługują...


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
crash
post 14.02.2006, 20:28:17
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


No właśnie napisałem wersje pod PHP5, ale wklejając ją tutaj zmieniłem ją na PHP4, jedyna pozostałość to nazwa konstruktora, zmień ją i już.


--------------------
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: 28.06.2025 - 09:47