Chủ Nhật, 16 tháng 2, 2014

Tài liệu Advanced PHP Programming- P1 docx

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 omis-
sions. 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
060504 4321
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 infor-
mation 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
corpsales@pearsontechgroup.com
For sales outside of the U.S., please contact
International Sales
1-317-428-3341
international@pearsontechgroup.com
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
v
Contents
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
vii
Contents
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
ix
Contents
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
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
x
Contents
Writing Inline and Out-of-Line Unit Tests 157
Inline Packaging 158
Separate Test Packaging 159
Running Multiple Tests Simultaneously 161
Additional Features in PHPUnit 162
Creating More Informative Error Messages 163
Adding More Test Conditions 164
Using the setUp() and tearDown()
Methods 165
Adding Listeners 166
Using Graphical Interfaces 167
Test-Driven Design 168
The Flesch Score Calculator 169
Testing the Word Class 169
Bug Report 1 177
Unit Testing in a Web Environment 179
Further Reading 182
7 Managing the Development
Environment 183
Change Control 184
CVS Basics 185
Modifying Files 188
Examining Differences Between Files 189
Helping Multiple Developers Work on
the Same Project 191
Symbolic Tags 193
Branches 194
Maintaining Development and Production
Environments 195
Managing Packaging 199
Packaging and Pushing Code 201
Packaging Binaries 203
Packaging Apache 204
Packaging PHP 205
Further Reading 206
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
xi
Contents
8 Designing a Good API 207
Design for Refactoring and Extensibility 208
Encapsulating Logic in Functions 208
Keeping Classes and Functions Simple 210
Namespacing 210
Reducing Coupling 212
Defensive Coding 213
Establishing Standard Conventions 214
Using Sanitization Techniques 214
Further Reading 216
II Caching
9 External Performance Tunings 219
Language-Level Tunings 219
Compiler Caches 219
Optimizers 222
HTTP Accelerators 223
Reverse Proxies 225
Operating System Tuning for High
Performance 228
Proxy Caches 229
Cache-Friendly PHP Applications 231
Content Compression 235
Further Reading 236
RFCs 236
Compiler Caches 236
Proxy Caches 236
Content Compression 237
10 Data Component Caching 239
Caching Issues 239
Recognizing Cacheable Data Components 241
Choosing the Right Strategy: Hand-Made or
Prefab Classes 241
Output Buffering 242
In-Memory Caching 244
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
xii
Contents
Flat-File Caches 244
Cache Size Maintenance 244
Cache Concurrency and Coherency 245
DBM-Based Caching 251
Cache Concurrency and Coherency 253
Cache Invalidation and Management 253
Shared Memory Caching 257
Cookie-Based Caching 258
Cache Size Maintenance 263
Cache Concurrency and Coherency 263
Integrating Caching into Application Code 264
Caching Home Pages 266
Using Apache’s mod_rewrite for Smarter
Caching 273
Caching Part of a Page 277
Implementing a Query Cache 280
Further Reading 281
11 Computational Reuse 283
Introduction by Example: Fibonacci Sequences 283
Caching Reused Data Inside a Request 289
Caching Reused Data Between Requests 292
Computational Reuse Inside PHP 295
PCREs 295
Array Counts and Lengths 296
Further Reading 296
III Distributed Applications
12 Interacting with Databases 299
Understanding How Databases and Queries
Work 300
Query Introspection with EXPLAIN 303
Finding Queries to Profile 305
Database Access Patterns 306
Ad Hoc Queries 307
The Active Record Pattern 307
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
xiii
Contents
The Mapper Pattern 310
The Integrated Mapper Pattern 315
Tuning Database Access 317
Limiting the Result Set 317
Lazy Initialization 319
Further Reading 322
13 User Authentication and Session
Security 323
Simple Authentication Schemes 324
HTTP Basic Authentication 325
Query String Munging 325
Cookies 326
Registering Users 327
Protecting Passwords 327
Protecting Passwords Against Social
Engineering 330
Maintaining Authentication: Ensuring That You
Are Still Talking to the Same Person 331
Checking That $_SERVER[REMOTE_IP]
Stays the Same 331
Ensuring That $_SERVER[‘USER_AGENT’]
Stays the Same 331
Using Unencrypted Cookies 332
Things You Should Do 332
A Sample Authentication Implementation 334
Single Signon 339
A Single Signon Implementation 341
Further Reading 346
14 Session Handling 349
Client-Side Sessions 350
Implementing Sessions via Cookies 351
Building a Slightly Better Mousetrap 353
Server-Side Sessions 354
Tracking the Session ID 356
A Brief Introduction to PHP Sessions 357
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Không có nhận xét nào:

Đăng nhận xét