antonisid Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 Καλημέρα, Προσπαθώ να καταλάβω πως χρησιμεύει και πότε χρησιμοποιείται στον αντικειμενοστραφή και συγκεκριμένα σε Php οι άνω κάτω τελείες ή με την αγγλική ορολογία Singleton.Απ'τα παραδείγματα που έχω δει κυρίως εμφανίζεται σε κλάσεις που συνδέουν την βάση δεδομένων.Επίσης,αν κατάλαβα καλά δημιουργούν το αντικείμενο μέσα στην class χωρίς να χρειάζεται να γράψεις πχ $const=new User; (έστω ότι η User είναι η class) ? Θα μπορούσε να γράψει κάποιος ένα πολύ μικρό παράδειγμα για να καταλάβω τι γίνεται ακριβώς διότι σ'αυτά που βρίσκω δεν είναι και πολύ επεξηγηματικά.
defacer Δημοσ. 20 Σεπτεμβρίου 2011 Δημοσ. 20 Σεπτεμβρίου 2011 Το singleton δεν έχει καμία σχέση με τον scope resolution operator. Διάβασες το σχετικό μέρος του manual?
antonisid Δημοσ. 20 Σεπτεμβρίου 2011 Μέλος Δημοσ. 20 Σεπτεμβρίου 2011 Για να μην μπερδευτώ.Στο ακόλουθο παράδειγμα τι χρησιμοποιεί? (απ την μέση και κάτω της σελίδας) http://www.kirupa.com/developer/php/php_oop_intro_pg3.htm
subdee Δημοσ. 20 Σεπτεμβρίου 2011 Δημοσ. 20 Σεπτεμβρίου 2011 Κάνει αυτό ακριβώς που λέει το link του defacer, reference το static object της class Settings. Το singleton πώς σου ήρθε;
antonisid Δημοσ. 20 Σεπτεμβρίου 2011 Μέλος Δημοσ. 20 Σεπτεμβρίου 2011 ψάχτηκα στο google να βρω τι διάολο είναι οι άνω κάτω τελείες σε oop και μου βγαλε πολλά λινκς σχετικά με singleton όπως αυτό. http://phpadvocate.com/blog/?p=211
antonisid Δημοσ. 22 Σεπτεμβρίου 2011 Μέλος Δημοσ. 22 Σεπτεμβρίου 2011 Παιδιά μια ερώτηση Στον παρακάτω κώδικα ποιός ο λόγος να τυπώσουμε στην οθόνη την μεταβλητή CONST_VALUE μ'αυτόν τον τρόπο και όχι δημιουργώντας ένα αντικείμενο με το keyword new και στην συνέχεια με this->CONST_VALUE να εμφανίσουμε το αποτέλεσμα στην οθόνη? Πότε χρησιμοποιείται ο τρόπος αυτός? ><?php class MyClass { const CONST_VALUE = 'A constant value'; } $classname = 'MyClass'; echo $classname::CONST_VALUE; // As of PHP 5.3.0 echo MyClass::CONST_VALUE; ?>
ΠάρηςΓ Δημοσ. 22 Σεπτεμβρίου 2011 Δημοσ. 22 Σεπτεμβρίου 2011 Mπορεις και αλλιως δημιουργοντας αντικειμενο αλλα δεν εχει νοημα,το ιδιο θα παρεις! Ειναι σαν static δηλαδη ισχυει για όλα τα αντικειμενα.. Αρα αφου ισχυει για ολα δεν εχει νοημα να φτιαξεις αντικειμενο... Singleton σε γλώσσες σαν την php ειναι λιγο πιο περιεργα γιατι ψοφανε με το τελος του script. ενω σε αλλα περιβαλοντα μπορει να μεινουν και 1 χρονο στη μνημη πχ.
antonisid Δημοσ. 22 Σεπτεμβρίου 2011 Μέλος Δημοσ. 22 Σεπτεμβρίου 2011 Κυρίως χρησιμοποιείται σε βάσεις δεδομένων όπου οι μεταβλητές για την σύνδεση δεν αλλάζουν ποτέ? (δεν εννοώ το signleton αλλα ο κώδικας που παρέθεσα,ο τρόπος δηλαδή)
ΠάρηςΓ Δημοσ. 22 Σεπτεμβρίου 2011 Δημοσ. 22 Σεπτεμβρίου 2011 Δε νομιζω μιας και δεν εχω δει κατι τετοιο.Η συνδεση δε νομιζω να ειναι σωστο να ειναι const. Κυριως τα const ειναι για σταθερες μεταβλητες. Δηλαδη απλο παραδειγμα αν το μικρο μεγεθος εχει νουμερο 1 και το μεγαλο 2 ... δηλωνεις const MIKRO = 1 ; const MEGALO =2; ... και ετσι καταλαβαινεις τι συμβολιζει το 1 κ 2 και αν αλλαξει η τιμη το αλλαζεις απο ενα σημειο μονο.. Δηλαδη αυτο ειναι πιο ευαναγνωστο > if($noumer== iKlasiMou::MIKRO) { }
defacer Δημοσ. 22 Σεπτεμβρίου 2011 Δημοσ. 22 Σεπτεμβρίου 2011 Κυρίως χρησιμοποιείται σε βάσεις δεδομένων όπου οι μεταβλητές για την σύνδεση δεν αλλάζουν ποτέ? (δεν εννοώ το signleton αλλα ο κώδικας που παρέθεσα,ο τρόπος δηλαδή) Όχι ακριβώς. Οι μεταβλητές για τη σύνδεση "αλλάζουν". Ο αριθμός μητρώου, ο ΑΦΜ κλπ "αλλάζουν". Παραδείγματα πραγμάτων που δέν αλλάζουν: >class ReallyReallyConstant { const SECONDS_PER_MINUTE = 60; const DAYS_PER_WEEK = 7; const PI = 3.14159265; } Επίσης, μπορείς να τα χρησιμοποιήσεις και αντί για define(), όπως π.χ. παρακάτω: >class Gender { const MALE = 'm'; const FEMALE = 'f'; const UNKNOWN = 'u'; } αντί για >define('GENDER_MALE', 'm'); κλπ. Γενικά αυτό που θέλεις να κάνεις είναι να αποφύγεις τα λεγόμενα "magic numbers" (ή magic strings).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.