skip to content
Real-world solutions for developing high-quality PHP frameworks and applications Preview this item
ClosePreview this item
Checking...

Real-world solutions for developing high-quality PHP frameworks and applications

Author: Sebastian Bergmann; Stefan Priebsch
Publisher: Indianapolis, Ind. : Wiley Pub., ©2011.
Series: Wrox guides.
Edition/Format:   eBook : Document : EnglishView all editions and formats
Summary:
Presents information and a variety of case studies focusing on creating sustainable applications and frameworks using PHP.
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

Genre/Form: Electronic books
Additional Physical Format: Print version:
Bergmann, Sebastian, 1978-
Real-world solutions for developing high-quality PHP frameworks and applications.
Indianapolis, IN : Wiley Pub., ©2011
(OCoLC)635494699
Material Type: Document, Internet resource
Document Type: Internet Resource, Computer File
All Authors / Contributors: Sebastian Bergmann; Stefan Priebsch
ISBN: 9781118098226 1118098226 0470872497 9780470872499
OCLC Number: 739838992
Description: 1 online resource (xxix, 378 pages) : illustrations.
Contents: Machine generated contents note: ch. 1 Software Quality --
External Quality --
Internal Quality --
Technical Debt --
Constructive Quality Assurance --
Clean Code --
Explicit and Minimal Dependencies --
Clear Responsibilities --
No Duplication --
Short Methods with Few Execution Branches --
Software Metrics --
Cyclomatic Complexity and npath Complexity --
Change Risk Anti-Patterns (CRAP) Index --
Non-Mockable Total Recursive Cyclomatic Complexity --
Global Mutable State --
Cohesion and Coupling --
Tools --
PHPUnit --
phploc --
PHP Copy-Paste-Detector (phpcpd) --
PHP Dead Code Detector (phpdcd) --
PHP Depend (pdepend) --
PHP Mess Detector (phpmd) --
PHP CodeSniffer (phpcs) --
bytekit-cli --
PHP CodeBrowser (phpcb) --
CruiseControl and phpUnderControl --
Hudson --
Arbit --
Conclusion --
ch. 2 Software Testing --
Black Box and White Box Tests --
How Many Tests Are Needed? --
System Tests --
Browser Testing --
Automated Tests --
Test Isolation --
Acceptance Tests. Limits of System Tests --
Unit Tests --
Return Values --
Dependencies --
Side Effects --
Real-Life Example --
Analyzing the Code to Test --
Setting Up a Test Environment --
Avoid Global Dependencies --
Test Independently from Data Sources --
Testing Asynchronous Events --
Storing Changes in the Database --
Unpredictable Results --
Encapsulating Input Data --
Further Reflections --
Conclusion --
ch. 3 TYPO3: The Agile Future Of A Ponderous Project --
Introduction --
The History of TYPO3: Thirteen Years in Thirteen Paragraphs --
Daring to Start Over! --
Our Experience with Testing --
Policies and Techniques --
Bittersweet Elephant Pieces --
Test-Driven Development --
Tests as Documentation --
Continuous Integration --
Clean Code --
Refactoring --
Programming Guidelines --
Domain-Driven Design --
Course of Action in Development --
Developing New Code --
Extending and Modifying Code --
Optimizing Code --
Speed --
Readability --
Finding and Fixing Bugs --
Disposing of Old Code --
Test Recipes --
Inadvertently Functional Unit Test. Access to the File System --
Constructors in Interfaces --
Testing Abstract Classes --
Testing Protected Methods --
Use of Callbacks --
Into the Future --
ch. 4 Unit Testing Bad Practices --
Why Test Quality Matters --
Bad Practices and Test Smells --
Duplication in Test Code --
Assertion Roulette and Eager Test --
Fragile Test --
Obscure Test --
Problems with Global State --
Indirect Testing --
Obscure Test Names --
Lying Test --
Slow Test --
Conditional Logic in Tests --
Self-validating Tests --
Web-surfing Tests --
Mock Overkill --
Skip Epidemic --
Conclusion --
ch. 5 Quality Assurance At Digg Inc --
Problems We Are Facing --
Legacy Code Base --
How Do We Solve These Problems? --
Size Does Matter --
Team Size --
Project Size --
Code Size --
Unit Testing and You --
Choosing a Testing Framework --
Working with an Expert --
One Week in a Room --
Training Our Team --
Writing Testable Code --
Avoid Static Methods --
Dependency Injection --
Mock Objects --
Overview --
Database --
Loosely Coupled Dependencies --
Subject/Observer for Testing Class Internals. Memcached --
Mocking a Service-Oriented Architecture --
Model --
Service Query --
Service Endpoint --
The Base Classes --
Digg's Quality Assurance Process --
Testing --
Planning the Testing Effort --
Tasks --
Automation --
Benefits --
Testing Early --
Testing Often --
Challenges --
Conclusion --
ch. 6 Testing Service-Oriented APIS --
The Problems --
Solutions --
API Credentials --
API Limits --
Offline Testing of Service Protocols --
Offline Testing of Concrete Services --
Conclusion --
ch. 7 Testing A Webdav Server --
About the eZ WebDAV Component --
WebDAV --
Architecture --
Development Challenges --
Requirements Analysis --
TDD after RFC --
Testing a Server --
Automated Acceptance Tests with PHPUnit --
Capturing Test Trails --
Test Recipe --
Integration into PHPUnit --
A Custom Test Case --
The Acceptance Test Suite --
Acceptance Tests by Example --
Conclusion --
ch. 8 Testing Symfony And Symfony Projects --
Testing a Framework --
The symfony Release Management Process --
Long-term Support --
Code Coverage --
Tests versus Real Code. Running the Test Suite --
Main Lessons Learned --
Never Use the Singleton Design Pattern in PHP --
Decouple Your Code with Dependency Injection --
Lower the Number of Dependencies between Objects with an Event Dispatcher --
Testing Web Applications --
Lowering the Barrier of Entry of Testing --
Unit Tests --
Easy to Install --
Easy to Learn --
Fun to Use --
Functional Tests --
The Browser Simulator --
The Fixtures --
The CSS3 Selectors --
Testing Forms --
Debugging --
Conclusion --
ch. 9 Testing The EZCgraph Component --
Development Philosophy --
Graph Component --
Architecture --
Test Requirements --
Driver Mocking --
Mock the Driver --
Multiple Assertions --
Structs --
Expectation Generation --
Conclusion --
Testing Binary Data --
The Drivers --
Expectation Generation --
SVG --
XML Comparison --
Floating-point Problems --
Bitmap Creation --
Bitmap Comparison --
GD Version Differences --
Flash --
The Assertion --
Conclusion --
ch. 10 Testing Database Interaction --
Introduction --
Reasons Not to Write Database Tests. Why We Should Write Database Tests --
What We Should Test --
Writing Tests: Mocking Database Connections --
Writing Tests: PHPUnit Database Extension --
The Database Test Case Class --
Establishing the Test Database Connection --
Creating Data Sets --
XML Data Sets --
Flat XML Data Sets --
CSV Data Sets --
YAML Data Sets --
Database Data Sets --
Data Set Decorators --
Generating Data Sets --
Data Operations --
Creating Tests --
Testing the Loading of Data --
Testing the Modification of Data --
Using the Database Tester --
Applying Test-Driven Design to Database Testing --
Using Database Tests for Regression Testing --
Testing Problems with Data --
Testing Problems Revealed by Data --
Conclusion --
ch. 11 Quality Assurance At studiVZ --
Introduction --
About studiVZ --
Acceptance Tests --
Acceptance Tests in Agile Environments --
Selenium --
The Selenium Extension of PHPUnit --
The Technical Setup of studiVZ --
Development Environment --
Test Environment --
Best Practices --
Sins of Our Youth --
Monolithic Tests --
Static Users. Strategy Change --
Atomic Tests with Dynamic Test Data --
Robust Selenium Tests --
Test Scope Must Be Clear --
Common Functionality or Browser Compatibility as Well? --
Fix Tests Right Away! --
Stabilize Locators, and Use IDs --
Speed, the Sore Subject --
Recipes for Last-Minute Features --
Tests Are Software Too --
Capture and Replay versus Programming Tests --
The Team: A Good Mix --
We Need a DSL --
Internal DSL --
Testing_SeleniumDSL 1.0 --
Problem: Context Sensitivity --
Testing_SeleniumDSL 2.0, A Draft --
State and Outlook on Version 2.0 --
Conclusion --
ch. 12 Continuous Integration --
Introduction --
Continuous Integration --
Configuration --
Build Management and Automated Tests --
Version Management --
Continuous Integration --
Static Analysis --
Code Clones --
Refactoring --
Software Metrics --
Classic Metrics --
Object-Oriented Metrics --
RATS --
Installation --
Configuration --
Static Tests --
Programming Conventions --
Coding Guidelines --
Gradual Introduction into Legacy Projects --
Coding Standards in the Daily Work. Syntax Analysis --
Dynamic Tests --
Reporting --
Notification in the Case of Errors --
Statistics --
PHP CodeBrowser --
Deliverables --
Operations --
Advanced Topics --
Continuous Deployment --
Using a Reverse Proxy --
Continuous Integration and Agile Paradigms --
Conclusion --
ch. 13 Swoodoo: A True Agile Story --
Introduction --
Evolution: Only the Strong Survive --
How We Reached the eXtreme Side --
And While We Are Working --
The Art of Evolution --
Lack of Experience --
The Java-developer-coding-in-PHP Phenomenon --
The Nobody-but-me-understands-my-code Developer --
Conclusion --
ch. 14 Usability --
Anything Goes, But What Is the Price? --
Design Aspects --
Accessibility --
Readability --
Labels for Form Elements --
Navigating by Keyboard --
Effective Contrast --
Logo Links to Home Page --
Alternative Texts for Images --
Background Image in Background Color --
Usable Print Version --
Visible Links --
Good Bookmarks --
No Frames --
Scalable Fonts --
Technical Aspects --
Performance --
Semantic Code --
Fewer Requests --
CSS Sprites. JavaScript on Bottom, CSS on Top --
Link CSS Instead of Importing --
JavaScript --
User Guidance --
The "Fold" Myth --
Feedback on Interaction --
Navigation --
Pop-ups and Other Annoyances --
Habits and Expectations --
Fault Tolerance and Feedback --
Testing Usability --
Conclusion --
ch. 15 Performance Testing --
Introduction --
Tools --
Environmental Considerations --
Load Testing --
Apache Bench --
Pylot --
Other Load Testing Tools --
Profiling --
Callgrind --
KCachegrind --
APD --
Xdebug --
XHProf --
OProfile --
System Metrics --
strace --
Sysstat --
Custom Instrumentation --
Common Pitfalls --
Development versus Production Environments --
CPU Time --
Micro-Optimizations --
PHP as the Glue --
Priority of Optimization --
Conclusion --
ch. 16 Security --
What Is Security? --
Secure by Design --
Operations --
Physical Access. Software Development --
No Security by Obscurity --
Separation of Concerns --
A Matter of Rights --
Error Handling --
Basic Settings --
What Does Security Cost? --
The Most Common Problems --
A10. Unvalidated Redirects and Forwards --
A9. Insufficient Transport Layer Protection --
A8. Failure to Restrict URL Access --
A7. Insecure Cryptographic Storage --
A6. Security Misconfiguration --
A5. Cross Site Request Forgery (CSRF/XSRF) --
A4. Insecure Direct Object References --
A3. Broken Authentication and Session Management --
A2. Cross-Site Scripting (XSS) --
A1. Injection --
Conclusion --
ch. 17 Conclusion.
Series Title: Wrox guides.
Responsibility: Sebastian Bergmann, Stefan Priebsch.

Abstract:

Learn to develop high-quality applications and frameworks in PHP Packed with in-depth information and step-by-step guidance, this book escorts you through the process of creating, maintaining and  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/739838992> # Real-world solutions for developing high-quality PHP frameworks and applications
    a schema:Book, schema:MediaObject, schema:CreativeWork ;
    library:oclcnum "739838992" ;
    library:placeOfPublication <http://id.loc.gov/vocabulary/countries/inu> ;
    library:placeOfPublication <http://experiment.worldcat.org/entity/work/data/949749209#Place/indianapolis_ind> ; # Indianapolis, Ind.
    schema:about <http://dewey.info/class/005.12/e22/> ;
    schema:about <http://id.worldcat.org/fast/811707> ; # Application software--Development
    schema:about <http://experiment.worldcat.org/entity/work/data/949749209#Topic/computers_software_development_&_engineering_systems_analysis_&_design> ; # COMPUTERS--Software Development & Engineering--Systems Analysis & Design
    schema:about <http://experiment.worldcat.org/entity/work/data/949749209#Topic/computers_software_development_&_engineering_general> ; # COMPUTERS--Software Development & Engineering--General
    schema:about <http://id.worldcat.org/fast/1049847> ; # PHP (Computer program language)
    schema:about <http://id.loc.gov/authorities/subjects/sh95009362> ; # Application software--Development
    schema:author <http://experiment.worldcat.org/entity/work/data/949749209#Person/priebsch_stefan> ; # Stefan Priebsch
    schema:bookFormat schema:EBook ;
    schema:copyrightYear "2011" ;
    schema:creator <http://viaf.org/viaf/38009365> ; # Sebastian Bergmann
    schema:datePublished "2011" ;
    schema:description "Presents information and a variety of case studies focusing on creating sustainable applications and frameworks using PHP."@en ;
    schema:exampleOfWork <http://worldcat.org/entity/work/id/949749209> ;
    schema:genre "Electronic books"@en ;
    schema:inLanguage "en" ;
    schema:isPartOf <http://experiment.worldcat.org/entity/work/data/949749209#Series/wrox_guides> ; # Wrox guides.
    schema:isSimilarTo <http://www.worldcat.org/oclc/635494699> ;
    schema:name "Real-world solutions for developing high-quality PHP frameworks and applications"@en ;
    schema:productID "739838992" ;
    schema:publication <http://www.worldcat.org/title/-/oclc/739838992#PublicationEvent/indianapolis_ind_wiley_pub_2011> ;
    schema:publisher <http://experiment.worldcat.org/entity/work/data/949749209#Agent/wiley_pub> ; # Wiley Pub.
    schema:url <http://proquest.tech.safaribooksonline.de/9780470872499> ;
    schema:url <http://swbplus.bsz-bw.de/bsz368469816cov.htm> ;
    schema:url <http://er.llcc.edu:2048/login?url=http://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&AN=391500> ;
    schema:url <http://public.eblib.com/choice/publicfullrecord.aspx?p=706824> ;
    schema:url <http://proquest.safaribooksonline.com/9780470872499> ;
    schema:url <http://site.ebrary.com/id/10513956> ;
    schema:url <http://public.ebookcentral.proquest.com/choice/publicfullrecord.aspx?p=706824> ;
    schema:url <http://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&db=nlabk&AN=391500> ;
    schema:url <http://resolver.library.cornell.edu/cgi-bin/EBookresolver?set=Books24x7&id=41177> ;
    schema:url <http://www.books24x7.com/marc.asp?bookid=41177> ;
    schema:url <http://ebookcentral.proquest.com/lib/columbia/detail.action?docID=706824> ;
    schema:workExample <http://worldcat.org/isbn/9781118098226> ;
    schema:workExample <http://worldcat.org/isbn/9780470872499> ;
    wdrs:describedby <http://www.worldcat.org/title/-/oclc/739838992> ;
    .


Related Entities

<http://experiment.worldcat.org/entity/work/data/949749209#Person/priebsch_stefan> # Stefan Priebsch
    a schema:Person ;
    schema:familyName "Priebsch" ;
    schema:givenName "Stefan" ;
    schema:name "Stefan Priebsch" ;
    .

<http://experiment.worldcat.org/entity/work/data/949749209#Place/indianapolis_ind> # Indianapolis, Ind.
    a schema:Place ;
    schema:name "Indianapolis, Ind." ;
    .

<http://experiment.worldcat.org/entity/work/data/949749209#Series/wrox_guides> # Wrox guides.
    a bgn:PublicationSeries ;
    schema:hasPart <http://www.worldcat.org/oclc/739838992> ; # Real-world solutions for developing high-quality PHP frameworks and applications
    schema:name "Wrox guides." ;
    schema:name "Wrox guides" ;
    .

<http://experiment.worldcat.org/entity/work/data/949749209#Topic/computers_software_development_&_engineering_general> # COMPUTERS--Software Development & Engineering--General
    a schema:Intangible ;
    schema:name "COMPUTERS--Software Development & Engineering--General"@en ;
    .

<http://experiment.worldcat.org/entity/work/data/949749209#Topic/computers_software_development_&_engineering_systems_analysis_&_design> # COMPUTERS--Software Development & Engineering--Systems Analysis & Design
    a schema:Intangible ;
    schema:name "COMPUTERS--Software Development & Engineering--Systems Analysis & Design"@en ;
    .

<http://id.loc.gov/authorities/subjects/sh95009362> # Application software--Development
    a schema:Intangible ;
    schema:name "Application software--Development"@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/811707> # Application software--Development
    a schema:Intangible ;
    schema:name "Application software--Development"@en ;
    .

<http://viaf.org/viaf/38009365> # Sebastian Bergmann
    a schema:Person ;
    schema:birthDate "1978" ;
    schema:familyName "Bergmann" ;
    schema:givenName "Sebastian" ;
    schema:name "Sebastian Bergmann" ;
    .

<http://worldcat.org/isbn/9780470872499>
    a schema:ProductModel ;
    schema:isbn "0470872497" ;
    schema:isbn "9780470872499" ;
    .

<http://worldcat.org/isbn/9781118098226>
    a schema:ProductModel ;
    schema:isbn "1118098226" ;
    schema:isbn "9781118098226" ;
    .

<http://www.worldcat.org/oclc/635494699>
    a schema:CreativeWork ;
    rdfs:label "Real-world solutions for developing high-quality PHP frameworks and applications." ;
    schema:description "Print version:" ;
    schema:isSimilarTo <http://www.worldcat.org/oclc/739838992> ; # Real-world solutions for developing high-quality PHP frameworks and applications
    .

<http://www.worldcat.org/title/-/oclc/739838992>
    a genont:InformationResource, genont:ContentTypeGenericResource ;
    schema:about <http://www.worldcat.org/oclc/739838992> ; # Real-world solutions for developing high-quality PHP frameworks and applications
    schema:dateModified "2017-11-17" ;
    void:inDataset <http://purl.oclc.org/dataset/WorldCat> ;
    .


Content-negotiable representations

Close Window

Please sign in to WorldCat 

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