Real-world solutions for developing high-quality PHP frameworks and applications / Sebastian Bergmann, Stefan Priebsch.

Presents information and a variety of case studies focusing on creating sustainable applications and frameworks using PHP.

Saved in:
Bibliographic Details
Main Authors: Bergmann, Sebastian, 1978-, Priebsch, Stefan (Author)
Format: eBook
Language:English
Published: Indianapolis, Ind. : Wiley Pub., ©2011.
Series:Wrox guides.
Subjects:
Online Access:Click for online access

MARC

LEADER 00000cam a2200000Ma 4500
001 ocn739838992
003 OCoLC
005 20241006213017.0
006 m o d
007 cr zn|||||||||
008 110529s2011 inua ob 001 0 eng d
010 |z  2010939958 
040 |a COO  |b eng  |e pn  |c COO  |d UMI  |d N$T  |d B24X7  |d YDXCP  |d OUP  |d E7B  |d HEBIS  |d EBLCP  |d OCLCQ  |d DEBSZ  |d OCLCQ  |d CDX  |d OCLCF  |d OCLCQ  |d AZK  |d LOA  |d JBG  |d AGLDB  |d MOR  |d PIFAG  |d ZCU  |d LIV  |d MERUC  |d OCLCQ  |d NJR  |d U3W  |d BRL  |d STF  |d WRM  |d VTS  |d CEF  |d NRAMU  |d ICG  |d INT  |d VT2  |d AU@  |d COO  |d OCLCQ  |d WYU  |d OCLCQ  |d UAB  |d A6Q  |d DKC  |d OCLCQ  |d M8D  |d OCLCQ  |d UKCRE  |d VLY  |d BRF  |d OCLCO  |d OCLCQ  |d OCLCO  |d OCLCL  |d SXB  |d OCLCQ 
019 |a 750328790  |a 773015602  |a 842961826  |a 961547296  |a 962591326  |a 966233552  |a 988534487  |a 991956597  |a 1037431733  |a 1038630205  |a 1045438797  |a 1058141110  |a 1083597004  |a 1153491176  |a 1162526197 
020 |a 9781118098226  |q (electronic bk.) 
020 |a 1118098226  |q (electronic bk.) 
020 |a 0470872497 
020 |a 9780470872499 
020 |z 9780470872499  |q (pbk. ;  |q alk. paper) 
020 |z 0470872497  |q (pbk. ;  |q alk. paper) 
020 |z 9781118098240 
020 |z 9781118098233 
020 |a 1283397862 
020 |a 9781283397865 
020 |a 9786613397867 
020 |a 6613397865 
024 3 |a 9780470872499 
035 |a (OCoLC)739838992  |z (OCoLC)750328790  |z (OCoLC)773015602  |z (OCoLC)842961826  |z (OCoLC)961547296  |z (OCoLC)962591326  |z (OCoLC)966233552  |z (OCoLC)988534487  |z (OCoLC)991956597  |z (OCoLC)1037431733  |z (OCoLC)1038630205  |z (OCoLC)1045438797  |z (OCoLC)1058141110  |z (OCoLC)1083597004  |z (OCoLC)1153491176  |z (OCoLC)1162526197 
037 |a CL0500000106  |b Safari Books Online 
050 4 |a QA76.73.P224  |b B47 2011eb 
072 7 |a COM  |x 051230  |2 bisacsh 
072 7 |a COM  |x 051240  |2 bisacsh 
049 |a HCDD 
100 1 |a Bergmann, Sebastian,  |d 1978-  |1 https://id.oclc.org/worldcat/entity/E39PCjtBw9rkK3g34g3cbQwgXb 
245 1 0 |a Real-world solutions for developing high-quality PHP frameworks and applications /  |c Sebastian Bergmann, Stefan Priebsch. 
260 |a Indianapolis, Ind. :  |b Wiley Pub.,  |c ©2011. 
300 |a 1 online resource (xxix, 378 pages) :  |b illustrations 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
490 1 |a Wrox guides 
504 |a Includes bibliographical references and index. 
505 0 0 |g Machine generated contents note:  |g ch. 1  |t Software Quality --  |t External Quality --  |t Internal Quality --  |t Technical Debt --  |t Constructive Quality Assurance --  |t Clean Code --  |t Explicit and Minimal Dependencies --  |t Clear Responsibilities --  |t No Duplication --  |t Short Methods with Few Execution Branches --  |t Software Metrics --  |t Cyclomatic Complexity and npath Complexity --  |t Change Risk Anti-Patterns (CRAP) Index --  |t Non-Mockable Total Recursive Cyclomatic Complexity --  |t Global Mutable State --  |t Cohesion and Coupling --  |t Tools --  |t PHPUnit --  |t phploc --  |t PHP Copy-Paste-Detector (phpcpd) --  |t PHP Dead Code Detector (phpdcd) --  |t PHP Depend (pdepend) --  |t PHP Mess Detector (phpmd) --  |t PHP CodeSniffer (phpcs) --  |t bytekit-cli --  |t PHP CodeBrowser (phpcb) --  |t CruiseControl and phpUnderControl --  |t Hudson --  |t Arbit --  |t Conclusion --  |g ch. 2  |t Software Testing --  |t Black Box and White Box Tests --  |t How Many Tests Are Needed? --  |t System Tests --  |t Browser Testing --  |t Automated Tests --  |t Test Isolation --  |t Acceptance Tests. 
505 0 0 |t Limits of System Tests --  |t Unit Tests --  |t Return Values --  |t Dependencies --  |t Side Effects --  |t Real-Life Example --  |t Analyzing the Code to Test --  |t Setting Up a Test Environment --  |t Avoid Global Dependencies --  |t Test Independently from Data Sources --  |t Testing Asynchronous Events --  |t Storing Changes in the Database --  |t Unpredictable Results --  |t Encapsulating Input Data --  |t Further Reflections --  |t Conclusion --  |g ch. 3  |t TYPO3: The Agile Future Of A Ponderous Project --  |t Introduction --  |t The History of TYPO3: Thirteen Years in Thirteen Paragraphs --  |t Daring to Start Over! --  |t Our Experience with Testing --  |t Policies and Techniques --  |t Bittersweet Elephant Pieces --  |t Test-Driven Development --  |t Tests as Documentation --  |t Continuous Integration --  |t Clean Code --  |t Refactoring --  |t Programming Guidelines --  |t Domain-Driven Design --  |t Course of Action in Development --  |t Developing New Code --  |t Extending and Modifying Code --  |t Optimizing Code --  |t Speed --  |t Readability --  |t Finding and Fixing Bugs --  |t Disposing of Old Code --  |t Test Recipes --  |t Inadvertently Functional Unit Test. 
505 0 0 |t Access to the File System --  |t Constructors in Interfaces --  |t Testing Abstract Classes --  |t Testing Protected Methods --  |t Use of Callbacks --  |t Into the Future --  |g ch. 4  |t Unit Testing Bad Practices --  |t Why Test Quality Matters --  |t Bad Practices and Test Smells --  |t Duplication in Test Code --  |t Assertion Roulette and Eager Test --  |t Fragile Test --  |t Obscure Test --  |t Problems with Global State --  |t Indirect Testing --  |t Obscure Test Names --  |t Lying Test --  |t Slow Test --  |t Conditional Logic in Tests --  |t Self-validating Tests --  |t Web-surfing Tests --  |t Mock Overkill --  |t Skip Epidemic --  |t Conclusion --  |g ch. 5  |t Quality Assurance At Digg Inc --  |t Problems We Are Facing --  |t Legacy Code Base --  |t How Do We Solve These Problems? --  |t Size Does Matter --  |t Team Size --  |t Project Size --  |t Code Size --  |t Unit Testing and You --  |t Choosing a Testing Framework --  |t Working with an Expert --  |t One Week in a Room --  |t Training Our Team --  |t Writing Testable Code --  |t Avoid Static Methods --  |t Dependency Injection --  |t Mock Objects --  |t Overview --  |t Database --  |t Loosely Coupled Dependencies --  |t Subject/Observer for Testing Class Internals. 
505 0 0 |t Memcached --  |t Mocking a Service-Oriented Architecture --  |t Model --  |t Service Query --  |t Service Endpoint --  |t The Base Classes --  |t Digg's Quality Assurance Process --  |t Testing --  |t Planning the Testing Effort --  |t Tasks --  |t Automation --  |t Benefits --  |t Testing Early --  |t Testing Often --  |t Challenges --  |t Conclusion --  |g ch. 6  |t Testing Service-Oriented APIS --  |t The Problems --  |t Solutions --  |t API Credentials --  |t API Limits --  |t Offline Testing of Service Protocols --  |t Offline Testing of Concrete Services --  |t Conclusion --  |g ch. 7  |t Testing A Webdav Server --  |t About the eZ WebDAV Component --  |t WebDAV --  |t Architecture --  |t Development Challenges --  |t Requirements Analysis --  |t TDD after RFC --  |t Testing a Server --  |t Automated Acceptance Tests with PHPUnit --  |t Capturing Test Trails --  |t Test Recipe --  |t Integration into PHPUnit --  |t A Custom Test Case --  |t The Acceptance Test Suite --  |t Acceptance Tests by Example --  |t Conclusion --  |g ch. 8  |t Testing Symfony And Symfony Projects --  |t Testing a Framework --  |t The symfony Release Management Process --  |t Long-term Support --  |t Code Coverage --  |t Tests versus Real Code. 
505 0 0 |t Running the Test Suite --  |t Main Lessons Learned --  |t Never Use the Singleton Design Pattern in PHP --  |t Decouple Your Code with Dependency Injection --  |t Lower the Number of Dependencies between Objects with an Event Dispatcher --  |t Testing Web Applications --  |t Lowering the Barrier of Entry of Testing --  |t Unit Tests --  |t Easy to Install --  |t Easy to Learn --  |t Fun to Use --  |t Functional Tests --  |t The Browser Simulator --  |t The Fixtures --  |t The CSS3 Selectors --  |t Testing Forms --  |t Debugging --  |t Conclusion --  |g ch. 9  |t Testing The EZCgraph Component --  |t Development Philosophy --  |t Graph Component --  |t Architecture --  |t Test Requirements --  |t Driver Mocking --  |t Mock the Driver --  |t Multiple Assertions --  |t Structs --  |t Expectation Generation --  |t Conclusion --  |t Testing Binary Data --  |t The Drivers --  |t Expectation Generation --  |t SVG --  |t XML Comparison --  |t Floating-point Problems --  |t Bitmap Creation --  |t Bitmap Comparison --  |t GD Version Differences --  |t Flash --  |t The Assertion --  |t Conclusion --  |g ch. 10  |t Testing Database Interaction --  |t Introduction --  |t Reasons Not to Write Database Tests. 
505 0 0 |t Why We Should Write Database Tests --  |t What We Should Test --  |t Writing Tests: Mocking Database Connections --  |t Writing Tests: PHPUnit Database Extension --  |t The Database Test Case Class --  |t Establishing the Test Database Connection --  |t Creating Data Sets --  |t XML Data Sets --  |t Flat XML Data Sets --  |t CSV Data Sets --  |t YAML Data Sets --  |t Database Data Sets --  |t Data Set Decorators --  |t Generating Data Sets --  |t Data Operations --  |t Creating Tests --  |t Testing the Loading of Data --  |t Testing the Modification of Data --  |t Using the Database Tester --  |t Applying Test-Driven Design to Database Testing --  |t Using Database Tests for Regression Testing --  |t Testing Problems with Data --  |t Testing Problems Revealed by Data --  |t Conclusion --  |g ch. 11  |t Quality Assurance At studiVZ --  |t Introduction --  |t About studiVZ --  |t Acceptance Tests --  |t Acceptance Tests in Agile Environments --  |t Selenium --  |t The Selenium Extension of PHPUnit --  |t The Technical Setup of studiVZ --  |t Development Environment --  |t Test Environment --  |t Best Practices --  |t Sins of Our Youth --  |t Monolithic Tests --  |t Static Users. 
505 0 0 |t Strategy Change --  |t Atomic Tests with Dynamic Test Data --  |t Robust Selenium Tests --  |t Test Scope Must Be Clear --  |t Common Functionality or Browser Compatibility as Well? --  |t Fix Tests Right Away! --  |t Stabilize Locators, and Use IDs --  |t Speed, the Sore Subject --  |t Recipes for Last-Minute Features --  |t Tests Are Software Too --  |t Capture and Replay versus Programming Tests --  |t The Team: A Good Mix --  |t We Need a DSL --  |t Internal DSL --  |t Testing_SeleniumDSL 1.0 --  |t Problem: Context Sensitivity --  |t Testing_SeleniumDSL 2.0, A Draft --  |t State and Outlook on Version 2.0 --  |t Conclusion --  |g ch. 12  |t Continuous Integration --  |t Introduction --  |t Continuous Integration --  |t Configuration --  |t Build Management and Automated Tests --  |t Version Management --  |t Continuous Integration --  |t Static Analysis --  |t Code Clones --  |t Refactoring --  |t Software Metrics --  |t Classic Metrics --  |t Object-Oriented Metrics --  |t RATS --  |t Installation --  |t Configuration --  |t Static Tests --  |t Programming Conventions --  |t Coding Guidelines --  |t Gradual Introduction into Legacy Projects --  |t Coding Standards in the Daily Work. 
505 0 0 |t Syntax Analysis --  |t Dynamic Tests --  |t Reporting --  |t Notification in the Case of Errors --  |t Statistics --  |t PHP CodeBrowser --  |t Deliverables --  |t Operations --  |t Advanced Topics --  |t Continuous Deployment --  |t Using a Reverse Proxy --  |t Continuous Integration and Agile Paradigms --  |t Conclusion --  |g ch. 13  |t Swoodoo: A True Agile Story --  |t Introduction --  |t Evolution: Only the Strong Survive --  |t How We Reached the eXtreme Side --  |t And While We Are Working --  |t The Art of Evolution --  |t Lack of Experience --  |t The Java-developer-coding-in-PHP Phenomenon --  |t The Nobody-but-me-understands-my-code Developer --  |t Conclusion --  |g ch. 14  |t Usability --  |t Anything Goes, But What Is the Price? --  |t Design Aspects --  |t Accessibility --  |t Readability --  |t Labels for Form Elements --  |t Navigating by Keyboard --  |t Effective Contrast --  |t Logo Links to Home Page --  |t Alternative Texts for Images --  |t Background Image in Background Color --  |t Usable Print Version --  |t Visible Links --  |t Good Bookmarks --  |t No Frames --  |t Scalable Fonts --  |t Technical Aspects --  |t Performance --  |t Semantic Code --  |t Fewer Requests --  |t CSS Sprites. 
505 0 0 |t JavaScript on Bottom, CSS on Top --  |t Link CSS Instead of Importing --  |t JavaScript --  |t User Guidance --  |t The "Fold" Myth --  |t Feedback on Interaction --  |t Navigation --  |t Pop-ups and Other Annoyances --  |t Habits and Expectations --  |t Fault Tolerance and Feedback --  |t Testing Usability --  |t Conclusion --  |g ch. 15  |t Performance Testing --  |t Introduction --  |t Tools --  |t Environmental Considerations --  |t Load Testing --  |t Apache Bench --  |t Pylot --  |t Other Load Testing Tools --  |t Profiling --  |t Callgrind --  |t KCachegrind --  |t APD --  |t Xdebug --  |t XHProf --  |t OProfile --  |t System Metrics --  |t strace --  |t Sysstat --  |t Custom Instrumentation --  |t Common Pitfalls --  |t Development versus Production Environments --  |t CPU Time --  |t Micro-Optimizations --  |t PHP as the Glue --  |t Priority of Optimization --  |t Conclusion --  |g ch. 16  |t Security --  |t What Is Security? --  |t Secure by Design --  |t Operations --  |t Physical Access. 
505 0 0 |t Software Development --  |t No Security by Obscurity --  |t Separation of Concerns --  |t A Matter of Rights --  |t Error Handling --  |t Basic Settings --  |t What Does Security Cost? --  |t The Most Common Problems --  |g A10.  |t Unvalidated Redirects and Forwards --  |g A9.  |t Insufficient Transport Layer Protection --  |g A8.  |t Failure to Restrict URL Access --  |g A7.  |t Insecure Cryptographic Storage --  |g A6.  |t Security Misconfiguration --  |g A5.  |t Cross Site Request Forgery (CSRF/XSRF) --  |g A4.  |t Insecure Direct Object References --  |g A3.  |t Broken Authentication and Session Management --  |g A2.  |t Cross-Site Scripting (XSS) --  |g A1.  |t Injection --  |t Conclusion --  |g ch. 17  |t Conclusion. 
520 |a Presents information and a variety of case studies focusing on creating sustainable applications and frameworks using PHP. 
546 |a English. 
650 0 |a PHP (Computer program language) 
650 0 |a Application software  |x Development. 
650 7 |a COMPUTERS  |x Software Development & Engineering  |x General.  |2 bisacsh 
650 7 |a COMPUTERS  |x Software Development & Engineering  |x Systems Analysis & Design.  |2 bisacsh 
650 7 |a Application software  |x Development  |2 fast 
650 7 |a PHP (Computer program language)  |2 fast 
700 1 |a Priebsch, Stefan.  |4 aut 
758 |i has work:  |a Real-world solutions for developing high-quality PHP frameworks and applications (Text)  |1 https://id.oclc.org/worldcat/entity/E39PCGt4wT4h3W6m7YjQHQ4hjK  |4 https://id.oclc.org/worldcat/ontology/hasWork 
776 0 8 |i Print version:  |a Bergmann, Sebastian, 1978-  |t Real-world solutions for developing high-quality PHP frameworks and applications.  |d Indianapolis, IN : Wiley Pub., ©2011  |z 9780470872499  |z 0470872497  |w (OCoLC)635494699 
830 0 |a Wrox guides. 
856 4 0 |u https://ebookcentral.proquest.com/lib/holycrosscollege-ebooks/detail.action?docID=706824  |y Click for online access 
903 |a EBC-AC 
994 |a 92  |b HCD