Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton i dziedziczenie
relaxant
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 9.08.2004
Skąd: Bielsko-Biała

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


Witam,
Wiekszość ludzi piszacych tutaj rozumie chyba jak działa Singleton. Do dzis myslalem ze tez to rozumiem. Czy moze mi ktos wytlumaczyc dlaczego ten kod nizej działa?

Mam kod index.php
  1. <?php
  2. require_once('lib/core/DB.class.php');
  3. $kk = new DB();
  4. $kk->AA();
  5. ?>


DB.class.php:
  1. <?php
  2. class DB extends mysqli{
  3. private static $instance;
  4.  
  5. private function __construct($hostname=DB_HOST, $username=DB_USER, $password=DB_PASSWORD, $database=DB_DATABASE){
  6. $hostname = ($hostname=="")?DB_HOST:$hostname;
  7. $username = ($username=="")?DB_USER:$username;
  8. $password = ($password=="")?DB_PASSWORD:$password;
  9. $database = ($database=="")?DB_DATABASE:$database;
  10.  
  11. //parent::__construct($hostname, $username, $password, $database);
  12. }
  13.  
  14. public static function getInstance() {
  15. if (!isset(self::$instance)) {
  16. self::$instance = new DB();
  17. } 
  18. return self::$instance;
  19. }
  20.  
  21. public function __clone() {
  22. trigger_error('Clone is not allowed.', E_USER_ERROR);
  23. }
  24.  
  25. public function __destruct() {
  26. print "DESTRUCT DB <br>";
  27. }
  28.  
  29. public function AA() {
  30. print "text";
  31. }
  32. }
  33. ?>


I to działa!! Pomimo tego ze konstuktor DB jest prywatny!! Jezeli nie dziedzicze po mysqli wyskakuje blad (reakcja prawidlowa).

testuje na php Version 5.1.2-1
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Ale skoro konstruktor zawsze jest publiczny to o kant stołu dyrektywy public, protected i private. Równie dobrze moglibysmy pozostać jedynie przy oznaczaniu metod prywatnych za pomoca pojedynczego podkreslenia. W koncu chodzi tak naprawde jedynie o poinformowanie programisty o tym z czym ma do czynienia, a co on juz z tym zrobi to już jego sprawa. Szczerze mowiąc w jezykach skryptowych wyzej wspomniane oznaczenia zawsze maja tylko charakter informacyjny bo deklaracje zawsze mozna zmienic, chyba ze mamy do czynienia ze zdalnie wykonywanym kodem, ale to juz inna bajka.
Go to the top of the page
+Quote Post

Posty w temacie
- relaxant   Singleton i dziedziczenie   3.07.2006, 12:13:44
- - mariuszn3   Pierwsza sprawa, to pewnie nie dopatrzenie php. Po...   3.07.2006, 12:47:11
- - relaxant   Tez tak myslalem ze pewnie jest wykonywany publicz...   3.07.2006, 13:05:35
- - mariuszn3   A dlaczego miałbyś nie mieć dostępu do AA? To, że ...   3.07.2006, 13:08:37
- - Cysiaczek   Jeśli posiadasz wersję php 5.1.x, to cho...   3.07.2006, 13:12:18
|- - mariuszn3   Cytat(Cysiaczek @ 3.07.2006, 12:12 ) Jeśl...   3.07.2006, 13:56:18
- - relaxant   to chcesz powiedzić, że te wszystkie implementacje...   3.07.2006, 13:16:28
- - Cysiaczek   Ideą singletona jest to, że w zakresie całej aplik...   3.07.2006, 13:25:19
- - bigZbig   Ale skoro konstruktor zawsze jest publiczny to o k...   3.07.2006, 13:35:19
- - nospor   CytatAle skoro konstruktor zawsze jest publiczny t...   3.07.2006, 13:38:48
- - Cysiaczek   Spokojnie. Nie jest tak źle. Wszystkie inne s...   3.07.2006, 13:40:03
- - bigZbig   Oj chlopaki - wiem, ze dla pozostalych metod i wla...   3.07.2006, 14:01:22
- - Cysiaczek   Zaraz poszukam i wskażę źródło... loading   3.07.2006, 14:02:01
|- - mariuszn3   Cytat(Cysiaczek @ 3.07.2006, 13:02 ) Zara...   3.07.2006, 14:08:05
- - Cysiaczek   http://pl.php.net/distributions/manual/php...z#lan...   3.07.2006, 14:10:31
|- - mariuszn3   Cytat(Cysiaczek @ 3.07.2006, 13:10 ) http...   3.07.2006, 14:19:33
- - relaxant   No i spoko " // Contructors must be public...   3.07.2006, 14:26:57
- - ActivePlayer   jako ze nie mam dostępu do php5 tutaj, zadam pytan...   3.07.2006, 15:37:43
- - Cysiaczek   Nie chcę się o to kłócic. Jak tylko...   3.07.2006, 15:42:27
- - NuLL   CytatJeśłi się mylę, to oczywi...   3.07.2006, 17:58:16
- - relaxant   Ok, od wczoraj z cvs'a na php.net można ściągn...   6.07.2006, 13:39:02
- - NuLL   O jakim bledzie mowisz   6.07.2006, 22:05:52
- - relaxant   Patrz - 1 wpis, to co mówiłeś Cytat@AP - rezult...   7.07.2006, 12:35:08


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: 13.10.2025 - 22:09