I want to immediately make a reservation this article that reflects my own opinion on this issue based on personal experience and does not pretend to absolute accuracy. It is written for those who either only think about the career of a php programmer or think to study further.
Below I will try to present my point of view on the list of languages, software and technologies that a php programmer needs to know in order to qualify for a well-paid job. I will make a reservation right away that I will not give references to any educational materials, I will not give the terms that will be needed for the study, and I will not even be able to even approximately estimate what kind of salary you can count on having mastered one or another list.
')
CoreWell, here in itself it is clear that if you plan to become a PHP programmer, then PHP is just what you need to know and as best you can. Regarding the version of PHP, which is worth studying - I think that at the moment there is no sense to start with the version below PHP 5.0, you can hardly find a vacancy somewhere where you will need to work on the version below this one.
As for the depth of knowledge in this language, the deeper and more voluminous they are, the better, respectively, because This is your main work tool. About what specifically to study and in what sequence you can easily find information on the Internet, I can only say that you definitely need to study the implementation of the PLO, because most of the frameworks and CMS are written using this paradigm. It will also be useful to read about the design patterns, in particular, about MVC.
Data storeUnlikely knowing only one PHP language, you can find a decent job. The bulk of vacancies requires a programmer to have the knowledge and ability to work with one of the most common data warehouse. At the moment, the choice of various software for data storage is quite large, although in my opinion for a php programmer, MySQL has always been the most demanded DBMS. I'm not in any way trying to diminish the merits of other DBMSs, but MySQL appears to be in the bulk of vacancies.
As for the version, then again it is worth studying MySQl from version 5.0 and higher.
On this topic on the Internet you can also find a lot of information to study, from myself I want to focus only on the need to study how to optimize both the database structure itself and queries to its tables.
HTML + CSSBasic knowledge of these things in any case need php programmer. Let php is a server language, but it is mainly associated with the generation of HTML pages with CSS styles, so basic knowledge is still needed.
JavascriptIt would seem that this client programming language certainly goes beyond the field of compulsory knowledge of a php programmer, but again the market dictates the exact opposite. In various vacancies that I have met, the level of knowledge in this language varies, but in almost all of them it is obligatory.
What I would personally recommend from myself - after you become familiar with the basic syntax of this language, go straight to learning one of the common frameworks, I would advise you to choose between JQuery and ExtJS. Basically, these two frameworks appear in vacancies.
OSThis is again my personal opinion, which is based on experience and logic. Since most servers for hosting sites written in php are running * nix (Linux or Unix), then it would be better to know this operating system. Personally, I have been installing Linux Ubuntu on my computer for a long time. At the moment, this distribution is all done in such a way that the installation and configuration of LAMP does not cause any difficulties at all.
After you install and configure LAMP on your computer, I advise you to learn the basic commands for working on the command line: working with users and user groups * nix, working with files and directories, working with editors vi, vim, working in the file manager Midnight Commander , working with the cron daemon scheduler.
Web serverI think that I will not be mistaken if I say that at the moment Apache still remains the most common web server. It seems to me that the easiest way to start is with him. Although there is no point in exploring in depth its fine tuning, since in terms of performance, the best choice is the Ngix + php-fpm bundle.
AdditionallyBelow is a list of what I would recommend to pay attention to a serious php (and not only) programmer:
1. PHP frameworks - at the moment, very rarely in vacancies does not indicate knowledge of one or more PHP frameworks. The following are in general demand: ZendFramework, Yii, Code Igniter, Symfony and Kohana. I like best Yii.
2. Software for data caching, for example: Memcached, Redis, etc.
3. Software for caching bytecode php scripts, for example: eAccelerator, XCache, etc.
4. NoSQL databases, for example: MongoDB, CouchDB, Redis, etc.
5. English, at least sufficiently to read English-language documentation without a dictionary.
Advanced teamworkImportant things for successful teamwork:
1. Coding Standards is a very important thing. In general, this is the correct and easy-to-read design of your code.
2. Convenient and properly configured editor. Regarding the correct settings, I personally mean only the correct encoding of files and indents in the form of tabs.
3. Ability to work with one of the most common version control systems. For example: svn or git.
4. Experience with any software for organizing the work of the team for setting tasks / errors, tracking time spent, etc. It will also be a plus. Typically, this software is called project management, as an example, Jira.
Additionally, to work in freelance mode1. If you are supposed to work alone, then you will not be able to do without at least a basic knowledge of graphic programs, such as Photoshop. You will also need more in-depth knowledge of HTML + CSS in order for you to be able to do cross-browser layout.
2. The bulk of orders will most likely consist in correcting or adding functionality of common CMS, such as: wordpress, Joomla, Drupal, DLE or Bitrix. If you focus on small and medium orders, then you hardly need to know any of the frameworks listed above.
ConclusionWell, almost everything I wanted to say about this topic. I hope that the article will be useful. Thanks for attention.