This is a rather low effort post. PHP The Right Way [1] already covers the basics of modern PHP, without turning into a laundry list.
Today the most important thing is Composer, not frameworks, especially to those who are just starting out. Learning a full framework is pointless if they just want to see the basics in action. Fabien Potencier's Create your own framework series [2] is really good for this: it shows how much you can do with just a couple of Symfony components and a front controller.
This is certainly also the most important thing for existing PHP developers still hanging on to the "old" way of writing PHP code. Having worked on sites where everything is an undocumented mess of manual multi-level includes with shared globals and half-baked implementations of things which already exist, in a better form, well tested and documented elsewhere, I feel like I need to shout from the rooftops php has a package manager! f_ing use it! and url routers are a thing now!
It really is surpising how far you can get with a little effort now in PHP, and how much suffering you can avoid by just letting go (of what, admittedly, makes the language fun for some - it's raw, ugly, stupid simple quick-and-dirty hackability) and embracing structure. And open source code.
Simply add "why" or "how" on the beginning of sentence i.e. Why you want to be PHP developer? In marketing they are calling them "open questions", the question to which you have to answer with more than just yes or no
I will be the first to admit that Drupal does not have a low learning curve. (And you can blame me for some of that. Or a lot of that if you wish :P)
But oversaturated job market?? There has been a shortage of good developers ever since there was such a thing as Drupal-developer-as-a-job, at least a decade.
Drupal absolutely does NOT have a low learning curve. If you want to do anything beyond a basic configuration blog-style site, good luck finding developers who know how to deal with Drupal's internals, especially in the last version.
So anyone in here can give me a opinion, how i can improve myself as a worthy developer..
I am 22 years old fresh graduate and a ruby developer with currently 1 year experience, before i have learn node.js(express), php(cms, news site), db(sql,nosql)...
but i got a feel(*is it true?) that america, europe is getting a worthed salary as a programmer they are valued rather than here in my country i got around $6000/year with living cost $3600/year this is really a standart in my country. its really hurt me, so as a fellow programmer here can you guys give me a suggestion to improve my living?how bout emigrate?
An alternative to emigrating could be finding a local company working on projects for foreign clients. For example, I live in Eastern Europe and work for a company that deals 99% with clients from Denmark (Central Europe). I make significantly more than the average worker here does. Just be careful and make sure the company values quality and best practices over a quick buck.
I would suggest you to find a job in Singapore or even Malaysia. Browse http://startupjobs.asia/ and try to apply for jobs in countries around you.
After you have 3 to 5 years experience, try to emigrate to United States, Canada, News Zealand or a couple of good European countries. Germany, The Netherlands and Sweden off the top of my head. In the mean time, try to learn French or Spanish beside improving your English. It will give you much better advantages when you speak different languages.
that is what i aim for, unfortunetly some prefer local people so they didnot need to mess with working permit or anything,
for now i am looking for a post-graduate 1year study chance and give me 2-3years stay in that country did you know any of the country like that?, Thanks for the suggestion :)
My personal advise is to stop wasting your time with studying anymore. A lot of web agencies and startups do not care if you have a university degrees or not, they only care about your programming skills. Find a job in Singapore, Malaysia, Hong Kong, Taiwan, etc. If you look at http://www.startupjobs.asia/ you will see that a lot of startups welcome developers from other countries.
But then again, this is my personal advise. If you firmly decided to continue studying aboard, don't let a random stranger on internet change your mind. Good luck to you anyway!
I wouldn't recommend Zend (I find it rather resource heavy) - but rather Laravel or Symphony, CodeIgniter is also nice and extremely easy to learn - probably the lowest entry level that I can think of, but 2.0 is taking it's sweet time to come along so that's a huge downside, plus, Ellislab wants to sell the project...
Regarding CMS work, I have personally found that Magento is one of the best things to specialise in. Ecommerce is a huge market.
No, don't even think of learning CodeIgniter. Besides being pretty much dead (version 3 has been coming out for, what, about 2 years now?), it has terrible architecture. The superglobal singleton is just awful and will kill you slowly.
This. I don't understand why CodeIgniter gets mentioned in the same breath as Zend or Symphony, or any other fully-fledged framework. CI is, to start with, much smaller: it's tiny, the sort of thing you could knock out in a week. It also has deep-rooted architectural issues that are preventing some of the longest standing bugs being fixed (for example, take a look at the router). Lastly it's not anywhere near as modular as it purports to be, and the code and architecture quality is rather poor.
The only reason why I mentioned it is because it's extremely easy - for a beginner, it's not a bad choice because it doesn't overwhelm you. Take baby steps.
Just because something it easy does not make it the right choice.
Conversely, it is a bad choice because it teaches you bad practices and you will be forced to implement so many hacks on any reasonable sized project. Just don't use it.
I found CodeIgniter to be really useful for a self-taught, spaghetti-style PHP programmer. It is the only framework that most such programmers can grasp by themselves using tutorials and docs available online. Any other framework, and they would require a lot of hand-holding.
Switching from CI to something better later is really not that hard and it's much, much easier that learning one of the modern frameworks from scratch.
I'm talking about self-taught begginers without CS degree or working-in-a-large-team experience.
But then you're better off with something like Silex. It's tiny and easy to pick up, but you're using a solid software and along the way get familiar with Symfony components as well.
Even though CodeIgniter is indeed an easy framework to start with, I would not recommend it as it's quite an old concept and it's not being developed anymore. Laravel is more recent and not too difficult if you follow the nice docs. There's also plenty of nice articles online (especially in Tutsplus - code.tutsplus.com/search?utf8=✓&view=&search%5Bkeywords%5D=laravel&button=).
Indeed, it has a steep learning curve. I have been working with Magento from day 1, and I'm still learning new things. But additionally, another main reason why it pays more, is that the client is willing to pay more + will actively pay for updates since it's not just a regular boring website, but an actual online business.
I agree. Learn CodeIgniter first because it is easy. Once you create a couple of projects with CI, switch to Laravel (or Yii framework). CI is really good to get a grasp on MVC way of thinking, and learning Laravel later will make you appreciate all the features is has (and CI is missing).
Resource heavy? That's not the problem with ZF. The problem with ZF is that is was designed by committee. And it is built in a very class-centric style. Symfony also has a much larger community around it.
A big suggestion missing here is a CS degree. I like Steve Yegge's take on it[1]:
> The best tip is: go get a computer science degree. The more computer science you have, the better. You don't have to have a CS degree, but it helps. It doesn't have to be an advanced degree, but that helps too.
My own take on it is that most programming languages are like cars and the skill of driving computer science: if you can drive one car, you can learn to drive the other and with programming if you can program in one language you can probably program in the other. Knowing the fundamentals about computers, how information is represented as bits, how they store and process information, how they communicate over networks, how you can use them to solve problems like sorting, cache invalidation, etc is really important stuff that is orthogonal to learning a programming language. Personally if I am using programming language X at my job, and you have 0 experience with it, but are a good programmer, I may not give a shit and hire you anyways.
If you're going down the Drupal route you're just as likely to need Drupal 6 - one of the challenges in this market is there is a lot of legacy work to be done, so you often have to know two or three versions of the framework.
In the "Unicorn skills" section, you're as likely to need cPanel or Plesk as pure Linux skills (although having the latter will make the former much easier). I would also say you'll probably be using SVN and not git. Lastly, add FTP and SSH to the skills you'll need.
Does anyone have any good "tick-offs" that you'd ideally have to meet before you could be classified as a PHP Dev?
I had a look at the Zend certification link, and I know most of things on the list. It was surprising, because I wouldn't classify myself as a "dev" or anything even close to it. I learnt (and use) PHP via the "hack and see" method.
Drupal 8 incorporates quite a bit of Symfony, so learning Symfony starting now will probably open some Drupal doors in a year or two when 8 is stable and being heavily used.
Because finding a job is incredibly easy.
Because it pays well if you know your stuff.
Because you don't have to work with people who will judge you based on something as in-significant as what programming language you decide to use.
Stating that disliking/hating the mess that is wordpress makes someone an elitist is stupid and sounds like an apologist to me.
Would you call someone a ruby elitist because they embraced best practices and disliked/hated a project that refuses to embrace best practices and encourages bad practices?
Today the most important thing is Composer, not frameworks, especially to those who are just starting out. Learning a full framework is pointless if they just want to see the basics in action. Fabien Potencier's Create your own framework series [2] is really good for this: it shows how much you can do with just a couple of Symfony components and a front controller.
[1]: http://www.phptherightway.com/
[2]: http://fabien.potencier.org/article/53/create-your-own-frame...