Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Advanced PHP Programming
Nội dung xem thử
Mô tả chi tiết
Advanced PHP
Programming
This page intentionally left blank
Advanced PHP
Programming
Sams Publishing, 800 East 96th Street, Indianapolis, Indiana 46240 USA
DEVELOPER’S
LIBRARY
A practical guide to developing large-scale
Web sites and applications with PHP 5
George Schlossnagle
Advanced PHP Programming
Copyright © 2004 by Sams Publishing
All rights reserved. No part of this book shall be reproduced, stored
in a retrieval system, or transmitted by any means, electronic,
mechanical, photocopying, recording, or otherwise, without written
permission from the publisher. No patent liability is assumed with
respect to the use of the information contained herein.Although
every precaution has been taken in the preparation of this book, the
publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use
of the information contained herein.
International Standard Book Number: 0-672-32561-6
Library of Congress Catalog Card Number: 2003100478
Printed in the United States of America
First Printing: March 2004
06 05 4 3
Trademarks
All terms mentioned in this book that are known to be trademarks
or service marks have been appropriately capitalized. Sams
Publishing cannot attest to the accuracy of this information. Use of a
term in this book should not be regarded as affecting the validity of
any trademark or service mark.
Warning and Disclaimer
Every effort has been made to make this book as complete and as
accurate as possible, but no warranty or fitness is implied.The information provided is on an “as is” basis.The author and the publisher
shall have neither liability nor responsibility to any person or entity
with respect to any loss or damages arising from the information
contained in this book.
Bulk Sales
Pearson offers excellent discounts on this book when ordered in
quantity for bulk purchases or special sales. For more information,
please contact
U.S. Corporate and Government Sales
1-800-382-3419
For sales outside of the U.S., please contact
International Sales
Acquisitions Editor
Shelley Johnston
Development Editor
Damon Jordan
Managing Editor
Charlotte Clapp
Project Editor
Sheila Schroeder
Copy Editor
Kitty Jarrett
Indexer
Mandie Frank
Proofreader
Paula Lowell
Technical Editors
Brian France
Zak Greant
Sterling Hughes
Publishing Coordinator
Vanessa Evans
Interior Designer
Gary Adair
Cover Designer
Alan Clements
Page Layout
Michelle Mitchell
Contents v
Contents at a Glance
Introduction
I Implementation and Development
Methodologies
1 Coding Styles
2 Object-Oriented Programming Through Design
Patterns
3 Error Handling
4 Implementing with PHP:Templates and the Web
5 Implementing with PHP: Standalone Scripts
6 Unit Testing
7 Managing the Development Environment
8 Designing a Good API
II Caching
9 External Performance Tunings
10 Data Component Caching
11 Computational Reuse
III Distributed Applications
12 Interacting with Databases
13 User Authentication and Session Security
14 Session Handling
15 Building a Distributed Environment
16 RPC: Interacting with Remote Services
vi Contents
IV Performance
17 Application Benchmarks:Testing an Entire
Application
18 Profiling
19 Synthetic Benchmarks: Evaluating Code Blocks and
Functions
V Extensibility
20 PHP and Zend Engine Internals
21 Extending PHP: Part I
22 Extending PHP: Part II
23 Writing SAPIs and Extending the Zend Engine
Index
Contents vii
Table of Contents
Introduction 1
I Implementation and Development
Methodologies
1 Coding Styles 9
Choosing a Style That Is Right for You 10
Code Formatting and Layout 10
Indentation 10
Line Length 13
Using Whitespace 13
SQL Guidelines 14
Control Flow Constructs 14
Naming Symbols 19
Constants and Truly Global Variables 21
Long-Lived Variables 22
Temporary Variables 23
Multiword Names 24
Function Names 24
Class Names 25
Method Names 25
Naming Consistency 25
Matching Variable Names to Schema Names 26
Avoiding Confusing Code 27
Avoiding Using Open Tags 27
Avoiding Using echo to Construct HTML 27
Using Parentheses Judiciously 28
Documentation 29
Inline Comments 29
API Documentation 30
Further Reading 35
viii Contents
2 Object-Oriented Programming Through
Design Patterns 37
Introduction to OO Programming 38
Inheritance 40
Encapsulation 41
Static (or Class) Attributes and Methods 41
Special Methods 42
A Brief Introduction to Design Patterns 44
The Adaptor Pattern 44
The Template Pattern 49
Polymorphism 50
Interfaces and Type Hints 52
The Factory Pattern 54
The Singleton Pattern 56
Overloading 58
SPL 63
__call() 68
__autoload() 70
Further Reading 71
3 Error Handling 73
Handling Errors 75
Displaying Errors 76
Logging Errors 77
Ignoring Errors 78
Acting On Errors 79
Handling External Errors 80
Exceptions 83
Using Exception Hierarchies 86
A Typed Exceptions Example 88
Cascading Exceptions 94
Handling Constructor Failure 97
Installing a Top-Level Exception Handler 98
Data Validation 100
When to Use Exceptions 104
Further Reading 105
Contents ix
4 Implementing with PHP:Templates
and the Web 107
Smarty 108
Installing Smarty 109
Your First Smarty Template: Hello World! 110
Compiled Templates Under the Hood 111
Smarty Control Structures 111
Smarty Functions and More 114
Caching with Smarty 117
Advanced Smarty Features 118
Writing Your Own Template Solution 120
Further Reading 121
5 Implementing with PHP: Standalone
Scripts 123
Introduction to the PHP Command-Line Interface
(CLI) 125
Handling Input/Output (I/O) 125
Parsing Command-Line Arguments 128
Creating and Managing Child Processes 130
Closing Shared Resources 131
Sharing Variables 132
Cleaning Up After Children 132
Signals 134
Writing Daemons 138
Changing the Working Directory 140
Giving Up Privileges 140
Guaranteeing Exclusivity 141
Combining What You’ve Learned: Monitoring
Services 141
Further Reading 150
6 Unit Testing 153
An Introduction to Unit Testing 154
Writing Unit Tests for Automated Unit
Testing 155
Writing Your First Unit Test 155
Adding Multiple Tests 156