Proper organization of PHP code for CRUD application? - php

What is the most efficient way of organizing PHP code for a CRUD application? What are the well-known naming conventions?
I have a class and its getters and setters just seem to be SQL queries. Is this correct, or how am I supposed to organize it?

You should have a look at DomainModels and DataMappers. In general, I recommend the Zend Framework and its Quickstart Tutorial, as it teaches these two very relevant patterns in a few minutes by example. You do not need to switch to Zend Framework afterwards, but it is good learning material.

Use the MVC pattern. Then you allready have files in the folders:
models
views
controllers
inside this folders I would recommend not to use prefixes or sufixes because the files are already in such an folder. But extend all controller files and model files from one main class!
Maybe you want to download and study a example project made in CakePHP framework which is very well structured and uses CRUD as well!

Related

why do we say ZF2 is a MOVE design pattern? [duplicate]

I'm wondering if ZF2 is based entierly on MOVE instead of the classic MVC.
Somewhere I read that is really bases on MOVE (http://cirw.in/blog/time-to-move-on) but e.g. in the "getting started tutorial" (http://zf2.readthedocs.org/en/latest/user-guide/overview.html) they are saying "creating a simple database driven application using the Model-View-Controller paradigm".
So, what is it now based on? Does it support both?
I'm a bit confused. What are the difference at MVC between ZF1 and ZF2?
Thanks
MOVE (Models, Operations, Views and Events)
MVC (Models, Views, Controllers)
The problem with MVC is that you end up stuffing too much code into controllers,
to overcome this problem MOVE is another possible option to choose in zf2 projects,
Because in this architecture you can split your controller into Events and Operations.
Question: Is ZF2 based entirely on the MOVE architecture?
I don't think ZF2 is designed entirely on MOVE architecture.
ZF2 follows the SOLID object oriented design principle with loosely coupled MVC architecture which provide more flexibility in terms of usability.
Question: Can I develop my projects using the MOVE architecture in ZF2?
Yes ZF2 provides you with everything to support both architectures (MOVE, MVC).
It provides Models, Views, Controllers(Operations), Events.
It is up to the developer which architecture he would like to use.
ZF1 and ZF2 is compared in another thread.
MVC or MOVE
SOLID Object Oriented Programing
I am still a beginner in zf2, I am writing here since I had ported my zf1 code entirely to new zf2 framework. I could only say the new framework have lot of advantages and once you get certain new concepts and feature. you can save lot of time developing new project by reusing of modules/components etc.
In zf2 most of the library components are designed to be standalone, i.e loosely coupled, as said it gives more flexibility and a task can be done in many ways (just like PHP is). The main advantage I see is modules, I can split my project to many modules with ease and test individually and integrate very easily without any additional codes. Even I had all my resources like images, css and JavaScript files inside my module folders and access it without any problem (off course with a small code in index.php)
for me ZF1 has fixed rules, flows, etc, and zf2 have liberated flow and rules with new addition of events namespace, configuration and lazy loading, assemble objects, inject dependencies with servicemanger. in zf1 routes are automatic(programmatic), where as in zf2 we need route definition, in zf1 controllers are automatically choosen, where as in zf2 we need to define controllers as invokables, this are few things that take some time to get in once you get the idea you will feel the comfort of using the new zf2 framework
to start with you can do this steps
Learn Service Manager
How Configuration works
How events work
Components wise more or less it works the same as in zf1 (at least in my case)
below are the following advantage I had benefited
Full feel of OOP
Modular application development
Design and then develop to PHP application
Web Application(RIA) platform

Is ZF2 based on MOVE?

I'm wondering if ZF2 is based entierly on MOVE instead of the classic MVC.
Somewhere I read that is really bases on MOVE (http://cirw.in/blog/time-to-move-on) but e.g. in the "getting started tutorial" (http://zf2.readthedocs.org/en/latest/user-guide/overview.html) they are saying "creating a simple database driven application using the Model-View-Controller paradigm".
So, what is it now based on? Does it support both?
I'm a bit confused. What are the difference at MVC between ZF1 and ZF2?
Thanks
MOVE (Models, Operations, Views and Events)
MVC (Models, Views, Controllers)
The problem with MVC is that you end up stuffing too much code into controllers,
to overcome this problem MOVE is another possible option to choose in zf2 projects,
Because in this architecture you can split your controller into Events and Operations.
Question: Is ZF2 based entirely on the MOVE architecture?
I don't think ZF2 is designed entirely on MOVE architecture.
ZF2 follows the SOLID object oriented design principle with loosely coupled MVC architecture which provide more flexibility in terms of usability.
Question: Can I develop my projects using the MOVE architecture in ZF2?
Yes ZF2 provides you with everything to support both architectures (MOVE, MVC).
It provides Models, Views, Controllers(Operations), Events.
It is up to the developer which architecture he would like to use.
ZF1 and ZF2 is compared in another thread.
MVC or MOVE
SOLID Object Oriented Programing
I am still a beginner in zf2, I am writing here since I had ported my zf1 code entirely to new zf2 framework. I could only say the new framework have lot of advantages and once you get certain new concepts and feature. you can save lot of time developing new project by reusing of modules/components etc.
In zf2 most of the library components are designed to be standalone, i.e loosely coupled, as said it gives more flexibility and a task can be done in many ways (just like PHP is). The main advantage I see is modules, I can split my project to many modules with ease and test individually and integrate very easily without any additional codes. Even I had all my resources like images, css and JavaScript files inside my module folders and access it without any problem (off course with a small code in index.php)
for me ZF1 has fixed rules, flows, etc, and zf2 have liberated flow and rules with new addition of events namespace, configuration and lazy loading, assemble objects, inject dependencies with servicemanger. in zf1 routes are automatic(programmatic), where as in zf2 we need route definition, in zf1 controllers are automatically choosen, where as in zf2 we need to define controllers as invokables, this are few things that take some time to get in once you get the idea you will feel the comfort of using the new zf2 framework
to start with you can do this steps
Learn Service Manager
How Configuration works
How events work
Components wise more or less it works the same as in zf1 (at least in my case)
below are the following advantage I had benefited
Full feel of OOP
Modular application development
Design and then develop to PHP application
Web Application(RIA) platform

how to best structure application in symfony 2

I started using Symfony 2 after having experience with 5 php frameworks like Zend, CodeIgniter, Fuel, Yii and Cake. I am very confused on how to structure my project as better as I can. First of all I am confused in working with bundles. Bundles are some kind of modules used in other frameworks? Bascially I have my application and everything until now is stored in a bundles. If I want to make some helper functions and some libraries and abstract classes, I just make a new bundle for those?
See the Bundle Structure and Best Practices cookbook entry for basic ideas on the structure of a bundle.
I recommend having just one app specific bundle. I call it AppBundle.
Also, you don't have to have everything in bundles. Check this question for details.
Lots of other discussions on that matter:
Should everything really be a bundle on Symfony 2?
Confused with symfony2 bundles

The steps to create an MVC web application

I've read many tutorials about MVC method ... I am now about to start an e-commerce application with PHP... So I'm confused about from where to start.(What's the best directory hierarchy ,the files, the templates etc)
Knowing that I will create admin pages(in a subdirectory with MVC), and website pages ... all I want is to know how to organize all this.
I've already created PHP websites (I am good in PHP and OOP). But not with MVC.
Thank you
As mentioned by #Daniel A. White, there already exists a lot of PHP MVC frameworks. Have a look at:
DooPHP (Personally love this one!)
CakePHP
Symfony (updated for version 2)
Zend
CodeIgniter
There are a number of different open source MVC frameworks for PHP such as CakePHP that should get you inspiration.
I'd start with a PHP framework like CodeIgniter because it's already packaged with a simple, effective and easy-to-use MVC structure that'll get you up to stratch with the logic necessary to start programming this type of web app. They also have a good user guide and support base - so help's never that far away if you run into trouble.

Can individual classes from CodeIgniter be integrated into other frameworks / projects?

Can individual classes from CodeIgniter be integrated into other frameworks / projects without using the underlying framework to build the application?
I believe this can be achieved in Zend if I only wanted to use specific classes (such as Zend_DB, Zend_Validate, etc…) by linking to just that component without needing to use the underlying framework for building the application. Can someone please confirm this? In addition, what other frameworks (e.g., Symphony, CakePHP) have this ability, specifically CodeIgniter?
Just look at the class definitions and see what they depend on. Likely they are tightly coupled to the rest of the framework.
ZF was defined from the beginning as a collection of components, or tools, which is why stealing individual classes is so easy - it was intentional.
CI is meant to be extremely loosely coupled, so perhaps OP will have some luck. I don't have any examples however

Categories