skip to content
PHP in Action : objects, design, agility Preview this item
ClosePreview this item
Checking...

PHP in Action : objects, design, agility

Author: Dagfinn Reiersøl; Marcus Baker; Chris Shiflett
Publisher: Greenwich, CT : Manning Publications Co., 2007.
Edition/Format:   Print book : EnglishView all editions and formats
Summary:
From the Publisher: To keep programming productive and enjoyable, state-of-the-art practices and principles are essential. Object-oriented programming and design help manage complexity by keeping components cleanly separated. Unit testing helps prevent endless, exhausting debugging sessions. Refactoring keeps code supple and readable. PHP offers all this-and more. This book shows you how to apply PHP techniques and  Read more...
Rating:

(not yet rated) 0 with reviews - Be the first.

Subjects
More like this

 

Find a copy in the library

&AllPage.SpinnerRetrieving; Finding libraries that hold this item...

Details

Material Type: Internet resource
Document Type: Book, Internet Resource
All Authors / Contributors: Dagfinn Reiersøl; Marcus Baker; Chris Shiflett
ISBN: 9781932394757 1932394753
OCLC Number: 156994258
Description: xxvi, 525 pages : illustrations ; 23 cm
Contents: Preface --
Acknowledgements --
About this book --
About this title --
About the cover illustration --
Part 1: Tools And Concepts --
1: PHP and modern software development --
1-1: How PHP can help you --
Why PHP is so popular --
Overcoming PHP's limitations --
1-2:Languages, principles, and patterns --
Agile methodologies: from hacking to happiness --
PHP 5 and software trends --
Evolving discipline of object-oriented programming --
Design patterns --
Refactoring --
Unit testing and test-driven development --
1-3: Summary --
2: Objects in PHP --
2-1: Object fundamentals --
Why we're comparing PHP to Java --
Objects and classes --
Hello world --
Constructors: creating and initializing objects --
Inheritance and the extends keyword inheriting constructors --
2-2: Exception handling --
How exceptions work --
Exceptions versus return codes-when to use which --
Creating your own exceptions classes --
Replacing built-in PHP fatal errors with exceptions --
Don't overdo exceptions --
2-3: Object references in PHP 4 and PHP 5 --
How object references work --
Advantages of object references --
When references are not so useful --
2-4: Intercepting method calls and class instantiation --
What is method overloading? --
Java-style method overloading in PHP --
Near aspect-oriented experience logging method calls --
Autoloading classes --
2-5: Summary --
3: Using PHP classes effectively --
3-1: Visibility: private and protected methods and variables --
How visible do we want our methods to be? --
When to use private methods --
When to use protected methods --
Keeping your instance variables private or protected --
Accessors for private and protected variables --
Best of both worlds? using interception to control variables --
Final classes and methods --
3-2: Class without objects: class methods, variables, and constants --
Class (static) methods --
When to use class methods --
Class variables --
Class constants --
Limitations of constants in PHP --
3-3: Abstract classes and methods (functions) --
What are abstract classes and methods? --
Using abstract classes --
3-4: Class type hints --
How type hints work --
When to use type hints --
3-5: Interfaces --
What is an interface? --
Do we need interfaces in PHP? --
Using interfaces to make design clearer --
Using interfaces to improve class type hints --
Interfaces in PHP 5 versus Java --
3-6: Summary --
4: Understanding objects and classes --
4-1: Why objects and classes are a good idea --
Classes help you organize --
You can tell objects to do things --
Polymorphism --
Objects make code easier to read --
Classes help eliminate duplication --
You can reuse objects and classes --
Change things without affecting everything --
Objects provide type safety --
4-2: Criteria for good design --
Don't confuse the end with the means --
Transparency --
Simple design --
Once and only once --
4-3: What are objects, anyway --
Objects come from the unreal world --
Domain object basics --
4-4: Summary --
5: Understanding class relationships --
5-1: Inheritance --
Inheritance as a thinking tool --
Refactoring to inheritance --
5-2: Object composition --
5-3: Interfaces --
Interface as a thinking tool --
Single and multiple inheritance --
5-4: Favoring composition over inheritance --
Avoiding vaguely named parent classes --
Avoiding deep inheritance hierarchies --
5-5: Summary --
6: Object-oriented principles --
6-1: Principles and patterns --
Architectural principles or patterns --
Learning OO principles --
6-2: Open-closed principle (OCP) --
OCP for beginners --
Replacing cases with classes --
How relevant is the OCP in PHP? --
6-3: Single-responsibility principle (SRP) --
Mixed responsibilities: the template engine --
Experiment: separating the responsibilities --
Was the experiment successful? --
6-4: Dependency-inversion principle (DIP) --
What is a dependency? --
Inserting an interface --
6-5: Layered designs --
Three tier model and its siblings --
Can a web application have a domain layer? --
6-6: Summary --
7: Design patterns --
7-1: Strategy --
Hello world using strategy --
How strategy is useful --
7-2: Adapter --
Adapter for beginners --
Making one template engine look like another --
Adapters with multiple classes --
Adapting to a generic interface --
7-3: Decorator --
Resource decorator --
Decorating and redecorating --
7-4: Null object --
Mixing dark and bright lights --
Null strategy objects --
7-5: Iterator --
How iterators work --
Good reasons to use iterators --
Iterators versus plain arrays --
SPL interators --
How SPL helps us solve the iterator/array conflict --
7-6: Composite --
Implementing a menu as a composite --
Basics a fluent interface --
Recursive processing --
Is this inefficient? --
7-7: Summary --
8: Design how-to: date and time handling --
8-1: Why object-oriented date and time handling? --
Easier, but not simpler --
OO advantages --
8-2: Finding the right abstractions --
Single time representation: time point, instant, dateandtime --
Different kinds of time spans: period, duration, date range, interval --
8-3: Advanced object construction --
Using creation methods --
Multiple constructors --
Using factory classes --
8-4: Large-scale structure --
Package concept --
Namespaces and packages --
PHP's lack of namespace support --
Dealing with name conflicts --
8-5: Using value objects --
How object references can make trouble --
Implementing value objects --
Changing an immutable object --
8-6: Implementing the basic classes --
Date and time --
Properties and fields --
Periods --
Intervals --
8-7: Summary --
Part 2: Testing And Refactoring --
9: Test-driven development --
9-1: Building quality into the process --
Requirements for the example --
Reporting test results --
9-2: Database select --
Rudimentary test --
First real test --
Make it pass --
Make it work --
Test until you are confident --
9-3: Database insert and update --
Making the test more readable --
Red, green, refactor --
9-4: Real database transactions --
Testing transactions --
Implementing transactions --
End of debugging? --
Testing is a took, not a substitute --
9-5: Summary. 10: Advanced testing techniques --
10-1: Contact manager with persistence --
Running multiple test cases --
Testing the contact's persistence --
Contact and contactfinder classes --
Set up() and tear down() --
Final version --
10-2: Sending an email to a contact --
Designing the mailer class and its test environment --
Manually coding a mock object --
More sophisticated mock object --
Top-down testing --
Mock limitations --
10-3: Fake mail server --
Installing fake mail --
Mail test --
Gateways as adapters --
10-4: Summary --
11: Refactoring web applications --
11-1: Refactoring in the real world --
Early and late refactoring --
Refactoring versus reimplementation --
11-2: Refactoring basics: readability and duplication --
Improving readability --
Eliminating duplication --
11-3: Separating markup from program code --
Why the separation is useful --
Using CSS appropriately --
Cleaning up a function that generates a link --
Introducing templates in simple test --
11-4: Simplifying conditional expressions --
Simple example --
Longer example: authentication code --
Handling conditional HTML --
11-5: Refactoring from procedural to object-oriented --
Getting procedural code under test --
Doing the refactorings --
11-6: Summary --
12: Taking control with web tests --
12-1: Revisiting the contact manager --
Mock-up --
Setting up web testing --
Satisfying the test with fake web page interaction --
Write once, test everywhere --
12-2: Getting a working form --
Trying to save the contact to the database --
Setting up the database --
Stubbing out the finder --
12-3: Quality assurance --
Making the contact manager unit-testable --
From use case to acceptance test --
12-4: Horror of legacy code --
12-5: Summary --
Part 3: Building The Web Interface --
13: Using templates to manage web presentation --
13-1: Separating presentation and domain logic --
To separate or not to separate --
Why templates? --
13-2: Which template engine? --
Plain PHP --
Custom syntax: smarty --
Attribute language: PHPTAL --
13-3: Transformation: XSLT --
XMLizing a web page --
Setting up XSLT --
XSLT stylesheet --
Running XSLT from PHP --
13-4: Keeping logic out of templates --
View helper --
Alternating row colors --
Handling date and time formats --
Generating hierarchical displays --Preventing updates from the template --
13-5: Templates and security --
PHPTAL --
Smarty --
XSLT --
13-6: Summary --
14: Constructing complex web pages --
14-1: Combining templates (composite view) --
Composite view: one or several design patterns? --
Composite data and composite templates --
14-2: Implementing a straightforward composite view --
What we need to achieve --
Using smarty --
Using PHPTAL --
Using page macros with PHPTAL --
14-3: Composite view examples --
Making print-friendly versions of pages --
Integrating existing applications into a composite view --
Multi-appearance sites and Fowler's two step view --
14-4: Summary --
15: User interaction --
15-1: Model-view-controller architecture --
Clearing the MVC fog --
Defining the basic concepts --
Command or actions? --
Web MVC is not rich-client MVC --
15-2: Web command pattern --
How it works --
Command identifier --
Web handler --
Command executor --
15-3: Keeping the implementation simple --
Example: a naive web application --
Introducing command functions --
15-4: Summary --
16: Controllers --
16-1: Controllers and request objects --
Basic request object --
Security issues --
16-2: Using page controllers --
Simple example --
Choosing views from a page controller --
Making commands unit-testable --
Avoiding HTML output --
Using templates --
Redirect problem --
16-3: Building a front controller --
Web handler with single-command classes --
What more does the command need? --
Using command groups --
Forms with multiple submit buttons --
Generating commands with javascript --
Controllers for composite views --
16-4: Summary --
17: Input validation --
17-1: Input validation in application design --
Validation and application architecture --
Strategies for validation --
Naming the components of a form --
17-2: Server-side validation and its problems --
Duplication problem --
Styling problem --
Testing and page navigation problems --
How many problems can we solve? --
17-3: Client-side validation --
Ordinary, boring client-side validation --
Validating field-by-field --
You can't do that! --
Form --
17-4: Object-oriented server-side validation --
Rules and validators --
Secure request object architecture --
Now validation is simple --
Class to make it simple --
Using specification objects --
Knowledge-rich design --
Adding validations to the facade --
17-5: Synchronizing server-side and client-side validation --
Form generator --
Configuration file --
Generating server-side validation from client-side validation --
17-6: Summary --
18: Form handling --
18-1: Designing a solution using HTML quickform --
Minimalistic requirements and design --
Putting generated elements into the HTML form --
Finding abstractions --
More specific requirements --
Select problem --
18-2: Implementing the solution --
Wrapping the HTML Quickform elements --
Input controls --
Which class creates the form controls? --
Validation --
Using the form object in a template --
What next? --
18-3: Summary --
19: Database connection, abstraction, and configuration --
19-1: Database abstraction --
Prepared statements --
Object-oriented database querying --
19-2: Decorating and adapting database resource objects --
Simple configured database connection --
Making a SPL compatible iterator from a result set --
19-3: Making the database connection available --
Singleton and similar patterns --
Service locator and registry --
19-4: Summary --Part 4: Databases And Infrastructure --
20: Objects and SQL --
20-1: Object-relational impedance mismatch --
20-2: Encapsulating and hiding SQL --
Basic example --
Substituting strings in SQL statements --
20-3: Generalizing SQL --
Column lists and table names --
Using SQL aliases --
Generating insert, update and delete statements --
Query objects --
Application design patterns --
20-4: Summary --
21: Data class design --
21.1: Simplest approaches --
Retrieving data with finder classes --
Mostly procedural: table data gateway --
21-2: Letting objects persist themselves --
Finders for self-persistent objects --
Letting objects store themselves --
21-3: Data mapper pattern --
Data mappers and DAQs --
These patterns are all the same --
Pattern summary --
21-4: Facing the real world --
How the patterns work in a typical web application --
Optimizing queries --
21-5: Summary --
Appendix A: Tools and tips for testing --
Appendix B: Security --
Resources --
Index.
Responsibility: Dagfinn Reiersøl, Marcus Baker, Chris Shiflett.
More information:

Abstract:

This book shows readers how to apply PHP techniques and principles to all themost common challenges of Web programming.  Read more...

Reviews

User-contributed reviews
Retrieving GoodReads reviews...
Retrieving DOGObooks reviews...

Tags

Be the first.
Confirm this request

You may have already requested this item. Please select Ok if you would like to proceed with this request anyway.

Linked Data


Primary Entity

<http://www.worldcat.org/oclc/156994258> # PHP in Action : objects, design, agility
    a schema:Book, schema:CreativeWork ;
   library:oclcnum "156994258" ;
   library:placeOfPublication <http://experiment.worldcat.org/entity/work/data/866258177#Place/greenwich_ct> ; # Greenwich, CT
   library:placeOfPublication <http://id.loc.gov/vocabulary/countries/ctu> ;
   schema:about <http://experiment.worldcat.org/entity/work/data/866258177#Topic/php> ; # PHP
   schema:about <http://id.worldcat.org/fast/1173252> ; # Web sites--Design
   schema:about <http://experiment.worldcat.org/entity/work/data/866258177#Topic/php_langage_de_programmation> ; # PHP (langage de programmation)
   schema:about <http://experiment.worldcat.org/entity/work/data/866258177#Topic/web_seite> ; # Web-Seite
   schema:about <http://id.worldcat.org/fast/977281> ; # Internet programming
   schema:about <http://experiment.worldcat.org/entity/work/data/866258177#Topic/gestaltung> ; # Gestaltung
   schema:about <http://id.worldcat.org/fast/1049847> ; # PHP (Computer program language)
   schema:about <http://dewey.info/class/005.2762/e22/> ;
   schema:about <http://id.loc.gov/authorities/subjects/sh98000035> ; # Web sites--Design
   schema:bookFormat bgn:PrintBook ;
   schema:contributor <http://viaf.org/viaf/68298945> ; # Chris Shiflett
   schema:contributor <http://viaf.org/viaf/277105947> ; # Marcus Baker
   schema:creator <http://viaf.org/viaf/78896836> ; # Dagfinn Reiersøl
   schema:datePublished "2007" ;
   schema:description "Preface -- Acknowledgements -- About this book -- About this title -- About the cover illustration -- Part 1: Tools And Concepts -- 1: PHP and modern software development -- 1-1: How PHP can help you -- Why PHP is so popular -- Overcoming PHP's limitations -- 1-2:Languages, principles, and patterns -- Agile methodologies: from hacking to happiness -- PHP 5 and software trends -- Evolving discipline of object-oriented programming -- Design patterns -- Refactoring -- Unit testing and test-driven development -- 1-3: Summary -- 2: Objects in PHP -- 2-1: Object fundamentals -- Why we're comparing PHP to Java -- Objects and classes -- Hello world -- Constructors: creating and initializing objects -- Inheritance and the extends keyword inheriting constructors -- 2-2: Exception handling -- How exceptions work -- Exceptions versus return codes-when to use which -- Creating your own exceptions classes -- Replacing built-in PHP fatal errors with exceptions -- Don't overdo exceptions -- 2-3: Object references in PHP 4 and PHP 5 -- How object references work -- Advantages of object references -- When references are not so useful -- 2-4: Intercepting method calls and class instantiation -- What is method overloading? -- Java-style method overloading in PHP -- Near aspect-oriented experience logging method calls -- Autoloading classes -- 2-5: Summary -- 3: Using PHP classes effectively -- 3-1: Visibility: private and protected methods and variables -- How visible do we want our methods to be? -- When to use private methods -- When to use protected methods -- Keeping your instance variables private or protected -- Accessors for private and protected variables -- Best of both worlds? using interception to control variables -- Final classes and methods -- 3-2: Class without objects: class methods, variables, and constants -- Class (static) methods -- When to use class methods -- Class variables -- Class constants -- Limitations of constants in PHP -- 3-3: Abstract classes and methods (functions) -- What are abstract classes and methods? -- Using abstract classes -- 3-4: Class type hints -- How type hints work -- When to use type hints -- 3-5: Interfaces -- What is an interface? -- Do we need interfaces in PHP? -- Using interfaces to make design clearer -- Using interfaces to improve class type hints -- Interfaces in PHP 5 versus Java -- 3-6: Summary -- 4: Understanding objects and classes -- 4-1: Why objects and classes are a good idea -- Classes help you organize -- You can tell objects to do things -- Polymorphism -- Objects make code easier to read -- Classes help eliminate duplication -- You can reuse objects and classes -- Change things without affecting everything -- Objects provide type safety -- 4-2: Criteria for good design -- Don't confuse the end with the means -- Transparency -- Simple design -- Once and only once -- 4-3: What are objects, anyway -- Objects come from the unreal world -- Domain object basics -- 4-4: Summary -- 5: Understanding class relationships -- 5-1: Inheritance -- Inheritance as a thinking tool -- Refactoring to inheritance -- 5-2: Object composition -- 5-3: Interfaces -- Interface as a thinking tool -- Single and multiple inheritance -- 5-4: Favoring composition over inheritance -- Avoiding vaguely named parent classes -- Avoiding deep inheritance hierarchies -- 5-5: Summary -- 6: Object-oriented principles -- 6-1: Principles and patterns -- Architectural principles or patterns -- Learning OO principles -- 6-2: Open-closed principle (OCP) -- OCP for beginners -- Replacing cases with classes -- How relevant is the OCP in PHP? -- 6-3: Single-responsibility principle (SRP) -- Mixed responsibilities: the template engine -- Experiment: separating the responsibilities -- Was the experiment successful? -- 6-4: Dependency-inversion principle (DIP) -- What is a dependency? -- Inserting an interface -- 6-5: Layered designs -- Three tier model and its siblings -- Can a web application have a domain layer? -- 6-6: Summary -- 7: Design patterns -- 7-1: Strategy -- Hello world using strategy -- How strategy is useful -- 7-2: Adapter -- Adapter for beginners -- Making one template engine look like another -- Adapters with multiple classes -- Adapting to a generic interface -- 7-3: Decorator -- Resource decorator -- Decorating and redecorating -- 7-4: Null object -- Mixing dark and bright lights -- Null strategy objects -- 7-5: Iterator -- How iterators work -- Good reasons to use iterators -- Iterators versus plain arrays -- SPL interators -- How SPL helps us solve the iterator/array conflict -- 7-6: Composite -- Implementing a menu as a composite -- Basics a fluent interface -- Recursive processing -- Is this inefficient? -- 7-7: Summary -- 8: Design how-to: date and time handling -- 8-1: Why object-oriented date and time handling? -- Easier, but not simpler -- OO advantages -- 8-2: Finding the right abstractions -- Single time representation: time point, instant, dateandtime -- Different kinds of time spans: period, duration, date range, interval -- 8-3: Advanced object construction -- Using creation methods -- Multiple constructors -- Using factory classes -- 8-4: Large-scale structure -- Package concept -- Namespaces and packages -- PHP's lack of namespace support -- Dealing with name conflicts -- 8-5: Using value objects -- How object references can make trouble -- Implementing value objects -- Changing an immutable object -- 8-6: Implementing the basic classes -- Date and time -- Properties and fields -- Periods -- Intervals -- 8-7: Summary -- Part 2: Testing And Refactoring -- 9: Test-driven development -- 9-1: Building quality into the process -- Requirements for the example -- Reporting test results -- 9-2: Database select -- Rudimentary test -- First real test -- Make it pass -- Make it work -- Test until you are confident -- 9-3: Database insert and update -- Making the test more readable -- Red, green, refactor -- 9-4: Real database transactions -- Testing transactions -- Implementing transactions -- End of debugging? -- Testing is a took, not a substitute -- 9-5: Summary."@en ;
   schema:description "10: Advanced testing techniques -- 10-1: Contact manager with persistence -- Running multiple test cases -- Testing the contact's persistence -- Contact and contactfinder classes -- Set up() and tear down() -- Final version -- 10-2: Sending an email to a contact -- Designing the mailer class and its test environment -- Manually coding a mock object -- More sophisticated mock object -- Top-down testing -- Mock limitations -- 10-3: Fake mail server -- Installing fake mail -- Mail test -- Gateways as adapters -- 10-4: Summary -- 11: Refactoring web applications -- 11-1: Refactoring in the real world -- Early and late refactoring -- Refactoring versus reimplementation -- 11-2: Refactoring basics: readability and duplication -- Improving readability -- Eliminating duplication -- 11-3: Separating markup from program code -- Why the separation is useful -- Using CSS appropriately -- Cleaning up a function that generates a link -- Introducing templates in simple test -- 11-4: Simplifying conditional expressions -- Simple example -- Longer example: authentication code -- Handling conditional HTML -- 11-5: Refactoring from procedural to object-oriented -- Getting procedural code under test -- Doing the refactorings -- 11-6: Summary -- 12: Taking control with web tests -- 12-1: Revisiting the contact manager -- Mock-up -- Setting up web testing -- Satisfying the test with fake web page interaction -- Write once, test everywhere -- 12-2: Getting a working form -- Trying to save the contact to the database -- Setting up the database -- Stubbing out the finder -- 12-3: Quality assurance -- Making the contact manager unit-testable -- From use case to acceptance test -- 12-4: Horror of legacy code -- 12-5: Summary -- Part 3: Building The Web Interface -- 13: Using templates to manage web presentation -- 13-1: Separating presentation and domain logic -- To separate or not to separate -- Why templates? -- 13-2: Which template engine? -- Plain PHP -- Custom syntax: smarty -- Attribute language: PHPTAL -- 13-3: Transformation: XSLT -- XMLizing a web page -- Setting up XSLT -- XSLT stylesheet -- Running XSLT from PHP -- 13-4: Keeping logic out of templates -- View helper -- Alternating row colors -- Handling date and time formats -- Generating hierarchical displays --Preventing updates from the template -- 13-5: Templates and security -- PHPTAL -- Smarty -- XSLT -- 13-6: Summary -- 14: Constructing complex web pages -- 14-1: Combining templates (composite view) -- Composite view: one or several design patterns? -- Composite data and composite templates -- 14-2: Implementing a straightforward composite view -- What we need to achieve -- Using smarty -- Using PHPTAL -- Using page macros with PHPTAL -- 14-3: Composite view examples -- Making print-friendly versions of pages -- Integrating existing applications into a composite view -- Multi-appearance sites and Fowler's two step view -- 14-4: Summary -- 15: User interaction -- 15-1: Model-view-controller architecture -- Clearing the MVC fog -- Defining the basic concepts -- Command or actions? -- Web MVC is not rich-client MVC -- 15-2: Web command pattern -- How it works -- Command identifier -- Web handler -- Command executor -- 15-3: Keeping the implementation simple -- Example: a naive web application -- Introducing command functions -- 15-4: Summary -- 16: Controllers -- 16-1: Controllers and request objects -- Basic request object -- Security issues -- 16-2: Using page controllers -- Simple example -- Choosing views from a page controller -- Making commands unit-testable -- Avoiding HTML output -- Using templates -- Redirect problem -- 16-3: Building a front controller -- Web handler with single-command classes -- What more does the command need? -- Using command groups -- Forms with multiple submit buttons -- Generating commands with javascript -- Controllers for composite views -- 16-4: Summary -- 17: Input validation -- 17-1: Input validation in application design -- Validation and application architecture -- Strategies for validation -- Naming the components of a form -- 17-2: Server-side validation and its problems -- Duplication problem -- Styling problem -- Testing and page navigation problems -- How many problems can we solve? -- 17-3: Client-side validation -- Ordinary, boring client-side validation -- Validating field-by-field -- You can't do that! -- Form -- 17-4: Object-oriented server-side validation -- Rules and validators -- Secure request object architecture -- Now validation is simple -- Class to make it simple -- Using specification objects -- Knowledge-rich design -- Adding validations to the facade -- 17-5: Synchronizing server-side and client-side validation -- Form generator -- Configuration file -- Generating server-side validation from client-side validation -- 17-6: Summary -- 18: Form handling -- 18-1: Designing a solution using HTML quickform -- Minimalistic requirements and design -- Putting generated elements into the HTML form -- Finding abstractions -- More specific requirements -- Select problem -- 18-2: Implementing the solution -- Wrapping the HTML Quickform elements -- Input controls -- Which class creates the form controls? -- Validation -- Using the form object in a template -- What next? -- 18-3: Summary -- 19: Database connection, abstraction, and configuration -- 19-1: Database abstraction -- Prepared statements -- Object-oriented database querying -- 19-2: Decorating and adapting database resource objects -- Simple configured database connection -- Making a SPL compatible iterator from a result set -- 19-3: Making the database connection available -- Singleton and similar patterns -- Service locator and registry -- 19-4: Summary --Part 4: Databases And Infrastructure -- 20: Objects and SQL -- 20-1: Object-relational impedance mismatch -- 20-2: Encapsulating and hiding SQL -- Basic example -- Substituting strings in SQL statements -- 20-3: Generalizing SQL -- Column lists and table names -- Using SQL aliases -- Generating insert, update and delete statements -- Query objects -- Application design patterns -- 20-4: Summary -- 21: Data class design -- 21.1: Simplest approaches -- Retrieving data with finder classes -- Mostly procedural: table data gateway -- 21-2: Letting objects persist themselves -- Finders for self-persistent objects -- Letting objects store themselves -- 21-3: Data mapper pattern -- Data mappers and DAQs -- These patterns are all the same -- Pattern summary -- 21-4: Facing the real world -- How the patterns work in a typical web application -- Optimizing queries -- 21-5: Summary -- Appendix A: Tools and tips for testing -- Appendix B: Security -- Resources -- Index."@en ;
   schema:description "From the Publisher: To keep programming productive and enjoyable, state-of-the-art practices and principles are essential. Object-oriented programming and design help manage complexity by keeping components cleanly separated. Unit testing helps prevent endless, exhausting debugging sessions. Refactoring keeps code supple and readable. PHP offers all this-and more. This book shows you how to apply PHP techniques and principles to all the most common challenges of web programming, including: Web presentation and templates; User interaction including the Model-View-Controller architecture; Input validation and form handling; Database connection and querying and abstraction; Object persistence."@en ;
   schema:exampleOfWork <http://worldcat.org/entity/work/id/866258177> ;
   schema:inLanguage "en" ;
   schema:name "PHP in Action : objects, design, agility"@en ;
   schema:productID "156994258" ;
   schema:publication <http://www.worldcat.org/title/-/oclc/156994258#PublicationEvent/greenwich_ct_manning_publications_co_2007> ;
   schema:publisher <http://experiment.worldcat.org/entity/work/data/866258177#Agent/manning_publications_co> ; # Manning Publications Co.
   schema:url <http://catdir.loc.gov/catdir/toc/fy0802/2007279250.html> ;
   schema:workExample <http://worldcat.org/isbn/9781932394757> ;
   wdrs:describedby <http://www.worldcat.org/title/-/oclc/156994258> ;
    .


Related Entities

<http://experiment.worldcat.org/entity/work/data/866258177#Agent/manning_publications_co> # Manning Publications Co.
    a bgn:Agent ;
   schema:name "Manning Publications Co." ;
    .

<http://experiment.worldcat.org/entity/work/data/866258177#Topic/php_langage_de_programmation> # PHP (langage de programmation)
    a schema:Intangible ;
   schema:name "PHP (langage de programmation)"@en ;
    .

<http://id.loc.gov/authorities/subjects/sh98000035> # Web sites--Design
    a schema:Intangible ;
   schema:name "Web sites--Design"@en ;
    .

<http://id.worldcat.org/fast/1049847> # PHP (Computer program language)
    a schema:Intangible ;
   schema:name "PHP (Computer program language)"@en ;
    .

<http://id.worldcat.org/fast/1173252> # Web sites--Design
    a schema:Intangible ;
   schema:name "Web sites--Design"@en ;
    .

<http://id.worldcat.org/fast/977281> # Internet programming
    a schema:Intangible ;
   schema:name "Internet programming"@en ;
    .

<http://viaf.org/viaf/277105947> # Marcus Baker
    a schema:Person ;
   schema:familyName "Baker" ;
   schema:givenName "Marcus" ;
   schema:name "Marcus Baker" ;
    .

<http://viaf.org/viaf/68298945> # Chris Shiflett
    a schema:Person ;
   schema:familyName "Shiflett" ;
   schema:givenName "Chris" ;
   schema:name "Chris Shiflett" ;
    .

<http://viaf.org/viaf/78896836> # Dagfinn Reiersøl
    a schema:Person ;
   schema:familyName "Reiersøl" ;
   schema:givenName "Dagfinn" ;
   schema:name "Dagfinn Reiersøl" ;
    .

<http://worldcat.org/isbn/9781932394757>
    a schema:ProductModel ;
   schema:isbn "1932394753" ;
   schema:isbn "9781932394757" ;
    .


Content-negotiable representations

Close Window

Please sign in to WorldCat 

Don't have an account? You can easily create a free account.