PHP Notes for Professionals book

    Amazing collection of free programming books

    Collecting
    Free
    Amazing collection of free programming books

    The Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA. See credits at the end of this book whom contributed to the various chapters. Images may be copyright of their respective owners unless otherwise specified

    Book created for educational purposes and is not affiliated with group(s), company(s) nor Stack Overflow. All trademarks belong to their respective company owners

    https://goalkicker.com/

    Content

    1-1Content list
    1-2About
    1-3Chapter 1: Getting started with PHP
    1-4Section 1.1: HTML output from web server
    1-5Section 1.2: Hello, World!
    1-6Section 1.3: Non-HTML output from web server
    1-7Section 1.4: PHP built-in server
    1-8Section 1.5: PHP CLI
    1-9Section 1.6: Instruction Separation
    1-10Section 1.7: PHP Tags
    1-11Chapter 2: Variables
    1-12Section 2.1: Accessing A Variable Dynamically By Name (Variable variables)
    1-13Section 2.2: Data Types
    1-14Section 2.3: Global variable best practices
    1-15Section 2.4: Default values of uninitialized variables
    1-16Section 2.5: Variable Value Truthiness and Identical Operator
    1-17Chapter 3: Variable Scope
    1-18Section 3.1: Superglobal variables
    1-19Section 3.2: Static properties and variables
    1-20Section 3.3: User-defined global variables
    1-21Chapter 4: Superglobal Variables PHP
    1-22Section 4.1: Suberglobals explained
    1-23Section 4.2: PHP5 SuperGlobals
    1-24Chapter 5: Outputting the Value of a Variable
    1-25Section 5.1: echo and print
    1-26Section 5.2: Outputting a structured view of arrays and objects
    1-27Section 5.3: String concatenation with echo
    1-28Section 5.4: printf vs sprintf
    1-29Section 5.5: Outputting large integers
    1-30Section 5.6: Output a Multidimensional Array with index and value and print into the table
    1-31Chapter 6: Constants
    1-32Section 6.1: Defining constants
    1-33Section 6.2: Class Constants
    1-34Section 6.3: Checking if constant is defined
    1-35Section 6.4: Using constants
    1-36Section 6.5: Constant arrays
    1-37Chapter 7: Magic Constants
    1-38Section 7.1: Dierence between __FUNCTION__ and __METHOD__
    1-39Section 7.2: Dierence between __CLASS__, get_class() and get_called_class()
    1-40Section 7.3: File & Directory Constants
    1-41Chapter 8: Comments
    1-42Section 8.1: Single Line Comments
    1-43Section 8.2: Multi Line Comments
    1-44Chapter 9: Types
    1-45Section 9.1: Type Comparison
    1-46Section 9.2: Boolean
    1-47Section 9.3: Float
    1-48Section 9.4: Strings
    1-49Section 9.5: Callable
    1-50Section 9.6: Resources
    1-51Section 9.7: Type Casting
    1-52Section 9.8: Type Juggling
    1-53Section 9.9: Null
    1-54Section 9.10: Integers
    1-55Chapter 10: Operators
    1-56Section 10.1: Null Coalescing Operator (??)
    1-57Section 10.2: Spaceship Operator (<=>)
    1-58Section 10.3: Execution Operator (``)
    1-59Section 10.4: Incrementing (++) and Decrementing Operators (--)
    1-60Section 10.5: Ternary Operator (?:)
    1-61Section 10.6: Logical Operators (&&/AND and ||/OR)
    1-62Section 10.7: String Operators (. and .=)
    1-63Section 10.8: Object and Class Operators
    1-64Section 10.9: Combined Assignment (+= etc)
    1-65Section 10.10: Altering operator precedence (with parentheses)
    1-66Section 10.11: Basic Assignment (=)
    1-67Section 10.12: Association
    1-68Section 10.13: Comparison Operators
    1-69Section 10.14: Bitwise Operators
    1-70Section 10.15: instanceof (type operator)
    1-71Chapter 11: References
    1-72Section 11.1: Assign by Reference
    1-73Section 11.2: Return by Reference
    1-74Section 11.3: Pass by Reference
    1-75Chapter 12: Arrays
    1-76Section 12.1: Initializing an Array
    1-77Section 12.2: Check if key exists
    1-78Section 12.3: Validating the array type
    1-79Section 12.4: Creating an array of variables
    1-80Section 12.5: Checking if a value exists in array
    1-81Section 12.6: ArrayAccess and Iterator Interfaces
    1-82Chapter 13: Array iteration
    1-83Section 13.1: Iterating multiple arrays together
    1-84Section 13.2: Using an incremental index
    1-85Section 13.3: Using internal array pointers
    1-86Section 13.4: Using foreach
    1-87Section 13.5: Using ArrayObject Iterator
    1-88Chapter 14: Executing Upon an Array
    1-89Section 14.1: Applying a function to each element of an array
    1-90Section 14.2: Split array into chunks
    1-91Section 14.3: Imploding an array into string
    1-92Section 14.4: "Destructuring" arrays using list()
    1-93Section 14.5: array_reduce
    1-94Section 14.6: Push a Value on an Array
    1-95Chapter 15: Manipulating an Array
    1-96Section 15.1: Filtering an array
    1-97Section 15.2: Removing elements from an array
    1-98Section 15.3: Sorting an Array
    1-99Section 15.4: Whitelist only some array keys
    1-100Section 15.5: Adding element to start of array
    1-101Section 15.6: Exchange values with keys
    1-102Section 15.7: Merge two arrays into one array
    1-103Chapter 16: Processing Multiple Arrays Together
    1-104Section 16.1: Array intersection
    1-105Section 16.2: Merge or concatenate arrays
    1-106Section 16.3: Changing a multidimensional array to associative array
    1-107Section 16.4: Combining two arrays (keys from one, values from another)
    1-108Chapter 17: Datetime Class
    1-109Section 17.1: Create Immutable version of DateTime from Mutable prior PHP 5.6
    1-110Section 17.2: Add or Subtract Date Intervals
    1-111Section 17.3: getTimestamp
    1-112Section 17.4: setDate
    1-113Section 17.5: Create DateTime from custom format
    1-114Section 17.6: Printing DateTimes
    1-115Chapter 18: Working with Dates and Time
    1-116Section 18.1: Getting the dierence between two dates / times
    1-117Section 18.2: Convert a date into another format
    1-118Section 18.3: Parse English date descriptions into a Date format
    1-119Section 18.4: Using Predefined Constants for Date Format
    1-120Chapter 19: Control Structures
    1-121Section 19.1: if else
    1-122Section 19.2: Alternative syntax for control structures
    1-123Section 19.3: while
    1-124Section 19.4: do-while
    1-125Section 19.5: goto
    1-126Section 19.6: declare
    1-127Section 19.7: include & require
    1-128Section 19.8: return
    1-129Section 19.9: for
    1-130Section 19.10: foreach
    1-131Section 19.11: if elseif else
    1-132Section 19.12: if
    1-133Section 19.13: switch
    1-134Chapter 20: Loops
    1-135Section 20.1: continue
    1-136Section 20.2: break
    1-137Section 20.3: foreach
    1-138Section 20.4: do...while
    1-139Section 20.5: for
    1-140Section 20.6: while
    1-141Chapter 21: Functions
    1-142Section 21.1: Variable-length argument lists
    1-143Section 21.2: Optional Parameters
    1-144Section 21.3: Passing Arguments by Reference
    1-145Section 21.4: Basic Function Usage
    1-146Section 21.5: Function Scope
    1-147Chapter 22: Functional Programming
    1-148Section 22.1: Closures
    1-149Section 22.2: Assignment to variables
    1-150Section 22.3: Objects as a function
    1-151Section 22.4: Using outside variables
    1-152Section 22.5: Anonymous function
    1-153Section 22.6: Pure functions
    1-154Section 22.7: Common functional methods in PHP
    1-155Section 22.8: Using built-in functions as callbacks
    1-156Section 22.9: Scope
    1-157Section 22.10: Passing a callback function as a parameter
    1-158Chapter 23: Alternative Syntax for Control Structures
    1-159Section 23.1: Alternative if/else statement
    1-160Section 23.2: Alternative for statement
    1-161Section 23.3: Alternative while statement
    1-162Section 23.4: Alternative foreach statement
    1-163Section 23.5: Alternative switch statement
    1-164Chapter 24: String formatting
    1-165Section 24.1: String interpolation
    1-166Section 24.2: Extracting/replacing substrings
    1-167Chapter 25: String Parsing
    1-168Section 25.1: Splitting a string by separators
    1-169Section 25.2: Substring
    1-170Section 25.3: Searching a substring with strpos
    1-171Section 25.4: Parsing string using regular expressions
    1-172Chapter 26: Classes and Objects
    1-173Section 26.1: Class Constants
    1-174Section 26.2: Abstract Classes
    1-175Section 26.3: Late static binding
    1-176Section 26.4: Namespacing and Autoloading
    1-177Section 26.5: Method and Property Visibility
    1-178Section 26.6: Interfaces
    1-179Section 26.7: Final Keyword
    1-180Section 26.8: Autoloading
    1-181Section 26.9: Calling a parent constructor when instantiating a child
    1-182Section 26.10: Dynamic Binding
    1-183Section 26.11: $this, self and static plus the singleton
    1-184Section 26.12: Defining a Basic Class
    1-185Section 26.13: Anonymous Classes
    1-186Chapter 27: Namespaces
    1-187Section 27.1: Declaring namespaces
    1-188Section 27.2: Referencing a class or function in a namespace
    1-189Section 27.3: Declaring sub-namespaces
    1-190Section 27.4: What are Namespaces?
    1-191Chapter 28: Sessions
    1-192Section 28.1: session_start() Options
    1-193Section 28.2: Session Locking
    1-194Section 28.3: Manipulating session data
    1-195Section 28.4: Destroy an entire session
    1-196Section 28.5: Safe Session Start With no Errors
    1-197Section 28.6: Session name
    1-198Chapter 29: Cookies
    1-199Section 29.1: Modifying a Cookie
    1-200Section 29.2: Setting a Cookie
    1-201Section 29.3: Checking if a Cookie is Set
    1-202Section 29.4: Removing a Cookie
    1-203Section 29.5: Retrieving a Cookie
    1-204Chapter 30: Output Buering
    1-205Section 30.1: Basic usage getting content between buers and clearing
    1-206Section 30.2: Processing the buer via a callback
    1-207Section 30.3: Nested output buers
    1-208Section 30.4: Running output buer before any content
    1-209Section 30.5: Stream output to client
    1-210Section 30.6: Using Output buer to store contents in a file, useful for reports, invoices etc
    1-211Section 30.7: Typical usage and reasons for using ob_start
    1-212Section 30.8: Capturing the output buer to re-use later
    1-213Chapter 31: JSON
    1-214Section 31.1: Decoding a JSON string
    1-215Section 31.2: Encoding a JSON string
    1-216Section 31.3: Debugging JSON errors
    1-217Section 31.4: Using JsonSerializable in an Object
    1-218Section 31.5: Header json and the returned response
    1-219Chapter 32: SOAP Client
    1-220Section 32.1: WSDL Mode
    1-221Section 32.2: Non-WSDL Mode
    1-222Section 32.3: Classmaps
    1-223Section 32.4: Tracing SOAP request and response
    1-224Chapter 33: Using cURL in PHP
    1-225Section 33.1: Basic Usage (GET Requests)
    1-226Section 33.2: POST Requests
    1-227Section 33.3: Using Cookies
    1-228Section 33.4: Using multi_curl to make multiple POST requests
    1-229Section 33.5: Sending multi-dimensional data and multiple files with CurlFile in one request
    1-230Section 33.6: Creating and sending a request with a custom method
    1-231Section 33.7: Get and Set custom http headers in php
    1-232Chapter 34: Reflection
    1-233Section 34.1: Feature detection of classes or objects
    1-234Section 34.2: Testing private/protected methods
    1-235Section 34.3: Accessing private and protected member variables
    1-236Chapter 35: Dependency Injection
    1-237Section 35.1: Constructor Injection
    1-238Section 35.2: Setter Injection
    1-239Section 35.3: Container Injection
    1-240Chapter 36: XML
    1-241Section 36.1: Create a XML using DomDocument
    1-242Section 36.2: Read a XML document with DOMDocument
    1-243Section 36.3: Leveraging XML with PHP's SimpleXML Library
    1-244Section 36.4: Create an XML file using XMLWriter
    1-245Section 36.5: Read a XML document with SimpleXML
    1-246Chapter 37: SimpleXML
    1-247Section 37.1: Loading XML data into simplexml
    1-248Chapter 38: Parsing HTML
    1-249Section 38.1: Parsing HTML from a string
    1-250Section 38.2: Using XPath
    1-251Section 38.3: SimpleXML
    1-252Chapter 39: Regular Expressions (regexp/PCRE)
    1-253Section 39.1: Global RegExp match
    1-254Section 39.2: String matching with regular expressions
    1-255Section 39.3: Split string into array by a regular expression
    1-256Section 39.4: String replacing with regular expression
    1-257Section 39.5: String replace with callback
    1-258Chapter 40: Traits
    1-259Section 40.1: What is a Trait?
    1-260Section 40.2: Traits to facilitate horizontal code reuse
    1-261Section 40.3: Conflict Resolution
    1-262Section 40.4: Implementing a Singleton using Traits
    1-263Section 40.5: Traits to keep classes clean
    1-264Section 40.6: Multiple Traits Usage
    1-265Section 40.7: Changing Method Visibility
    1-266Chapter 41: Composer Dependency Manager
    1-267Section 41.1: What is Composer?
    1-268Section 41.2: Autoloading with Composer
    1-269Section 41.3: Dierence between 'composer install' and 'composer update'
    1-270Section 41.4: Composer Available Commands
    1-271Section 41.5: Benefits of Using Composer
    1-272Section 41.6: Installation
    1-273Chapter 42: Magic Methods
    1-274Section 42.1: __call() and __callStatic()
    1-275Section 42.2: __get(), __set(), __isset() and __unset()
    1-276Section 42.3: __construct() and __destruct()
    1-277Section 42.4: __toString()
    1-278Section 42.5: __clone()
    1-279Section 42.6: __invoke()
    1-280Section 42.7: __sleep() and __wakeup()
    1-281Section 42.8: __debugInfo()
    1-282Chapter 43: File handling
    1-283Section 43.1: Convenience functions
    1-284Section 43.2: Deleting files and directories
    1-285Section 43.3: Getting file information
    1-286Section 43.4: Stream-based file IO
    1-287Section 43.5: Moving and Copying files and directories
    1-288Section 43.6: Minimize memory usage when dealing with large files
    1-289Chapter 44: Streams
    1-290Section 44.1: Registering a stream wrapper
    1-291Chapter 45: Type hinting
    1-292Section 45.1: Type hinting classes and interfaces
    1-293Section 45.2: Type hinting scalar types, arrays and callables
    1-294Section 45.3: Nullable type hints
    1-295Section 45.4: Type hinting generic objects
    1-296Section 45.5: Type Hinting No Return(Void)
    1-297Chapter 46: Filters & Filter Functions
    1-298Section 46.1: Validating Boolean Values
    1-299Section 46.2: Validating A Number Is A Float
    1-300Section 46.3: Validate A MAC Address
    1-301Section 46.4: Sanitze Email Addresses
    1-302Section 46.5: Sanitize Integers
    1-303Section 46.6: Sanitize URLs
    1-304Section 46.7: Validate Email Address
    1-305Section 46.8: Validating A Value Is An Integer
    1-306Section 46.9: Validating An Integer Falls In A Range
    1-307Section 46.10: Validate a URL
    1-308Section 46.11: Sanitize Floats
    1-309Section 46.12: Validate IP Addresses
    1-310Section 46.13: Sanitize filters
    1-311Chapter 47: Generators
    1-312Section 47.1: The Yield Keyword
    1-313Section 47.2: Reading a large file with a generator
    1-314Section 47.3: Why use a generator?
    1-315Section 47.4: Using the send()-function to pass values to a generator
    1-316Chapter 48: UTF-8
    1-317Section 48.1: Input
    1-318Section 48.2: Output
    1-319Section 48.3: Data Storage and Access
    1-320Chapter 49: Unicode Support in PHP
    1-321Section 49.1: Converting Unicode characters to “\uxxxx” format using PHP
    1-322Section 49.2: Converting Unicode characters to their numeric value and/or HTML entities using PHP
    1-323Section 49.3: Intl extention for Unicode support
    1-324Chapter 50: URLs
    1-325Section 50.1: Parsing a URL
    1-326Section 50.2: Build an URL-encoded query string from an array
    1-327Section 50.3: Redirecting to another URL
    1-328Chapter 51: How to break down an URL
    1-329Section 51.1: Using parse_url()
    1-330Section 51.2: Using explode()
    1-331Section 51.3: Using basename()
    1-332Chapter 52: Object Serialization
    1-333Section 52.1: Serialize / Unserialize
    1-334Section 52.2: The Serializable interface
    1-335Chapter 53: Serialization
    1-336Section 53.1: Serialization of dierent types
    1-337Section 53.2: Security Issues with unserialize
    1-338Chapter 54: Closure
    1-339Section 54.1: Basic usage of a closure
    1-340Section 54.2: Using external variables
    1-341Section 54.3: Basic closure binding
    1-342Section 54.4: Closure binding and scope
    1-343Section 54.5: Binding a closure for one call
    1-344Section 54.6: Use closures to implement observer pattern
    1-345Chapter 55: Reading Request Data
    1-346Section 55.1: Reading raw POST data
    1-347Section 55.2: Reading POST data
    1-348Section 55.3: Reading GET data
    1-349Section 55.4: Handling file upload errors
    1-350Section 55.5: Passing arrays by POST
    1-351Section 55.6: Uploading files with HTTP PUT
    1-352Chapter 56: Type juggling and Non-Strict Comparison Issues
    1-353Section 56.1: What is Type Juggling?
    1-354Section 56.2: Reading from a file
    1-355Section 56.3: Switch surprises
    1-356Section 56.4: Strict typing
    1-357Chapter 57: Sockets
    1-358Section 57.1: TCP client socket
    1-359Section 57.2: TCP server socket
    1-360Section 57.3: UDP server socket
    1-361Section 57.4: Handling socket errors
    1-362Chapter 58: PDO
    1-363Section 58.1: Preventing SQL injection with Parameterized Queries
    1-364Section 58.2: Basic PDO Connection and Retrieval
    1-365Section 58.3: Database Transactions with PDO
    1-366Section 58.4: PDO: connecting to MySQL/MariaDB server
    1-367Section 58.5: PDO: Get number of aected rows by a query
    1-368Section 58.6: PDO::lastInsertId()
    1-369Chapter 59: PHP MySQLi
    1-370Section 59.1: Close connection
    1-371Section 59.2: MySQLi connect
    1-372Section 59.3: Loop through MySQLi results
    1-373Section 59.4: Prepared statements in MySQLi
    1-374Section 59.5: Escaping Strings
    1-375Section 59.6: Debugging SQL in MySQLi
    1-376Section 59.7: MySQLi query
    1-377Section 59.8: How to get data from a prepared statement
    1-378Section 59.9: MySQLi Insert ID
    1-379Chapter 60: SQLite3
    1-380Section 60.1: SQLite3 Quickstart Tutorial
    1-381Section 60.2: Querying a database
    1-382Section 60.3: Retrieving only one result
    1-383Chapter 61: Using MongoDB
    1-384Section 61.1: Connect to MongoDB
    1-385Section 61.2: Get multiple documents - find()
    1-386Section 61.3: Get one document - findOne()
    1-387Section 61.4: Insert document
    1-388Section 61.5: Update a document
    1-389Section 61.6: Delete a document
    1-390Chapter 62: mongo-php
    1-391Section 62.1: Everything in between MongoDB and Php
    1-392Chapter 63: Using Redis with PHP
    1-393Section 63.1: Connecting to a Redis instance
    1-394Section 63.2: Installing PHP Redis on Ubuntu
    1-395Section 63.3: Executing Redis commands in PHP
    1-396Chapter 64: Sending Email
    1-397Section 64.1: Sending Email - The basics, more details, and a full example
    1-398Section 64.2: Sending HTML Email Using mail()
    1-399Section 64.3: Sending Email With An Attachment Using mail()
    1-400Section 64.4: Sending Plain Text Email Using PHPMailer
    1-401Section 64.5: Sending HTML Email Using PHPMailer
    1-402Section 64.6: Sending Email With An Attachment Using PHPMailer
    1-403Section 64.7: Sending Plain Text Email Using Sendgrid
    1-404Section 64.8: Sending Email With An Attachment Using Sendgrid
    1-405Chapter 65: Using SQLSRV
    1-406Section 65.1: Retrieving Error Messages
    1-407Section 65.2: Fetching Query Results
    1-408Section 65.3: Creating a Connection
    1-409Section 65.4: Making a Simple Query
    1-410Section 65.5: Invoking a Stored Procedure
    1-411Section 65.6: Making a Parameterised Query
    1-412Chapter 66: Command Line Interface (CLI)
    1-413Section 66.1: Handling Program Options
    1-414Section 66.2: Argument Handling
    1-415Section 66.3: Input and Output Handling
    1-416Section 66.4: Return Codes
    1-417Section 66.5: Restrict script execution to command line
    1-418Section 66.6: Behavioural dierences on the command line
    1-419Section 66.7: Running your script
    1-420Section 66.8: Edge Cases of getopt()
    1-421Section 66.9: Running built-in web server
    1-422Chapter 67: Localization
    1-423Section 67.1: Localizing strings with gettext()
    1-424Chapter 68: Headers Manipulation
    1-425Section 68.1: Basic Setting of a Header
    1-426Chapter 69: Coding Conventions
    1-427Section 69.1: PHP Tags
    1-428Chapter 70: Asynchronous programming
    1-429Section 70.1: Advantages of Generators
    1-430Section 70.2: Using Icicle event loop
    1-431Section 70.3: Spawning non-blocking processes with proc_open()
    1-432Section 70.4: Reading serial port with Event and DIO
    1-433Section 70.5: HTTP Client Based on Event Extension
    1-434Section 70.6: HTTP Client Based on Ev Extension
    1-435Section 70.7: Using Amp event loop
    1-436Chapter 71: How to Detect Client IP Address
    1-437Section 71.1: Proper use of HTTP_X_FORWARDED_FOR
    1-438Chapter 72: Create PDF files in PHP
    1-439Section 72.1: Getting Started with PDFlib
    1-440Chapter 73: YAML in PHP
    1-441Section 73.1: Installing YAML extension
    1-442Section 73.2: Using YAML to store application configuration
    1-443Chapter 74: Image Processing with GD
    1-444Section 74.1: Image output
    1-445Section 74.2: Creating an image
    1-446Section 74.3: Image Cropping and Resizing
    1-447Chapter 75: Imagick
    1-448Section 75.1: First Steps
    1-449Section 75.2: Convert Image into base64 String
    1-450Chapter 76: SOAP Server
    1-451Section 76.1: Basic SOAP Server
    1-452Chapter 77: Machine learning
    1-453Section 77.1: Classification using PHP-ML
    1-454Section 77.2: Regression
    1-455Section 77.3: Clustering
    1-456Chapter 78: Cache
    1-457Section 78.1: Caching using memcache
    1-458Section 78.2: Cache Using APC Cache
    1-459Chapter 79: Autoloading Primer
    1-460Section 79.1: Autoloading as part of a framework solution
    1-461Section 79.2: Inline class definition, no loading required
    1-462Section 79.3: Manual class loading with require
    1-463Section 79.4: Autoloading replaces manual class definition loading
    1-464Section 79.5: Autoloading with Composer
    1-465Chapter 80: SPL data structures
    1-466Section 80.1: SplFixedArray
    1-467Chapter 81: IMAP
    1-468Section 81.1: Connecting to a mailbox
    1-469Section 81.2: Install IMAP extension
    1-470Section 81.3: List all folders in the mailbox
    1-471Section 81.4: Finding messages in the mailbox
    1-472Chapter 82: HTTP Authentication
    1-473Section 82.1: Simple authenticate
    1-474Chapter 83: WebSockets
    1-475Section 83.1: Simple TCP/IP server
    1-476Chapter 84: BC Math (Binary Calculator)
    1-477Section 84.1: Using bcmath to read/write a binary long on 32-bit system
    1-478Section 84.2: Comparison between BCMath and float arithmetic operations
    1-479Chapter 85: Docker deployment
    1-480Section 85.1: Get docker image for php
    1-481Section 85.2: Writing dockerfile
    1-482Section 85.3: Building image
    1-483Section 85.4: Starting application container
    1-484Chapter 86: APCu
    1-485Section 86.1: Iterating over Entries
    1-486Section 86.2: Simple storage and retrieval
    1-487Section 86.3: Store information
    1-488Chapter 87: PHP Built in server
    1-489Section 87.1: Running the built in server
    1-490Section 87.2: built in server with specific directory and router script
    1-491Chapter 88: PSR
    1-492Section 88.1: PSR-4: Autoloader
    1-493Section 88.2: PSR-1: Basic Coding Standard
    1-494Chapter 89: PHPDoc
    1-495Section 89.1: Describing a variable
    1-496Section 89.2: Adding metadata to functions
    1-497Section 89.3: Describing parameters
    1-498Section 89.4: Collections
    1-499Section 89.5: Adding metadata to files
    1-500Section 89.6: Inheriting metadata from parent structures
    1-501Chapter 90: Design Patterns
    1-502Section 90.1: Method Chaining in PHP
    1-503Chapter 91: Compile PHP Extensions
    1-504Section 91.1: Compiling on Linux
    1-505Chapter 92: Common Errors
    1-506Section 92.1: Call fetch_assoc on boolean
    1-507Section 92.2: Unexpected $end
    1-508Chapter 93: Compilation of Errors and Warnings
    1-509Section 93.1: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
    1-510Section 93.2: Notice: Undefined index
    1-511Section 93.3: Warning: Cannot modify header information - headers already sent
    1-512Chapter 94: Exception Handling and Error Reporting
    1-513Section 94.1: Setting error reporting and where to display them
    1-514Section 94.2: Logging fatal errors
    1-515Chapter 95: Debugging
    1-516Section 95.1: Dumping variables
    1-517Section 95.2: Displaying errors
    1-518Section 95.3: phpinfo()
    1-519Section 95.4: Xdebug
    1-520Section 95.5: Error Reporting (use them both)
    1-521Section 95.6: phpversion()
    1-522Chapter 96: Unit Testing
    1-523Section 96.1: Testing class rules
    1-524Section 96.2: PHPUnit Data Providers
    1-525Section 96.3: Test exceptions
    1-526Chapter 97: Performance
    1-527Section 97.1: Profiling with Xdebug
    1-528Section 97.2: Memory Usage
    1-529Section 97.3: Profiling with XHProf
    1-530Chapter 98: Multiprocessing
    1-531Section 98.1: Multiprocessing using built-in fork functions
    1-532Section 98.2: Creating child process using fork
    1-533Section 98.3: Inter-Process Communication
    1-534Chapter 99: Multi Threading Extension
    1-535Section 99.1: Getting Started
    1-536Section 99.2: Using Pools and Workers
    1-537Chapter 100: Secure Remeber Me
    1-538Section 100.1: “Keep Me Logged In” - the best approach
    1-539Chapter 101: Security
    1-540Section 101.1: PHP Version Leakage
    1-541Section 101.2: Cross-Site Scripting (XSS)
    1-542Section 101.3: Cross-Site Request Forgery
    1-543Section 101.4: Command Line Injection
    1-544Section 101.5: Stripping Tags
    1-545Section 101.6: File Inclusion
    1-546Section 101.7: Error Reporting
    1-547Section 101.8: Uploading files
    1-548Chapter 102: Cryptography
    1-549Section 102.1: Symmetric Encryption and Decryption of large Files with OpenSSL
    1-550Section 102.2: Symmetric Cipher
    1-551Chapter 103: Password Hashing Functions
    1-552Section 103.1: Creating a password hash
    1-553Section 103.2: Determine if an existing password hash can be upgraded to a stronger algorithm
    1-554Section 103.3: Verifying a password against a hash
    1-555Chapter 104: Contributing to the PHP Manual
    1-556Section 104.1: Improve the ocial documentation
    1-557Section 104.2: Tips for contributing to the manual
    1-558Chapter 105: Contributing to the PHP Core
    1-559Section 105.1: Setting up a basic development environment
    1-560Appendix A: Installing a PHP environment on Windows
    1-561Section A.1: Download, Install and use WAMP
    1-562Section A.2: Install PHP and use it with IIS
    1-563Section A.3: Download and Install XAMPP
    1-564Appendix B: Installing on Linux/Unix Environments
    1-565Section B.1: Command Line Install Using APT for PHP 7
    1-566Section B.2: Installing in Enterprise Linux distributions (CentOS, Scientific Linux, etc)
    1-567Credits
    1-568You may also like

    FAQ

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    Recommendations

    Reviews

    | Collecting

    Sales Plans