Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pierwsza aplikacja obiektowa
sQQuil
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 27.02.2011

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


Witajcie,

poznałem już lekko php i przymierzam się do napisania pierwszej aplikacji przynajmniej częściowo obiektowo. Drodzy koledzy koleżanki nie daje mi jednak spokoju jedna kwestia. Mianowicie struktura katalogów. Przeczytałem już kilka poradników ale w żadnym z nich nie znalazłem odpowiedzi na następujące pytanie :


Moja struktura wygląda następująco

ROOT
..............Config
..............Class
..............Files
..............Cache
..............Tmp

i teraz w katalogu config tworzę skrypt z danymi dostępu do bazy o nazwie db_access.php a tam

  1. <?php
  2.  
  3. $dbhost = 'host';
  4. $dbuser = 'user';
  5. $dbpass = 'pass';
  6. $dbname = 'name';
  7.  
  8. ?>


następnie jest plik base_config.php (w tym samym katalogu) gdzie są wszelkie definicje w tym definicje katalogów.

Moje pytanie brzmi czy jak należy includować plik do pliku tak aby w samej aplikacji nie trzeba było dodawać 10 requariów tylko powiedzmy jeden 2 a reszta była by zawarta we sobie np.

db_access.php -> klasy z połączeniem z bazą
base_config.php -> (IMG:style_emoticons/default/questionmark.gif) ?

i tak dalej.

Nie chce powielać złych wzorców ani uczyć się robić tego niechlujnie dlatego moja prośba o pomoc doświadczonych kolegów (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lord2105
post
Post #2





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


Krótki przykład:

Plik głowny aplikacji:
  1. function __autoload($class_name)
  2. {
  3. require_once 'lib/Application.class.php';
  4. Application::load($class_name);
  5. }


Klasa aplikacji:
  1. public static function load($class_name)
  2. {
  3. self::generateClassMap();
  4.  
  5. if (!isset(self::$map[$class_name]))
  6. {
  7. throw new Exception('Unknown class ' . $class_name);
  8. }
  9.  
  10. require_once self::$map[$class_name];
  11. }
  12.  
  13. public static function generateClassMap()
  14. {
  15. self::$map = array();
  16.  
  17. self::scan('lib/');
  18. }
  19.  
  20. public static function scan($dir)
  21. {
  22. $match = array();
  23.  
  24. $rd = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), true);
  25. foreach ($rd as $file)
  26. {
  27. if(!is_file($file->getPathname())) continue;
  28.  
  29. if (preg_match('/([a-z0-9_]+).(class|interface).php$/i', $file->getPathName(), $match))
  30. {
  31. self::$map[$match[1]] = $file->getPathName();
  32. }
  33. }
  34. }


Jak widać bez includowania plików manualnie - dodajemy plik do katalogu lib/, który musi mieć nazwę w postaci: Logger.class.php lub interfejs w postaci: Module.interface.php - ponadto wykorzystanie RecursiveDirectoryIterator umożliwia nam tworzenie drzewa katalogów w lib/ tak jak nam się to żywnie podoba (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 05:44