Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
PHP: The Good Parts
Peter B. MacIntyre
Beijing
•
Cambridge
•
Farnham
•
Köln
•
Sebastopol
•
Taipei
•
Tokyo
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
PHP: The Good Parts
by Peter B. MacIntyre
Copyright © 2010 Peter B. MacIntyre. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly
books may be purchased for educational, business, or sales promotional use. Online editions
are also available for most titles (). For more information, contact our
corporate/institutional sales department: 800-998-9938 or
Editor: Julie Steele
Production Editor: Adam Zaremba
Copyeditor: Amy Thomson
Proofreader: Adam Zaremba
Indexer: Seth Maislin
Cover Designer: Karen Montgomery
Interior Designer: David Futato
Illustrator: Robert Romano
Printing History:
April 2010:
First Edition.
Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of
O’Reilly
Media, Inc. PHP: The Good Parts, the image of a Booted Racket-tail, and related trade dress are
trademarks of O’Reilly Media, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a
trademark claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher and author assume
no responsibility for errors or omissions, or for damages resulting from the use of the information con-
tained herein.
TM
This book uses RepKover™, a durable and flexible lay-flat binding.
ISBN: 978-0-596-80437-4
[M]
1270572274
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
I dedicate this book to my wonderful wife,
Dawn Etta Riley.
I love you!
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Table of Contents
Foreword .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
1. The Good Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Why PHP? 1
A Brief History of PHP 1
PHP’s Place in the World 2
What Is PHP? 2
What Has Been Accomplished with PHP? 2
Basic PHP Setup 3
2. Casing the Joint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Whitespace, Comments, and Basic Syntax 7
Variables: Data Types, Loose Typing, and Scope 9
Defined Constants 11
Expressions 13
Decisions, Decisions (Flow Control) 13
If...Else... 14
Switch...Case... 16
While... 18
For 19
Integration with Web Pages 19
Cookies 20
Sessions 21
$_GET 22
$_POST 23
$_REQUEST 24
3. Functions (Doing It Once) .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Parameter Passing 27
v
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Default Parameters 29
Passing by Value Versus Passing by Reference 30
Include and Require 31
Built-In Functions Versus UDFs 32
4. Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
What Is a String? 33
You Can Quote Me 34
String Functions (Best of) 36
String Trimmings 36
Character Case Management 38
String Content Searching 39
String Modification 40
5. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Indexed Arrays 45
Associative Arrays 46
Arrays from Another Dimension 47
Arrays Can Be Dynamic 48
Traversing Arrays 50
Array Functions (Best of) 51
Sorting Arrays 51
Math-Type Functions 53
Array Potpourri 54
6. Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Putting It into Practice 60
Magic Methods 65
$this 66
Objects in Action 67
Public, Protected, and Private 68
Getters and Setters 69
7. Database Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
MySQLi Object Interface 71
Retrieving Data for Display 73
PHP Data Objects 74
PDO Prepared Statements 75
Data Management on the Cheap 77
SQLite 77
File Management As a Database Alternative 79
vi | Table of Contents
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.