No starch press object oriented PHP concepts techniques and code

210 470 0
No starch press object oriented PHP concepts techniques and code

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu về học lập trình web bằng ngôn ngữ PHP cho tất cả mọi người.

OBJEC T-ORIE NT E D PHP OBJEC T-ORIE NT E D PHP C O N C E P T S , T E C H N I Q U E S , A N D C O D E P E T E R L A V I N ® Trying to learn the concepts of object-oriented programming using a language like C++ can be an intimidating experience. The simpler object model of PHP makes it the ideal language for an introduction to object-oriented programming. For the uninitiated, this guide to the latest version of PHP offers a speedy introduction to object-oriented programming, including a thorough explanantion of class as well as coverage of constructors, destructors, inheritance, polymorphism and interfaces. In this easy to follow guide, the author teaches by example, and couples new concepts with snippets of example code (which are available for download from the book’s companion website). With Object-Oriented PHP, you’ll learn to: • Promote code reuse by creating your own classes and using built-in classes • Customize and improve classes through inheritance • Simplify database access by developing MySQL database and result set classes • Incorporate an RSS reader into your site using only four lines of code • Use XML easily with an object-oriented approach • Employ PHP to autogenerate documentation for your code • Make thumbnail images on the fly • Replace clumsy error trapping with Exception handling • Take full advantage of advanced OO features in PHP Object-Oriented PHP will show you how to maximize PHP’s features, with much less work than you might think. With Object-Oriented PHP, you can master the basics of OOP and get up to speed on PHP in one fell swoop. A B O U T T H E A U T H O R Peter Lavin runs a web development firm based in Toronto, Canada, and he writes regularly on all things tech. He has been published in a number of magazines and online publications, including UnixReview.com, Spider Magazine and PlugIn Magazine. He is also a contributor to the forthcoming PHP Hacks (O’Reilly). ww w.nostarch.com “I L AY F L AT.” This book uses RepKover —a durable binding that won’t snap shut. TH E FI NE ST I N G E E K E N T E RTA I NM E NT ™ SHELVE IN: WEB PROGRAMMING $39.95 ($51.95 CDN) ® L E A R N T H E B A S I C S O F O B J E C T - O R I E N T E D P R O G R A M M I N G A N D P H P L E A R N T H E B A S I C S O F O B J E C T - O R I E N T E D P R O G R A M M I N G A N D P H P ® O B J E C T- O R I E N T E D P H P O B J E C T- O R I E N T E D P H P L A V I N OOPHP_02.book Page ii Friday, May 5, 2006 2:25 PM OBJECT-ORIENTED PHP Concepts, Techniques, and Code by Peter Lavin San Francisco ® OOPHP_02.book Page iii Friday, May 5, 2006 2:25 PM OBJECT-ORIENTED PHP. Copyright © 2006 by Peter Lavin. All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. Printed on recycled paper in the United States of America 1 2 3 4 5 6 7 8 9 10 – 09 08 07 06 No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other product and company names mentioned herein may be the trademarks of their respective owners. Rather than use a trademark symbol with every occurrence of a trademarked name, we are using the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Publisher: William Pollock Managing Editor: Elizabeth Campbell Associate Production Editor: Christina Samuell Cover and Interior Design: Octopod Studios Developmental Editor: William Pollock Technical Reviewer: Peter MacIntyre Copyeditors: Publication Services, Inc. and Sarah Lemaire Compositor: Riley Hoffman Proofreader: Stephanie Provines For information on book distributors or translations, please contact No Starch Press, Inc. directly: No Starch Press, Inc. 555 De Haro Street, Suite 250, San Francisco, CA 94107 phone: 415.863.9900; fax: 415.863.9950; info@nostarch.com; www.nostarch.com The information in this book is distributed on an “As Is” basis, without warranty. While every precaution has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in it. Library of Congress Cataloging-in-Publication Data Lavin, Peter. Object-oriented PHP : concepts, techniques, and code / Peter Lavin. p. cm. Includes index. ISBN 1-59327-077-1 1. PHP (Computer program language) 2. Object-oriented programming (Computer science) I. Title. QA76.73.P224L38 2006 005.1'17 dc22 2006015309 oophp_TITLE_COPY.fm Page iv Tuesday, May 16, 2006 9:32 AM BRIEF CONTENTS Acknowledgments xiii Introduction xv Chapter 1: What a Tangled Web We Weave 1 Chapter 2: Basics of Object-Oriented Programming 5 Chapter 3: Object-Oriented Features New to PHP 5 11 Chapter 4: Show a Little Class 17 Chapter 5: Mod UR Class 25 Chapter 6: The ThumbnailImage Class 35 Chapter 7: Building the PageNavigator Class 47 Chapter 8: Using the PageNavigator Class 57 Chapter 9: Database Classes 65 Chapter 10: Improvement Through Inheritance 75 Chapter 11: Advanced Object-Oriented Programming Concepts 91 Chapter 12: Keeping It Fresh 99 Chapter 13: More Magic Methods 111 Chapter 14: Creating Documentation Using the Reflection Classes 125 Chapter 15: Extending SQLite 139 Chapter 16: Using PDO 157 Appendix A: Setting Up PHP 5 165 Appendix B: Conversion Table: PHP 4 and PHP 5 169 Glossary 173 Index 179 OOPHP_02.book Page v Friday, May 5, 2006 2:25 PM OOPHP_02.book Page vi Friday, May 5, 2006 2:25 PM CONTENTS IN DETAIL ACKNOWLEDGMENTS xiii INTRODUCTION xv What Does This Book Have to Offer? xvi Who Should Read This Book? xvi Requirements xvi Software xvi Skills xvii Overview of Contents xvii Companion Website xix Resources xx Websites xx Books xx 1 WHAT A TANGLED WEB WE WEAVE 1 Do We Really Need Objects? 2 Just a Scripting Language 2 Object Orientation Is for Large Software Shops 3 Leave Well Enough Alone 3 Increased Complexity 3 The PHP Culture 4 2 BASICS OF OBJECT-ORIENTED PROGRAMMING 5 Class 6 Classes Versus Records 6 A Cohesive Whole 6 Objects Are Instances 6 Objects Need Access Modifiers 7 Object Reuse and Inheritance 7 Multiple Inheritance 8 Having Your Cake and Eating It Too 8 Where to Go from Here 9 3 OBJECT-ORIENTED FEATURES NEW TO PHP 5 11 Access Modifiers 12 Built-in Classes 12 Exceptions 12 Database Classes 13 OOPHP_02.book Page vii Friday, May 5, 2006 2:25 PM viii Contents in Detail Web Services 13 Reflection Classes 14 Iterator 14 Backward Compatibility 14 Pass By Reference 14 Prognosis 15 Where to Go from Here 15 Adoption of PHP 5 16 Compromise 16 4 SHOW A LITTLE CLASS 17 Design 18 Defining the Problem 18 Not the Da Vinci Code 19 The Constructor 19 Referencing Instance Variables 20 Wrapper Methods 20 Creating an Instance 21 What Have You Accomplished? 23 But Will It Fly? 23 5 MOD UR CLASS 25 Upgrading to PHP 5 26 Access Modifiers 26 The Constructor 28 Modifying Your Class 29 Reconstructing the Constructor 29 Filtering Content 31 Resetting the Array 32 Summary of Changes 33 6 THE THUMBNAILIMAGE CLASS 35 What Does a Designer Do? 36 Mimicking the Designer 36 Help from PHP Functions 36 The ThumbnailImage Class 37 Data Members 37 Deconstructing the Constructor 37 Two Ways to Construct an Object 38 Internal Behavior—Private Methods 39 Must It Be Private? 40 A Helper Method 40 Public Methods 41 Garbage Collection 41 OOPHP_02.book Page viii Friday, May 5, 2006 2:25 PM Contents in Detail ix Displaying the Image 41 Get and Set Methods 42 Image Quality 42 When to Change the Quality 43 Displaying a Thumbnail 44 Putting It All Together 44 Where to Go from Here 45 7 BUILDING THE PAGENAVIGATOR CLASS 47 How Will the Navigator Behave? 47 Different Kinds of Searches 48 What Will It Look Like? 48 The Code 49 The Constructor 51 Ain’t Misbehavin’ 52 Other Constructor Method Calls 52 The getNavigator Method 54 Move First and Move Previous 54 Main Body of the Navigator 55 Move Next and Move Last 56 Current and Total Number of Pages 56 Where to Go from Here 56 8 USING THE PAGENAVIGATOR CLASS 57 DirectoryItems Change 58 CSS and Reusability 58 Paging with Class 60 Displaying an Array Slice 61 Creating the PageNavigator Object 62 Where to Go from Here 63 9 DATABASE CLASSES 65 Using What You Know 65 One Lump or Two? 66 The MySQLConnect Class 66 A Class-Conscious Variable 67 Making Other Connections 68 You Can Only Get There from Here 68 The MySQLResultSet Class 69 Using the Page Navigator 70 Ordering, Filtering, and Extracting 71 Traversing the Result Set 72 Your Navigator Needs Directions 73 Where to Go After the Navigator 74 OOPHP_02.book Page ix Friday, May 5, 2006 2:25 PM x Contents in Detail 10 IMPROVEMENT THROUGH INHERITANCE 75 The Standard PHP Library 76 Extending a Class Through Inheritance 76 The Exception Class 77 protected 77 final 78 More Magic Methods 78 Replacing Errors with Exceptions 79 The MySQLException Class 80 Changes to the MySQLConnect Class 81 Prodding Your Class into Action 82 Catching Exceptions 83 Implementing an Interface 84 Learning About the Iterator Interface 85 Implementation 86 Leaving a Method Undefined 88 Implementation and Access 88 Iterating Through a MySQLResultSet 89 Where to Go from Here 89 11 ADVANCED OBJECT-ORIENTED PROGRAMMING CONCEPTS 91 Abstract Classes 91 Private Methods Can’t Be Abstract 92 Interface or Pure Abstract Class? 92 Polymorphism 93 Controlling How Functions Are Used 93 Static Classes 94 Static Math Classes 94 Instances of Static Classes 95 Preventing Instantiation of a Static Class 96 Design Patterns 96 The Singleton Pattern 96 Which Implementation? 98 Where to Go from Here 98 12 KEEPING IT FRESH 99 SimpleXML 100 XML 100 RSS 101 Structure of an RSS File 101 Reading the Feed 102 Site-Specific Search 103 Google API 104 AJAX 104 Installing SOAP 104 OOPHP_02.book Page x Friday, May 5, 2006 2:25 PM [...]... (O’Reilly) PHP 5 Power Programming, by Andi Gutmans, Stig Bakken, and Derick Rethans (Prentice Hall) PHP Cookbook, by David Sklar and Adam Trachtenberg (O’Reilly) PHP Hacks, by Jack D Herrington (O’Reilly) php| architect’s Guide to PHP Design Patterns, by Jason Sweat (php| architect) php| architect’s Guide to PHP Security, by Ilia Alshanetsky (php| architect) Programming PHP, by Kevin Tatroe, Peter MacIntyre, and. .. to OOP as implemented in PHP Chapters 4 through 9 develop some useful classes that demonstrate the basic syntax and concepts of OOP Code compatible with PHP 4 and PHP 5 is provided The remainder of the book makes use of built-in classes available in PHP 5 only; consequently, there is no PHP 4–compatible code A brief outline of each chapter is provided here Chapter 1 Strangely enough, there are still... installation and configuration of PHP 5 Appendix B The major syntactic differences between PHP 4 and PHP 5 are presented here in tabular form Companion Website This book has a companion website (http://objectorientedphp.com) where you can download all the code related to it Downloads are available as zipped files or tarballs, chapter by chapter or as one complete download Code compatible with PHP 4 is... lines of code (see Chapter 12) The point of object orientation in PHP is not to turn PHP into Java or something similar, but to provide the proper tools for web developers Object orientation is another strategy for adapting to the current circumstances of web development NOTE The impetus to “Keep It Simple, Stupid” is alive and well (and, as it happens, living in Paris) At a recent meeting of PHP core... OO path, you’ll find more and more uses for it 3 See Rasmus Lerdorf, “Do You PHP? ” available at www.oracle.com/technology/pub/articles/ php_ experts/rasmus _php. html (Accessed March 14, 2006.) 4 C h a pt er 1 OOPHP_02.book Page 5 Friday, May 5, 2006 2:25 PM 2 BASICS OF OBJECT- ORIENTED PROGRAMMING This chapter is aimed at an audience unfamiliar with the basic concepts of object- oriented programming (OOP)... 5, 2006 2:25 PM OOPHP_02.book Page 11 Friday, May 5, 2006 2:25 PM 3 OBJECT- ORIENTED FEATURES NEW TO PHP 5 PHP 3 was released in mid-1998 Some basic object- oriented (OO) capabilities were included, more or less as an afterthought, to “provide new ways of accessing arrays.”1 No significant changes were made to the object model when version 4 was released in mid-2000 The basics of objectoriented programming... disincentive to using objects in PHP 4 NOTE A notion closely related to data protection is information hiding Access modifiers make information hiding possible by exposing an interface (as defined in Chapter 2) This is also referred to as encapsulation of an object Built-in Classes Every OOP language comes with some built-in classes, and PHP is no exception PHP 5 introduces the Standard PHP Library (SPL),... 5, PHP once again makes life simpler for web developers You can now add the power of a robust but uncomplicated object- oriented (OO) language to your arsenal of web development tools OOPHP_02.book Page xvi Friday, May 5, 2006 2:25 PM What Does This Book Have to Offer? This book teaches OO PHP by doing it If you are a PHP programmer who wants to make the switch to an OO approach, Object- Oriented PHP. .. typically used to reverse engineer code Pay a little attention to the format of internal documentation, and these classes can be used to make your code self-documenting Chapter 15 SQLite is packaged with PHP 5 and comes with an OO interface This chapter extends SQLite and develops a web-based resource management program No knowledge of SQLite is presupposed Chapter 16 PHP Data Object (PDO) is a data-access... Windows using IIS and MySQL with PHP may serve to dissuade you from using this particular platform.) Skills Some knowledge of PHP is desirable, but barring that, a good understanding of C-type syntax should get you through most code examples Some knowledge of (X)HTML and CSS is also assumed—after all, PHP is primarily a web development language You need only the most basic understanding of XML even . V I N OOPHP_02.book Page ii Friday, May 5, 2006 2:25 PM OBJECT- ORIENTED PHP Concepts, Techniques, and Code by Peter Lavin San Francisco ® OOPHP_02.book. features in PHP Object- Oriented PHP will show you how to maximize PHP s features, with much less work than you might think. With Object- Oriented PHP, you

Ngày đăng: 24/01/2014, 15:45

Từ khóa liên quan

Mục lục

  • Object-oriented PHP : concepts, techniques, and code

    • Contents

    • Introduction

    • Chapter 1: What a Tangled Web We Weave

    • Chapter 2: Basics of Object-Oriented Programming

    • Chapter 3: Object-Oriented Features New to PHP 5

    • Chapter 4: Show a Little Class

    • Chapter 5: Mod UR Class

    • Chapter 6: The ThumbnailImage Class

    • Chapter 7: Building the PageNavigator Class

    • Chapter 8: Using the PageNavigator Class

    • Chapter 9: Database Classes

    • Chapter 10: Improvement Through Inheritance

    • Chapter 11: Advanced Object-Oriented Programming Concepts

    • Chapter 12: Keeping It Fresh

    • Chapter 13: More Magic Methods

    • Chapter 14: Creating Documentation Using the Reflection Classes

    • Chapter 15: Extending SQLite

    • Chapter 16: Using PDO

    • Appendix A: Setting Up PHP 5

    • Appendix B: Conversion Table: PHP 4 and PHP 5

Tài liệu cùng người dùng

Tài liệu liên quan