Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> __autoload()
bela
post 1.01.2005, 03:19:52
Post #1


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


hmm, ostatnio zaczelem pisac Odina od poczatku i myslalem o __autload
  1. <?php
  2. Odin::import('net.odin-framework.Exceptions');
  3. Odin::import('net.odin-framework.Logger');
  4. Odin::import('net.odin-framework.SessionHandler');
  5. Odin::import('net.odin-framework.ConfigParser');
  6.  
  7. function __autoload ($sClassName) {
  8. Odin::import($sClassName);
  9. }
  10. class Odin {
  11. public function __construct () {
  12. Logger::addNote('Start Odina');
  13. $abv = new net.odin-framework.HttpRequest();
  14. Logger::addNote('Koniec pracy');
  15. }
  16.  
  17. public static function import ($sPackage) {
  18. if (preg_match('/([a-zA-Z0-9_-]+.{0,1})+/', $sPackage, $aMatches)) {
  19. $aPackages = explode('.', $sPackage);
  20. $sFile = str_replace('.', '/', $sPackage);
  21. $sFile = $sFile . '.php';
  22. if(file_exists($sFile)) {
  23. require_once($sFile);
  24. } else {
  25. throw new NoSuchFileException($sFile);
  26. }
  27. }
  28. }
  29. private function runAction ($sActionName) {
  30. try {
  31. } catch (FallBack $f) {
  32.  
  33. }
  34. }
  35. }
  36.  
  37. ?>


i probowalem wywolywać klasy przez $abc = new net.odin-framework.Abc, ale wywala blad
Kod
Fatal error:  Function __autoload(net) threw an exception of type 'NoSuchFileException' in c:\gry\miniserver\uniserver3_1\diskw\www\nOdin\net\odin-framework\Odin.php on line 15


czyli php nawet nie idzisz po sciezce dry.gif tylko uzywa samego net, moze ktos bawil sie w cos takiego samego biggrin.gif


--------------------
Go to the top of the page
+Quote Post
Imperior
post 1.01.2005, 11:33:10
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.10.2004

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


Ja mam coś podobnego...
Tylko, że zamiat '.' używam '_'. Jest to spowodowane tym, że w nazwie klasy nie może być kropki! Jeśli zapodasz __autoload('net.odin-framework.Abc'); to zadziała, ale gdy zadasz:
  1. <?php
  2. $abc = new net.odin-framework.Abc;
  3. ?>

(W domyśle chodziło mi o to, żeby BBCode pokolorował '.' jako operator)

Przykład mojego nazewnictwa:
klasa: Noname_SQL_Service
plik: packages/noname/sql/noname_sql_service.php

Dzięki temu znając nazwe pliku wiem co w nim jest, znając nazwe klasy znam nazwę pliku, czyli znam zarazem położenie w systemie plików.

Pliki mają pełną nazwę też dlatego, że łatwiej jest mi edytować wiele plików, gdyż inaczej miałbym kilka service.php, a to troszkę utrudnia...

--edit--
Zapomniałem o jednym...
Skrypt instalatora, którego jeszcze nie mam tongue.gif, tworzy pakiet bez białych znaków, komentarzy itp. plik (wedle w/w przykładu) packages/noname/sql/noname_sql_package.php
A importuje się go tak samo przez 'Noname_SQL_Package'.

Ten post edytował Imperior 1.01.2005, 11:39:19


--------------------
Com powiedział, powiedziałem.
Go to the top of the page
+Quote Post
bela
post 1.01.2005, 15:31:37
Post #3


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


ja poprostu widzialem jak ktoś (e-Gandalf chyba) chciał zrobić coś takiego i wlasnie to mnie nurtuje biggrin.gif


--------------------
Go to the top of the page
+Quote Post
Vengeance
post 1.01.2005, 15:38:51
Post #4





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


chciał nie oznacza zrobił winksmiley.jpg

jak dla mnie problem twki w wykorzystaniu niedozwolonych znaków w nazwach klasy. w tym przypadku kropki i minusa.

a-z A-Z 0-9 _ te sa bodajrze dozwolone smile.gif


--------------------
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: 21.06.2025 - 15:37