Προς το περιεχόμενο

[PHP] Πως αναπτύσσω μια μέτρια σε μέγεθος εφαρμογή


poscore

Προτεινόμενες αναρτήσεις

Γεια σας!

 

Εδώ και λίγο καιρό προσπαθώ να δημιουργήσω μια εφαρμογή σε PHP αλλά έχουν έρθει τα πάνω κάτω και σκέφτηκα να ποστάρω εδώ μπας και βρω λύση. Χρησιμοποιώ HTML, CSS, PHP, MySQL για γλώσσες προγραμματισμού και πρόκειται μια ένα project σχετικά με βλάβες σε ένα χώρο. Έχω φτάσει σε κάποιο επίπεδο και έχω βρεθεί σε αδιέξοδο γιατί την μια η βάση δεδομένων μου είναι λάθος και την άλλη έχω διάφορα προβλήματα σε PHP.

 

Θα ήθελα μια μικρή βοήθεια στο πως να οργανώσω την όλη ιδέα και όχι λεπτομέρειες. Απλά αυτή τη στιγμή έχω 4-5 φακέλους και καμιά 20 αρχεία και γίνεται ο χαμός. Προφανώς για κάποιους αυτό μπορεί να μην είναι τίποτα αλλά για όσους δεν έχουν κάνει ομαδικά Project είναι μια δύσκολη αρχή. Λοιπόν...

 

Η δομή τώρα είναι ως εξής:

 

 

 

- index.php

- core

- main.php

- add

- add.php

- empty_fields.php

- full_fields.php

- insert.php

- search.php

- view

- view.php

- add_data.php

- active_date.php

- inactive_date.php

- edit

- edit.php

- edit_problem.php

- insert.php

- includes

- head.php

- header.php

- footer.php

- security

- session.php

- functions

- logout.php

- database

- connect.php

- css

- login_style.css

- main_style.css

- view_style.css

- style.css

- images

- red.png

- green.png

 

στα αρχεία αυτά υπάρχει html + php κώδικας χύμα και σε κάποια σημεία είναι λίγο δύσκολο. Επίσης το edit view add είναι 3 κουμπάκια στο μενου πάνω πάνω που σε πάνε σε φόρμες. Για το κάθε ένα υπάρχει δικό του css και δεν μου αρέσει αυτό αλλά δεν ξέρω τι να κάνω.

 

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

 

σας ευχαριστώ πολύ!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Διάβασε λίγο για Model - View - Controller (MVC) architecture. Αν κάνεις λίγο search, θα δεις ότι έχει συζητηθεί κι εδώ αρκετές φορές. Γενικά, καλό είναι να αποφασίζεις το file structure του project σου πολύ πριν αρχίσεις να γράφεις κώδικα. Από εκεί θα πρέπει να ξεκινάς πάντα, και είσαι πολύ τυχερός που σου σκάσαν το πρώτα προβλήματα τόσο νωρίς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρίξε μια ματιά και στο 3-tier architecture. Προσωπικά δε μου αρέσει το MVC και χρησιμοποιώ το 3-tier για web apps. Επίσης μιας και γράφεις με php ρίξε μια ματιά στο Symfony 2. Θα σου πάρει λίγο να δεις πως δουλεύει ειδικά μιας και ότι δεν έχεις δουλέψει με frameworks, αλλά θα σου λύσει τα χέρια στη συνέχεια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ξαναδιάβασε σχετικά με το MVC.

Ψάξε για παραδείγματα για να δεις πως υλοποιούν το MVC.

Όπως σου είπε και ο Thanocaster, σχεδίασε πάλι την εφαρμογή σου και μετά δες σύμφωνα με το μοντέλο που θα γράψεις τι.

Γράψε το κώδικα με κάποιο framework.

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρίξε μια ματιά και στο 3-tier architecture. Προσωπικά δε μου αρέσει το MVC και χρησιμοποιώ το 3-tier για web apps.

 

Μπορείς να το αναλύσεις λίγο περισσότερο αυτό; Από τη στιγμή που όλο το functionality της εφαρμογής είναι σε "ένα πρόγραμμα" (σ' αυτή την περίπτωση τουλάχιστον) τότε πώς αντιλαμβάνεσαι το 3-tier ως διαφορετικό από το MVC? Κάποια στιγμή ο controller θα δώσει στο view τα δεδομένα που του χρειάζονται όπως και να 'χει, οπότε... δε μπορώ να καταλάβω πού τραβάς τη διαχωριστική γραμμή.

 

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

 

Κατέβασε κάποιο framework (προσωπικά μου αρέσει το Yii αλλά χίλιοι καλοί χωράνε) που να έχει μια έτοιμη "hello world" εφαρμογή και δες πώς είναι φτιαγμένη για να ξεκινήσεις να μπαίνεις στο νόημα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για την συγκεκριμένη εφαρμογή έχεις δίκιο ότι δε θα κάνει διαφορά, αλλά τη διαχωριστική γραμμή όπως λες την τραβάω στο data layer. Δε μπορώ σε καμία περίπτωση να εξισώσω το data layer με το model. Το Data layer, όπως τουλάχιστον το καταλαβαίνω εγώ, δεν έχει να κάνει τίποτε άλλο από να επικοινωνεί με τη βάση, να παίρνει και να περνάει απλά data στο business, το οποίο μπορεί να χωριστεί και σε περισσότερα layers καθώς η εφαρμογή μεγαλώνει.

 

Τη άποψη μου ενάντια στο MVC την ανέπτυξα όταν πριν 4 χρόνια όταν έκανα erasmus/πρακτική σε μια εταιρεία στην Ολλανδία. Είχαν δει πρόσφατα (τότε) τους πελάτες τους να αυξάνονται ξαφνικά και το software τους (CRM) να φορτώνει σε functionality και διαφορετικά views, χάλασε το "separation of concerns" μέχρι που "έσκασε". Εγώ ήμουν στα tickets και για να κάνεις debugging έπρεπε πρώτα να κάνεις reverse engineering γιατί τα unit test έβγαιναν πράσινα, αλλά είχαν δημιουργηθεί τέτοια dependencies στο κώδικα που δεν ήξερες τι μπορεί να φταίει. Η εταιρεία απ' ότι έμαθα ξαναέγραψαν πριν ένα χρόνο το software τους, αφού έφτασαν σε σημείο να τους απολύσουν σχεδόν όλους από τα χρέη και να μείνουν 4 άτομα. 1η επιρροή

 

Μετά από αυτό έκανα το μεταπτυχιακό μου στην ίδια χώρα και 2 συγκεκριμένοι καθηγητές (ο ένας μου έκανε advanced web technology και ο άλλος software architecture και software patterns) επέμενα στην 3-tier ή n-tier αρχιτεκτονική. Μάλιστα ο δεύτερος επέμενε να χρησιμοποιείς το mvc αλλά μέσα στο 3-tier σου, με το MV στο presentation και το C στο business, κάτι που το βλέπω στη τωρινή μου εργασία με το backbone.js. 2η επιρροή

 

Τέλος, στη δουλειά που βρίσκομαι τώρα εχουμε ένα community web app το οποίο το πρωτόγραψαν το 2001, βασισμένο σε MVC. Εγώ πήγα για να δουλέψω με το data model τους, που είναι ένας γράφος και που το είχαν γράψει σε MySQL(αυτό είχαν τότε...), και να το περάσω σε μια NoSQL βάση όπου ταιριάζει καλύτερα και μπορούν να κάνουν φθηνότερα graph queries. Στην αρχή που έκανα το research έβλεπα τους άλλους developer (o παλιότερος από το team έχει 2 χρόνια στην εταιρεία) να παραπονιούνται, αλλά δεν είχα καταλάβει γιατί, μέχρι τη στιγμή που πήγα να βάλω το μοντέλο μου στη πράξη... Ο κώδικας έχει γίνει τέρας και σε πολλές περιπτώσεις υπήρχε logic ακόμη και στο view. Σήμερα είμαστε σε σημείο όπου ξαναγράφουμε την επόμενη version από την αρχή σχεδόν. 3η επιρροή

 

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

Προσωπικά πιστεύω ότι το δύσκολο δεν είναι να φτιάξεις μια εφαρμογή που να δουλεύει, αλλά να μπορεί επίσης να εξελιχθεί όπως και το να είναι όσο το δυνατόν πιο εύκολη η συντήρησή της και εκεί βασίζομαι με το 3 tier και το ξεχωριστό, καθαρογραμμένο, χωρίς λογική data layer.

 

Για να βγάλω την ουρά μου απέξω, να υπενθυμίσω ότι δε πρόκειται για απαξίωση του MVC, αλλά για προσωπική άποψη/κόλλημα.

 

υ.γ. Sorry για το ταιράστιο ποστ/εξομολόγιση :-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μια τελευταία ερώτηση. Ακόμη κι αν είναι ένα σχετικά μικρό project αξίζει να δοκιμάσω να το αλλάξω με MVC? Οκ, υπάρχουν όλα αυτά τα καλά και σίγουρα το επόμενο μου έτσι θα γίνει αλλά δεν είμαι σίγουρος αν αξίζει ο κόπος για αυτό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι αξίζει, για το λόγο ότι θα μάθεις να κάνεις τη δουλειά σωστά.

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κι εγώ υπέρ είμαι του να χρησιμοποιήσεις MVC και να γράφεις με αυτή τη λογική.

Ο διαχωρισμός μόνο καλό θα σου φέρει στην εφαρμογή σου.

 

Εμείς γράφουμε ένα τέρας τώρα σε Codeigniter και μας έχει σώσει, γιατί ξέρεις πάντα που θα βρεις τι, κι ένας νέος developer με λίγο διάβασμα, ξέρει που θα βρει τι.

 

Έχω τύχει σε Project με include στο include, και μεγαλούτσικο project τύπου cheapis... όπου ο chief developer (όπως τον παρουσίασαν) όταν τον ρώτησα αν έχει κάποιο framework, μου λεει , ΑΠΑΠΑΠΑ όλα είναι custom εδώ, τα frameworks είναι άχρηστα!

Κι έχω κι άλλες τέτοιες περιπτώσεις...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τελικά αποφάσισα ότι θα το συνεχίσω έτσι. Σίγουρα η επόμενη εφαρμογή θα ακολουθεί το μοντέλο αλλά αυτή τι στιγμή δεν έχω χρόνο για σχεδιασμό απο την αρχή. Πρέπει να το "παραδώσω" σε 1 εβδομάδα και μένουν και κάποια άλλα κομμάτια για υλοποίηση :/ Δεν θέλω να το ρισκάρω οπότε θα μείνει όπως έχει...

 

σας ευχαριστώ για τις απαντήσεις σας και τα λινκ :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...