Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Advanced PHP Programming

.pdf
Скачиваний:
67
Добавлен:
14.04.2015
Размер:
7.82 Mб
Скачать

Advanced PHP

Programming

Advanced PHP

Programming

Apractical guide to developing large-scale Web sites and applications with PHP 5

George Schlossnagle

DEVELOPER’S

L IBRARY

Sams Publishing, 800 East 96th Street, Indianapolis, Indiana 46240 USA

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

04

4

3

2

1

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 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

Contents v

Contents at a Glance

Introduction

IImplementation and Development Methodologies

1 Coding Styles

2Object-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

10Data Component Caching

11Computational Reuse

III Distributed Applications

12Interacting with Databases

13User Authentication and Session Security

14Session Handling

15Building a Distributed Environment

16RPC: Interacting with Remote Services

vi Contents

IV Performance

17Application Benchmarks:Testing an Entire Application

18Profiling

19Synthetic Benchmarks: Evaluating Code Blocks and Functions

V Extensibility

20PHP and Zend Engine Internals

21Extending PHP: Part I

22Extending PHP: Part II

23Writing SAPIs and Extending the Zend Engine Index

Contents vii

Table of Contents

Introduction 1

IImplementation 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

2Object-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

5Implementing 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

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]