Iteration on class attributes

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Iteration on class attributes

Δημοσίευση από nikirtsi » 02 Νοέμ 2007 09:55

Έστω ο κάτωθι πίνακας

Κώδικας: Επιλογή όλων

$myArray = array ("Name"=>"", "Conpany"=>"", "Tel"=>"");
Για τήν προσπέλαση τών στοιχίων του θά μπορούσε νά γραφτή κάτι ώς εξής :

Κώδικας: Επιλογή όλων

$myArray = array ("Name"=>"", "Conpany"=>"", "Tel"=>"");
echo  $myArray["Name"].$myArray["Company"].$myArray["Tel"]

Τί γίνεται όμως στήν περίπτωσιν όπου ο πίνακας περιέχει πολλά στοιχεία οπού
ουσιαστικώς τό πλήθος αυτών, δημιουργεί μία μή καλαισθησία στήν ομαδικός επεξεργασίαν
των ;
Μήπως θά υπήρχε κάποιος τρόπος νά ειπωθή λογικώς η έκφρασι "για όλα τά στοιχεία του";

Σαφώς καί ναί, ώς ξέρουμε, μέ κάποια λογική επαναλήπτη (iteration) ..
Παραθέτω κάποια παραδείγματα...

Παράδειγμα 1

Κώδικας: Επιλογή όλων

$myArray_index = array("Name", "Company", "Tel"); 
$myArray = array ("Name"=>"", "Conpany"=>"", "Tel"=>"");

for &#40; &#40;$i = 0&#41;; &#40; $i <= count&#40;$myArray_index&#41; - 1&#41;; &#40;$i = $i + 1&#41; &#41;
echo $myArray&#91;$myArray_index&#91;$i&#93;&#93;."<br/>";
Παράδειγμα 2

Κώδικας: Επιλογή όλων

$myArray = array &#40;"Name"=>"", "Conpany"=>"", "Tel"=>""&#41;;
for each &#40;$myArray as $c&#41; echo $c."<br.";
Παράδειγμα 3

Κώδικας: Επιλογή όλων

$myArray = array &#40;"Name"=>"", "Conpany"=>"", "Tel"=>""&#41;;

while &#40;$c = current&#40;$myArray&#41;&#41; &#123;
   echo $c."<br/>";
   next&#40;$myArray&#41;;
&#125;

Γιά κάποιον λόγον αποφασίζουμε νά αναπαραστήσουμέ τήν δομήν τού πίνακος $myArray
σέ ένα αντικείμενο μίας κλάσεως έν ονόματι cClass, ώς εξής:

Κώδικας: Επιλογή όλων

class cClass &#123;

var $Name;
var $Company;
var $Tel;
&#125;;


Μιά χαρά, αλλά τώρα τί συνέβηκε; κερδίσαμε στήν ευελεξία όπου προσφέρει η αντικειμενοστρέφια, αλλά χάσαμε κάτι.
Χάσαμε τήν ικανότητα χρήσεως επαναληπτών επί τών στοιχείων τού πίνακος μιάς καί πλέων αυτά τά στοιχεία έγιναν ιδιότητες τής κλάσεως.


Αναρωτιέμαι λοιπόν άν υπάρχη κάποιος τρόπος έτσι ώστε νά μπορή νά εκφραστή κάποιος
επαναλήπτης επί τών ιδιοτήτων μιας κλάσεως...

Iδεατός κώδικας

Κώδικας: Επιλογή όλων

class cClass &#123;

var $Name;
var $Company;
var $Tel;
&#125;;

$o = new cClass;
for each &#40; &#123;τις ιδιότητες τής κλάσεως&#125; as $c&#41; 
echo  $c."<br/>";
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Iteration on class attributes

Δημοσίευση από cherouvim » 02 Νοέμ 2007 11:55

nikirtsi έγραψε:Αναρωτιέμαι λοιπόν άν υπάρχη κάποιος τρόπος έτσι ώστε νά μπορή νά εκφραστή κάποιος επαναλήπτης επί τών ιδιοτήτων μιας κλάσεως...
http://php.net/oop5.reflection

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Iteration on class attributes

Δημοσίευση από nikirtsi » 02 Νοέμ 2007 12:26

Ωραίως Cherouvim...

Ήξερα πώς άς πούμε η JAVA έχει τό JAVA REFLECTION API,
Δέν ήξερά πώς κάτι τέτοιο μέ τόν ίδιον ακριβώς τρόπο (κοίτα σύμπτωσι..[λές να είναι;])
τό υλοποιεί και η PHP. Δυστηχώς όμως μόνον στήν έκδοσιν πέντε(5).

Καλώς αφού φροντίσανε...(άν και αυτό που θέλω να φτιάξω πρέπει να τρέχει στήν τετάρτην έκδοσιν τής(PHP).
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Iteration on class attributes

Δημοσίευση από cherouvim » 02 Νοέμ 2007 12:54

Το reflection είναι χρήσιμο στις γλώσσες.

Το ερώτημα όμως είναι αν αυτό που πας να κάνεις είναι σωστό, ή αν γίνεται καλύτερα με εντελώς διαφορετική σχεδίαση.

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Iteration on class attributes

Δημοσίευση από nikirtsi » 03 Νοέμ 2007 10:02

Cherouvim... καλημέρα.

Αυτό όπου θέλω να κάνω είναι απλό καί τό εξέφρασα πρώτο-πρώτο.

Λάθος θα τό χαρακτήριζα. Μόνον και μόνον επειδή γίνετε εντέλει μέ μιά ποιό απλή
άλλην σχεδίαση.

(Απλά τό θέμα όπου ήθελα νά θείξω ήταν άν υπήρχε κάποιος
τρόπος να γίνει αυτό όπου ανέφερα
και από τήν στιγμή που υπάρχει, καλώς, μου λύθηκε η απορεία.
Από τήν στιγμή όμως όπου δέν με βολεύει η λογική του,
σωστά σκέφτηκες πώς καλλίτερα θα ήταν καλλίτερα να χρησιμοποιήσω μια ενναλακτική σχεδίασι)
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες