Κατηγορία: Zend-πλαίσιο

Zend-πλαίσιο ανά μονάδα με βάση τις ρυθμίσεις

Με , Παρασκευή 1 Ιανουαρίου 2010 22:40

Έχω δημιουργήσει μια Παρακολούθηση Προς αυτή τη θέση που απαιτεί λιγότερη ρύθμιση, δείτε Ενότητα βάση Διάταξη - Zend-πλαίσιο .

Κατά τη χρήση του πλαισίου Zend με modules, προφανές, ότι εάν τρέχετε διάφορες (υπο-) τοποθεσίες από την ίδια αίτηση δεν θέλετε απαραίτητα την ίδια σενάρια διάταξη για κάθε τμήμα. Αποφάσισα να πάω με την ακόλουθη δομή ιστοσελίδα:

  / Εφαρμογή
     / Ελεγκτές
         ...
     / Μοντέλα
     / Modules
         / Default
             / Ελεγκτές
             / Διάταξη
                 / Scripts
             / Απόψεων
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Το πρόβλημα ήταν για τη δημιουργία της scripts διάταξη για κάθε μία μονάδα βάσης. Η απάντηση ήρθε μέσα από τη χρήση ενός Helper δράσης. Ρύθμιση του διατάξεις για κάθε μία μονάδα βάσης περιλαμβάνει τρία βήματα:

  1. Application.ini (ή παρόμοια εγκατάσταση διαμόρφωση):
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / layouts / scripts"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / layouts / scripts"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ modules / μέλος / layouts / scripts"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / θυγατρικών / layouts / scripts" 
  2. Δημιουργία Helper δράσης σας:
      <? Php
     / **
      * Ορίζει τη διαδρομή διάταξη για κάθε μία μονάδα βάσης
      *
      * @ Συγγραφέας Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Από 01/01/2010
      * /
     τάξη Pro_Controller_Action_Helper_SetLayoutPath
         εκτείνεται Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Σετ μονοπάτι διάταξη που βασίζεται στην Ενότητα
          * /
         δημόσια preDispatch λειτουργία ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ()?
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg («εκκίνησης»)) {
    
    	         $ Config = $ bootstrap-> getOptions ()?
    
    	         εάν (isset ($ config [$ module] ['πόρων'] ['διάταξη'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['πόρων'] ['διάταξη'] ['layoutPath']?
    	             $ This-> getActionController ()
    	                  -> GetHelper («διάταξη»)
    	                  -> SetLayoutPath ($ layoutPath)?
    	         }
        	 }
         }
     } 
  3. Και boostrap, τέλος, η βοηθός δράσης:
      ...
         / **
          * Ρυθμίζει σενάρια διάταξη για κάθε μία μονάδα βάσης
          * /
         προστατεύονται λειτουργία _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap («frontController ')?
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         νέα Pro_Controller_Action_Helper_SetLayoutPath ())?
    	 }
     ... 

Δόγμα: προεπιλογή DATETIME NOW ()

Με , Τετάρτη 30 Δεκεμβρίου 2009 18:30

Έχω ήδη αγωνίζονται με τη δημιουργία ενός σχήματος βάσης δεδομένων για ένα νέο Zend-πλαίσιο του έργου. Είμαι χρησιμοποιώντας προσπαθεί να χρησιμοποιήσει Δόγμα ORM για τα μοντέλα βάσης δεδομένων μου. Πρέπει να δημιουργηθεί το σχήμα, έτσι ώστε να μου επέτρεψε να ορίσετε μια προεπιλεγμένη ημερομηνία και ώρα για μια `datetime` στήλη, π.χ. κατά την προσθήκη ενός νέου μηνύματος εμφανίζεται το τρέχον timestamp. Μετά από πολλή αναζήτηση και πειραματισμό βρήκα τη λύση έτσι είμαι το μοιράζονται.

Στο σχήμα σας YAML αρχείο κάνει απλά τα εξής:

 Μήνυμα:
   actAs:
     Timestampable:
       δημιουργήθηκε:
         Όνομα: created_at
         Τύπος: timestamp
         μορφή: YMD H: i: s
       τροποποίησης:
         Όνομα: last_updated
         Τύπος: timestamp
         μορφή: YMD H: i: s
   στήλες:
     id:
       Τύπος: ακέραιος
       πρωτοβάθμια: αλήθεια
       autoincrement: αλήθεια
     Όνομα: string (255)
     email: string (300)
     Μήνυμα: string (2000)

Αν από την άλλη πλευρά που δεν θέλουν μια `updated_at` στήλη μπορείτε να χρησιμοποιήσετε τα ακόλουθα:

 Μήνυμα:
   actAs:
     Timestampable:
       δημιουργήθηκε:
         Όνομα: created_at
         Τύπος: timestamp
         μορφή: YMD H: i: s
       τροποποίησης:
         άτομα με ειδικές ανάγκες: αλήθεια
   στήλες:
     id:
       Τύπος: ακέραιος
       πρωτοβάθμια: αλήθεια
       autoincrement: αλήθεια
     Όνομα: string (255)
     email: string (300)
     Μήνυμα: string (2000)

Zend-πλαίσιο: Βασικές αρχές - Αναθεώρηση

Με , Σάββατο 28 του Νοέμβρη 2009 22:42

Ο εργοδότης μου που καταβλήθηκε πρόσφατα για μια ομάδα από μας στους προγραμματιστές να λάβουν το Zend-πλαίσιο: Βασικές αρχές Φυσικά, εδώ εγώ θα συνοψίσει τις σκέψεις και τις απόψεις μου σχετικά με την πορεία για τους άλλους. Για όσους επιθυμούν να εξοικονομήσουν χρόνο, εδώ είναι περίληψη μου:

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

Φόντο

Έχω υπάρξει PHP developer για περίπου 5-6 χρόνια, και έχουν αρχίσει να συνεργάζεται με την Zend-πλαίσιο για κάθε συστατικό κατά τη διάρκεια των τελευταίων 6 μηνών. Έχω αναπτύξει και / ή έχει ένας προγραμματιστής σε ένα ζευγάρι των μικρών Zend-πλαίσιο MVC sites. Θα είμαι ειλικρινής, δεν είχα ένα τεράστιο ποσό από την έκθεση σε άλλα πλαίσια από μια κωδικοποίηση άποψη, αλλά έχουν περάσει πολλά ώρες ερευνώντας τις ιστοσελίδες του έργου και την αξιολόγηση them. Το πλαίσιο και η κοινότητα γύρω Zend-πλαίσιο είναι αρκετά συναρπαστικό και φαίνεται ότι υπάρχουν τεράστιες δυνατότητες για το πού πηγαίνει του.

Σχετικά με το γήπεδο

Το μάθημα έχει παραδοθεί πάνω από 9 Δύο τρίωρα μαθήματα WebEx (με 10 λεπτά με διάλειμμα στη μέση). Ο χρόνος που ξοδεύεται να περάσει από μια σειρά διαφανειών που παρέχονται από Zend με συζήτηση, ανά πάσα στιγμή. Μπορείτε να χρησιμοποιήσετε ένα μικρόφωνο για να μιλήσει με τον εκπαιδευτή, αλλά για να είμαι ειλικρινής δεν είδα κανέναν χρησιμοποιούν τίποτα περισσότερο από το παράθυρο συνομιλίας. Επιπλέον, μια VMWare Ubuntu μηχανή με την προϋπόθεση ότι έχει κωδικό παράδειγμα και έργα δημιουργήσει μια δοκιμαστική έκδοση του Zend Studio. Οι συνομιλίες ηγέτης πορεία στους συμμετέχοντες είτε πάνω από μια ολοκληρωμένη λύση VoIP, ή μπορείτε να καλέσετε χρησιμοποιώντας ένα από τα πολλά παγκόσμια κλήσης σε αριθμούς.

Κατά τη διάρκεια του υλικού αποτελείται από μια σύντομη επισκόπηση του πλαισίου και το πρότυπο MVC πριν από τον τίτλο σε ένα δείγμα βιβλίο επισκεπτών αίτηση. Η συζήτηση κατέδειξε bootstrapping, Zend_Application, πίνακες Db, πρόσβαση σε βάσεις δεδομένων, Φόρμες, φιλτράρισμα, ACL, επικύρωση, κλπ, κλπ. Βασικά θα καλύπτει όλα τα θέματα που θα απαιτήσει να πάρετε μια βασική ιστοσελίδα σύσταση τρέχει όλη την ώρα που σας δίνει τα εργαλεία για να πάει και να πάρει πιο προηγμένες στο πλαίσιο (αν και αυτό το έκανε με την «Δείτε την ιστοσελίδα« μεγάλο μέρος του χρόνου).

Ο χρόνος είναι για να δοθεί κωδικός επάνω μερικά παραδείγματα, και για την ανάπτυξη του «βιβλίο επισκεπτών» και η εφαρμογή απλών «wiki». Προσωπικά ένιωθα ότι η παροχή του κώδικα ή κάθε εφαρμογή και στη συνέχεια να μας ζητούν να αναπτύξει αυτό που ήταν ουσιαστικά ένα αντίγραφο παράλληλα δεν παρέχουν πραγματικά μια καλή εμπειρία εκμάθησης. Θα προτιμούσα να αναπτύξει μια εφαρμογή παρόμοια, αλλά όχι ταυτόσημες. για την εφαρμογή παράδειγμα με το πλεονέκτημα της ύπαρξης ενός οδηγού να αναφερθώ. Εναλλακτικά κτίριο των αιτήσεων από το μηδέν με το διαδηλωτή θα του ενδεχομένως οδηγήσει σε περισσότερες ερωτήσεις σχετικά με το γιατί και το πώς, δίνοντας έτσι μια καλύτερη κατανόηση του πλαισίου, μετά από όλα μπορείτε να αναζητήσετε λεπτομέρειες μετά την πορεία.

Η τελευταία διάλεξη περιελάμβανε εργασίας σχετικά με την εφαρμογή wiki με τη βοήθεια / καθοδήγηση από τον εκπαιδευτή. Μετά την ανατροφοδότηση πορεία ελήφθη, τονίστηκε αρκετές φορές μέσα από την πορεία που Zend παίρνει ανάδραση πολύ σοβαρά, στην πραγματικότητα, προφανώς τη δική μας εκδοχή του σεμιναρίου ήταν αρκετά νέος. Μερικοί από τους άλλους προγραμματιστές στην εταιρεία θα αναλάβει τη διάρκεια σύντομα έτσι θα είναι ενδιαφέρον να δούμε αν αυτό έχει συμβεί.

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

Γενική αίσθηση

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

Για τον εαυτό μου αυτό το μάθημα έχει ως στόχο σε πολύ χαμηλό επίπεδο. Έχοντας περάσει από τη Οδηγός Γρήγορης Εκκίνησης, διαβάστε Zend Rob Άλλεν πλαισίου δράσης, και συνεργάστηκε με το πλαίσιο λίγο δεν πήρα τίποτα πάρα πολύ. Θα του άρεσε το μάθημα για να πάρει από το τέλος της γρήγορης εκκίνησης και να αναπτύξουν επιπλέον ικανότητες.

Τούτου λεχθέντος, ο τίτλος βέβαια δεν δηλώνει σαφώς "Zend-πλαίσιο: Βασικές αρχές" και σε αυτή την πτυχή κατά τη διάρκεια επιτυγχάνει αυτό που επιδιώκει να επιτύχει. Άλλα μέλη της ομάδας ανάπτυξης που δεν έχουν περάσει το χρόνο εξετάζοντας το πλαίσιο τελειώσει κάθε συνεδρία με τον ενθουσιασμό και ερωτήσεις οι οποίες ήταν πραγματικά ωραίο να βλέπεις.

Όλα δεν χάθηκε, ήταν καλό να περνούν το χρόνο τους επιβεβαιώνοντας τις βασικές λεπτομέρειες του πλαισίου και να πάρει να ρωτήσω μερικές ερωτήσεις σε περιοχές όπου δεν ήμουν 100%. Ήταν επίσης το χρόνο που πήρα να καθίσουν κάθε μέρα και να σκεφτείτε για κωδικοποίηση χρησιμοποιώντας το πλαίσιο και τα μελλοντικά σχέδια, κάτι που δεν θα του ήταν σε θέση να κάνει αλλιώς (μπορείτε να φανταστείτε την εταιρεία σας συμφωνείτε με τα εξής:?)). Τελευταίο αλλά όχι ασήμαντο μπορείτε επίσης να πάρετε ένα ωραίο πιστοποιητικό από Zend να πω ότι έχετε παρακολουθήσει το μάθημα (έστω και μέσω e-mail).

Zend-πλαίσιο Πιστοποίησης

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

Περίληψη

Λαμβάνοντας υπόψη όλα όσα έχω γράψει παραπάνω, θα συνοψίσω τα πάντα σε δύο εύκολη ακόλουθα σημεία:

  • Νέα για την Zend-πλαίσιο: Το μάθημα αυτό κάνει ακριβώς αυτό που περιμένετε, σας δίνει μια ωραία εισαγωγή για το πλαίσιο και να αποκτήσουν ισχυρές βάσεις για τα βασικά στοιχεία από τα οποία μπορείτε να χτίσετε. Το μάθημα φαίνεται να προκαλέσει το ενδιαφέρον και ενθουσιασμό για το πλαίσιο ανάμεσα σε προγραμματιστές.
  • Χρησιμοποιείται το Zend-πλαίσιο: Ενώ ήταν ωραίο να καλύψουμε μερικά από τα πολύ βασικά ένιωσα το χρόνο, προσπάθεια και κεφάλαια για να λάβουν την πορεία του θα μπορούσε να ήταν καλύτερο να δαπανηθούν αλλού. Θα είναι ωραίο να see Zend δημιουργήσετε ένα νέο μάθημα υψηλότερου επιπέδου να αναλάβουν την ανάπτυξη στο επόμενο επίπεδο. - Τουλάχιστον σύμφωνα με τα πρότυπα της πιστοποίησης και πέρα γι 'αυτο θα υπογράψουν αμέσως.

Συνδεθείτε με την DB χρησιμοποιούν Zend-πλαίσιο

Με , Τρίτη 14 Απριλίου 2009 21:06

Έχω καταφέρει να πάρει μια περιοχή σε λειτουργία με την Zend-πλαίσιο , τα πάντα είναι η υλοτομία ωραία να το Firebug / FirePHP ώστε το επόμενο βήμα ήταν να συνδεθείτε με το ΣΠ. Ήθελα επίσης να συνδεθούν κάποιες πρόσθετες πληροφορίες χρησιμοποιώντας το πλαίσιο, όπως πράκτορας χρήστη, ημερομηνία και ώρα, να πάρει και μετά τις μεταβλητές. Έτσι για να επεκτείνει το εγχειρίδιο λίγο εδώ τι έκανα:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$ ColumnMapping = array ('προτεραιότητα' => 'προτεραιότητα',
«Μήνυμα» => «μήνυμα»,
"Datetime '=>' timestamp»,
«User_agent '=>' user_agent»,
«Get_vars '=>' get_vars»,
«Post_vars '=>' post_vars»,
«Τόπος» => «τόπος»
)?

$ WriterDb = νέα Zend_Log_Writer_Db ($ db, "error_logging», $ columnMapping)?
$ Logger = νέα Zend_Log ($ writerDb)?

$ Logger-> setEventItem ("datetime ', ημερομηνία (« YMD H: i: s'))?
$ Logger-> setEventItem («user_agent», $ _SERVER ["HTTP_USER_AGENT"])?
$ Logger-> setEventItem («get_vars», print_r ($ _GET, αλήθεια))?
$ Logger-> setEventItem («post_vars», print_r ($ _POST, αλήθεια))?
$ Logger-> setEventItem («τόπος», SITE)?

$ Logger-> Πληροφορίες («Ενημερωτικό μήνυμα»)?

Σε περίπτωση που τα κλειδιά στη σειρά $ columnMapping τα ονόματα των στηλών μου. «Προτεραιότητας» και «μήνυμα» είναι κατανοητή από Zend_Log_Writers αλλά τα πρόσθετα πεδία προστέθηκαν για να μου δώσει κάποιες πρόσθετες πληροφορίες.

Προφανώς αυτό προϋποθέτει ότι έχετε την καταγραφή εργασίας χρησιμοποιώντας έναν από τους άλλους συγγραφείς πρώτα:)













Θέμα Πανόραμα από Themocracy

5 επισκέπτες online τώρα
3 επισκέπτες, 2 bots, 0 μέλη
Max επισκέπτες σήμερα: 16 στις 07:55 π.μ. UTC
Αυτό το μήνα: 47 στις 10/03/2011 14:47 UTC
Αυτό το έτος: 130 στις 28-03-2011 22:40 UTC
Όλα ώρα: 130 στις 28-03-2011 22:40 UTC