This article is a continuation of the Where do I go from here? article with a focus on PHP. If you haven’t read the previously mentioned article – you should do that first since it sets up the context for what I’m going to say here.
The usual disclaimer applies. This is going to be an evolving post because everything changes in software all of the time.
Assuming that you are pursuing project focused learning here are some PHP focused approaches.
Note: The password for any google forms referenced on this page is: eli4d
The ‘no-frills’ project iteration
I suggest that your first iteration of the project use the PHP concepts that you just learned. This means using the PHP that you know right now. This no-frills iterations will help you understand the essence of your project.
Some of you will have some questions/objections so lets go over these (send me more objections/questions that I can add to this section):
But I need a database
I’m not sure if you really need a database but if you do – here are some ideas:
- Start by using CSV files to store/retrieve your data. PHP has some built in function that can help you do this:
- Use SQLite (http://php.net/manual/en/book.sqlite.php). SQLite is a SQL database engine that comes built-in with PHP.
Note: I’m thinking of creating an additional online PHP course to follow-up on current one that I’m teaching. This course would focus on PHP usage with MySQL (thereby applying to use of PHP with other databases). I need to gauge if there is sufficient interest in such a class. If you would be interested in such a class – add your email via this google form. You can also easily reach this survey at the bottom of this page (if you don’t want to click on the previously shown link).
But I need to use >insert your favorite CMS or framework name<
Do you really need a particular Content Management System (CMS) or framework for your first rough iteration of your project? Do you need the mental overhead of learning an additional system to create your project?
Below I discuss a CMS (WordPress) and a framework (Laravel) but I don't recommend using either one for your initial project iteration. You will have plenty of time to use any CMS or framework once you have better understanding of your project and the problem that you're trying to solve.
The 'I want to use WordPress' project iteration
Every quarter I get at least one student who asks about moving forward with his/her PHP learning through WordPress (typically by wanting to create a plugin). In this section I'll give you some suggestions on how to approach plug-in development although I think the no-frills approach is much better.
- Before jumping into lots of web searches on plugin development learn about WordPress's architecture. How does it work? What are the core concepts of how it runs? What's the interaction between PHP and the database? http://codex.wordpress.org/ is a great place to start:
- Understand the WordPress loop
- Template Tags
- WordPress themes: using themes, developing themes
- General WordPress development
- Get into plugins
When you get into WordPress and plugin development you may encounter unfamiliar PHP notation involving $this->. This is Object Oriented PHP and you may want to explore it starting with php.net’s information at http://php.net/manual/en/language.oop5.php.
Note: I’m thinking of creating an additional online PHP course to follow-up on current one that I’m teaching. This course would focus on learning and understanding to use Object Orient PHP. I need to gauge if there is sufficient interest in such a class. If you would be interested in such a class – add your email via this google form. You can also easily reach this survey at the bottom of this page (if you don’t want to click on the previously shown link).
The ‘I want to use a framework’ project iteration
As I mentioned in the last week of class there are many differences between a framework and a CMS. If you want to implement your project in a PHP framework you have a wide selection of available frameworks. It is very easy to get lost in looking at available frameworks and not do anything concrete (i.e. your project).
You should consider these criteria when examining any framework (or CMS for that matter):
- Is the framework well documented? Does the documentation keep in sync with releases?
- The community: Are there people that respond to questions? Is the community active? Does the community treat newcomers with respect?
- Releases: Are there fairly regular updates for both bug fixes and new features?
- What type of license (usage, modification)?
- Can you get paid support if you had to for your project (this assumes more of a work project than a personal hobby one)?
Keeping in mind that this is just my opinion, my recommendation for a framework is Laravel. You can find some great origin information on Wikipedia. I believe that Laravel fulfills all of the criteria that I mentioned above.
To use Laravel you will definitely need to learn Object Oriented programming with PHP.
Additional information about Laravel:
- The newsletter is chockfull of Larvel specific information as well as other related PHP developments
- The Laravel podcast is a very nice short podcast that covers Laravel news, as well as software development information from seasoned PHP developers
If you’re not having fun and enjoy the trials and tribulations of your chosen project then you need to ask yourself why you’re doing it.
Some additional information/resources:
- Integrated Development Environments (IDEs) – when you need something more powerful than a simple text editor
- Atom: It’s a free text editor that’s much more than a text editor (I’ll have a future blog post about my experience in using Atom)
- PHP Storm: A commercial IDE that is worth the money if you get deeply into PHP
- Note: that the PhpStorm blog is full of PHP information related to the evolution of the language and the community
Above mentioned contact form and surveys for easy access
Note that each form only has 2 required fields. The password is: eli4d
Contact form (where you can send me your questions/objections per above)
PHP class focusing on PHP and MySQL
PHP class focusing on Object Oriented Programming