Skip to content

nccasia/ncc-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ncc-php

The big picture

PHP is a server-side scripting language that is primarily used for web development. Some common areas where PHP is used include:

  1. Web development: PHP is a popular choice for building dynamic web applications and websites. It is often used in combination with HTML, CSS, and JavaScript to create interactive and user-friendly web pages.
  2. Content Management Systems (CMS): PHP is the language behind many popular open-source CMS such as WordPress, Joomla and Drupal.
  3. E-commerce: PHP is a common choice for building online stores and e-commerce platforms.
  4. Web scraping and data mining: PHP can be used to extract data from websites and to automate various data mining tasks.

A senior PHP developer should have a strong understanding of the following:

  1. PHP language fundamentals such as variables, data types, loops, control structures, functions, and namespaces.
  2. Object-oriented programming concepts such as classes, interfaces, inheritance, and polymorphism.
  3. Advanced PHP features such as closures, generators, and traits.
  4. PHP web development frameworks such as Laravel, Symphony, CodeIgniter, and Yii.
  5. Database management and integration, including experience with SQL and popular PHP database libraries such as PDO and MySQLi.
  6. Web development best practices such as security, performance optimization, and scalability.
  7. Experience with version control systems such as Git.
  8. Understanding of web protocols such as HTTP, HTTPS, and REST.
  9. Familiarity with front-end web development technologies such as HTML, CSS, and JavaScript.
  10. Familiarity with software development methodologies such as Agile, Scrum, and Kanban.
  11. Good understanding of software development life cycle (SDLC)
  12. Familiarity with cloud infrastructure like AWS, Azure, and Google Cloud.
  13. Knowledge of Linux environment
  14. Experience with debugging and troubleshooting complex issues.
  15. Strong problem-solving skills and ability to think critically.
  16. Good communication skills and ability to work well in a team.
  17. Ability to learn and adapt to new technologies and programming languages quickly
  18. Continuously learning and staying current with new trends and developments in PHP and related technologies.

Note that this is not an exhaustive list, but it covers many of the core skills and knowledge areas that are typically required of a senior PHP developer.

Before starting

  • This repository is using for training purpose (1 - 4 weeks for a newbie)
  • It is written in Markdown format
  • Feel free to edit by creating a pull request

Basic Topics:

  1. Chapter 01: Necessary Knowledge Base
  2. Chapter 02: OOP, design patterns
  3. Chapter 03: Development tools
  4. Chapter 04: Laravel framework
  5. Chapter 05: MVC and API Restful
  6. Chapter 06: Unit test
  7. Chapter 07: SOLID principles
  8. Chapter 08: Standards PSR, Coding styles, Auto Loading
  9. Chapter 09: Docker, Github actions, working rules, tips and trick for a developer

Other topics:

  1. Postman usage
  2. Debugging
  3. Basic Linux commands
  4. Web servers
  5. SQL Databases: Design, Queries, Indexes, using ORM Eloquent
  6. DDD - domain driven design
  7. Web Securities
  8. How a browser works
  9. Authentication - Session, Cookies, JSON Web token
  10. NoSQL databases
  11. Realtime application
  12. Role and permission
  13. NCC React Basic
  14. Other Interview questions

Useful Links:

  1. https://github.com/odan/learn-php
  2. https://github.com/php-school/learn-you-php
  3. https://phptherightway.com/
  4. https://github.com/marcelgsantos/learning-oop-in-php

Project for practicing:

  1. Create a basic blog using the Laravel framework.
  2. Create an authentication system with user registration, login, and logout.
  3. Create a blog post CRUD system.
  4. Create a comment system for blog posts.
  5. Create a search feature to search through blog posts - use a search engine such as Elastic search
  6. Add a tagging system.
  7. Create an admin panel to manage blog posts, comments and tags.
  8. Create a user profile page with user information.
  9. Add 3rd party integration for authentication and sharing.
  10. Add the project into a docker compose
  11. Cover the project with unittest and functional tests
  12. Deploy on a platform as a service (PaaS) such as heroku

Blog project Example:

  1. https://github.com/guillaumebriday/laravel-blog
  2. https://github.com/juzaweb/juzacms
  3. https://github.com/mariocoski/laravel-blogger

Docker project Example:

  1. https://github.com/aschmelyun/docker-compose-laravel
  2. https://github.com/supermavster/docker-laravel-8