php|architect’s php|architect’s Zend PHP 5 Certification ZEND PHP 5 Study Guide Zend's new PHP 5 Certification Exam represent an excellent tool for professional e d PHP developers who want to distinguish themselves in their field. i u Certification G php|architect's Zend PHP 5 Certification Study Guide, edited and produced by n the publishers of php|architect magazine, provides the most comprehensive and o thorough preparation tool for developers who wish to take the exam. i t a c This book provides complete coverage of every topic that is part of the exam, i f including: ti STUDY GUIDE r e C ✔ PHP Basics 5 ✔ Functions P ✔ Arrays H P ✔ Strings and Patterns d ✔ Web Programming n ✔ Object Oriented Programming e ✔ Database Programming Z ✔ Object-oriented Design s ’ ✔ XML and Web Services t c ✔ Security e t ✔ Streams and Network Programming i h ✔ Differences Between PHP 4 and 5 c r a | p Written by PHP professionals and Zend Certified PHP 5 Engineers Davey Shafik and h p Ben Ramsey, and reviewed by core PHP developer Derick Rethans, this is the perfect book for every prospective Zend Certified PHP Engineer candidate! y e s m a R US $32.99 . B Canada $42.99 / UK (net) £19.99 From the publishers of k i f a h S . Davey Shafik with Ben Ramsey D Shelve under PHP/Web Development/Internet Programming 7.50 x 9.25 7.50 x 9.25 .571 php|architect’s Zend PHP 5 Certification Study Guide byDaveyShafik withBenRamsey php|architect’sZendPHP5CertificationGuide ContentsCopyright©2006DavidShafikandBenRamsey–AllRightsReserved Bookandcoverlayout,designandtextCopyright©2004-2006MarcoTabini&Associates,Inc.–AllRightsReserved FirstEdition:October2006 ISBN:0-9738621-4-9 ProducedinCanada PrintedintheUnitedStates Nopartofthisbookmaybereproduced,storedinaretrievalsystem,ortransmittedinanyformor bymeanswithoutthepriorwrittenpermissionofthepublisher,excetinthecaseofbriefquotations embeddedincriticalreviewsorarticles. Disclaimer Althougheveryefforthasbeenmadeinthepreparationofthisbooktoensuretheaccuracyofthe informationcontainedtherein,thisbookisprovided“as-is”andthepublisher,theauthor(s),theirdis- tributorsandretailers,aswellasallaffiliated,relatedorsubsidiarypartiestakenoresponsibilityforany inaccuracyandanyandalldamagescaused,eitherdirectlyorindirectly,bytheuseofsuchinforma- tion.Wehaveendeavouredtoproperlyprovidetrademarkinformationonallcompaniesandproducts mentionedinthebookbytheappropriateuseofcapitals.However,wecannotguaranteetheaccuracy ofsuchinformation. MarcoTabini&Associates,TheMTAlogo,php|architect,thephp|architectlogo,NanoBookandthe NanoBooklogoaretrademarksorregisteredtrademarksofMarcoTabini&Associates,Inc. Writtenby DaveyShafik BenRamsey Publishedby MarcoTabini&Associates,Inc. 28BombayAve. Toronto,ONM3H1B7 Canada (416)630-6202/(877)630-6202 [email protected]/www.phparch.com Editedby SeanCoates TechnicalReviewers DerickRethans PaulReinheimer LayoutandDesign ArbiArzoumani ManagingEditor EmanuelaCorso Contents Foreword xv HowToUseThisBook xvii Chapter1—PHPBasics 3 Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 SourceFilesandPHPTags . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 NewlineCharacters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 AnatomyofaPHPScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Whitespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 CodeBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 LanguageConstructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 DataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 NumericValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 CompoundDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 OtherDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ConvertingBetweenDataTypes . . . . . . . . . . . . . . . . . . . . . . . 11 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 VariableVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 DeterminingIfaVariableExists. . . . . . . . . . . . . . . . . . . . . . . . 14 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 vi ” CONTENTS Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ArithmeticOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 TheStringConcatenationOperator . . . . . . . . . . . . . . . . . . . . . 17 BitwiseOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 AssignmentOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ReferencingVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ComparisonOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 LogicalOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 OtherOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 OperatorPrecedenceandAssociativity . . . . . . . . . . . . . . . . . . . 25 ControlStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ConditionalStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 IterativeConstructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 BreakingandContinuing . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ErrorsandErrorManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 TypesofErrors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ErrorReporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 HandlingErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Chapter2—Functions 37 BasicSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ReturningValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 VariableScope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 PassingArguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Variable-lengthArgumentLists . . . . . . . . . . . . . . . . . . . . . . . . 42 PassingArgumentsbyReference . . . . . . . . . . . . . . . . . . . . . . . 43 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Chapter3—Arrays 47 ArrayBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 PrintingArrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Enumerativevs.Associative . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Multi-dimensionalArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 UnravellingArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 CONTENTS ” vii ArrayOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ComparingArrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Counting,SearchingandDeletingElements . . . . . . . . . . . . . . . . 53 FlippingandReversing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 ArrayIteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 TheArrayPointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 AnEasierWaytoIterate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 PassiveIteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 SortingArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 OtherSortingOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 TheAnti-Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 ArraysasStacks,QueuesandSets . . . . . . . . . . . . . . . . . . . . . . . . . 67 SetFunctionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Chapter4—StringsAndPatterns 73 StringBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 VariableInterpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 TheHeredocSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 EscapingLiteralValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 DeterminingtheLengthofaString. . . . . . . . . . . . . . . . . . . . . . 76 TransformingaString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 UsingStringsasArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Comparing,SearchingandReplacingStrings. . . . . . . . . . . . . . . . . . . 78 SimpleSearchingFunctionality . . . . . . . . . . . . . . . . . . . . . . . . 79 MatchingAgainstaMask . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 SimpleSearchandReplaceOperations . . . . . . . . . . . . . . . . . . . 81 ExtractingSubstrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 FormattingStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 FormattingNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 FormattingCurrencyValues . . . . . . . . . . . . . . . . . . . . . . . . . . 85 GenericFormatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ParsingFormattedInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Perl-compatibleRegularExpressions . . . . . . . . . . . . . . . . . . . . . . . 89 viii ” CONTENTS Delimiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Metacharacters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Quantifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Sub-Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 MatchingandExtractingStrings . . . . . . . . . . . . . . . . . . . . . . . 92 UsingPCREtoReplaceStrings . . . . . . . . . . . . . . . . . . . . . . . . 94 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Chapter5—WebProgramming 97 AnatomyofaWebPage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 FormsandURLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 GETandURLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 UsingPOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 WhenYouDon’tKnowHowDataIsSent . . . . . . . . . . . . . . . . . . 101 ManagingFileUploads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 GETorPOST? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 HTTPHeaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Redirection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Compression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Chapter6—ObjectOrientedProgramminginPHP 113 OOPFundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 DeclaringaClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 InstantiatinganObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 ClassInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ClassMethodsandProperties. . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 DeclaringandAccessingProperties . . . . . . . . . . . . . . . . . . . . . 122 Constants,StaticMethodsandProperties. . . . . . . . . . . . . . . . . . . . . 123 CONTENTS ” ix ClassConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Interfaces&AbstractClasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 DeterminingAnObject’sClass . . . . . . . . . . . . . . . . . . . . . . . . 128 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 TheBasicExceptionClass . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 ThrowingExceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 LazyLoading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Chapter7—DatabaseProgramming 141 AnIntroductiontoRelationalDatabasesandSQL . . . . . . . . . . . . . . . . 141 Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 SQLDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 CreatingDatabasesandTables . . . . . . . . . . . . . . . . . . . . . . . . 145 CreatingIndicesandRelationships . . . . . . . . . . . . . . . . . . . . . 146 DroppingObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 AddingandManipulatingData . . . . . . . . . . . . . . . . . . . . . . . . 148 RemovingData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 RetrievingData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 SQLJoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 OuterJoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 AdvancedDatabaseTopics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PreparedStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Chapter8—ElementsofObject-orientedDesign 157 DesignPatternTheory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 TheSingletonPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 TheFactoryPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 TheRegistryPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 TheModel-View-ControllerPattern . . . . . . . . . . . . . . . . . . . . . 161
Description: