PHP Programming
Jump to navigation
Jump to search
THIS IS A DRAFT
This text may not be complete.
PHP Programming Training Materials
IMPORTANT NOTE for trainers only: Please DO NOT change these materials, especially the EXERCISES, without direct permission from: LUKASZ SOKOLOWSKI.
Copyright Notice
Copyright © 2004-2025 by NobleProg Limited All rights reserved.
This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise.
Intro
PHP
- general-purpose scripting language
- especially suited to web development
- fast, flexible and pragmatic
- powers everything from simple blog to the corporate organisations
Intro con't
PHP - recursive acronym for PHP: Hypertext Preprocessor
- widely-used open source language
- can be embedded into HTML
- code is executed on the server, generating HTML which is then sent to the client
- extremely simple, yet offers many advanced features
PHP can
- collect form data
- generate dynamic page content
- send and receive cookies
- so in general - server-side scripting
- whats needed? - the PHP parser (CGI or server module), a web server, and a web browser
- be used on all major operating systems
- support most of the web servers (Apache, IIS, lighttpd, nginx, etc)
- support talking to other services - LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (on Windows)
- work as either a module, or as a CGI processor
- do procedural programming or object-oriented programming (OOP), or a mixture of them both
PHP can con't
- also do command line scripting
- run without any server or browser - only the PHP parser is needed
- ideal for scripts regularly executed using cron (on Unix or macOS) or Task Scheduler (on Windows)
- so ie. do simple/stronger text processing tasks - Perl regexps (PCRE), etc
- output HTML, images, PDF, encrypted data, emails, JSON, XML (libxml2, SimpleXML, XMLReader, XMLWriter; XDebug)
- auto generate these files, and save them in the file system, instead of printing it out, forming a server-side cache for dynamic content
- support a wide range of databases
- via db specific ext, or abstraction layers (like PDO), or ODBC, cURL, sockets (CouchDB)
- support the WDDX complex data exchange
- instantiate Java objects and use them transparently as own objects
Data Structures (refresher only)
- Associative arrays
- Session variables, global variables, cookies
- Date
- File and File Upload
- Cookies and Sessions
- Error Handling
- Exceptions Handling
- PHP Filter
- Helpers
Examples and exercises
- localhost/phpWay
PHP XML
- SimpleXML
- Expat Parser - event-based
- XML DOM
- XML Reader
- https://www.php.net/XMLReader
- iterators helper - https://github.com/hakre/XMLReaderIterator
Examples and exercises
- localhost/ws_
Using Databases
- Methods of data storing
- PDO extension
- Connecting to a database using PDO
- Operations on data
- Error Handling PDO
- Transactions
- Primary keys
- Joins
- Aggregate functions and grouping
- connect to the database
- storing passwords
- executing queries
- processing data
- modifying and removing data
- binding form to records in the database
- Helpers
Examples and exercises
- localhost/phpWay
- localhost/ws_
- localhost/wordpress
Programming interfaces
- Architecture services
- Adding to the system API
- The data format JSON and XML
- RESTful Services
- Designing Web Service
Examples and exercises
- WebServices
- localhost/ws_
Object-Oriented Programming
- Terminology Object
- Declaring classes and constructors
- Creating and Using Objects
- Properties and methods
- Inheritance
- Access modifiers
- Magic methods
- Declaring and using interfaces
- exception Handling
- Helpers
Examples and exercises
- localhost/ws_
- localhost/wordpress
Dealing with Images
- GD Library and alternatives
- Exif - image meta data only
Examples and Exercises
- localhost/mw - enable GD and check how mw uses Image thumbnailing
Design Patterns, PSRs
- What are design patterns
- Singleton Pattern
- Factory Pattern
- MVC model-view-controller
- Helpers
Examples and exercises
- localhost/ws_
- localhost/wordpress
Efficiency
- Research applications performance
- Code cache
- built-in opcache (since ver 5)
- APCu, Memcached, Redis, WinCache
- Helpers
Examples and exercises
- localhost/wm - install wm and enable APCu
Safety
- Filtering input
- Session fixation
- Session hijacking
- SQL injection
- Storing passwords
- SSL
Security
- authorization and authentication
- using cookies and sessions
- OAUTH - https://oauth.net/2/
- JWT - https://www.rfc-editor.org/info/rfc7519
- Demo - https://jwt.io/
- Popular lib - https://github.com/firebase/php-jwt
Stacks and Frameworks - lamp, wamp, etc
- wordpress
- drupal
- symfony
- Laravel: A PHP framework known for its clean architecture and robust features, including database agnostic migrations, ORM, routing, and authentication tools.
- Zend Framework: An open-source framework for developing web applications and services using PHP.
wp
- wp-env
- ddev
- vvv
- xampp
- mamp
- local
wp con't
wp API refs