Presentation is loading. Please wait.

Presentation is loading. Please wait.

PHP Software Engineering. Programming Languages Language Features & Paradigms.

Similar presentations


Presentation on theme: "PHP Software Engineering. Programming Languages Language Features & Paradigms."— Presentation transcript:

1 PHP Software Engineering

2 Programming Languages Language Features & Paradigms

3 Paradigms Imperative vs. Declarative Object Oriented Class / Inheritance Prototype based Procedural Programming Languages http://en.wikipedia.org/wiki/Programming_paradigms http://en.wikipedia.org/wiki/Imperative_programmingg http://en.wikipedia.org/wiki/Declarative_programmhttp://en.wikipedia.org/wiki/Declarative_programming http://en.wikipedia.org/wiki/Object-oriented_programminggramming http://en.wikipedia.org/wiki/Class-based_prhttp://en.wikipedia.org/wiki/Class-based_programming http://en.wikipedia.org/wiki/Prototype-based_programmingd_programming http://en.wikipedia.org/wiki/Procedural_prhttp://en.wikipedia.org/wiki/Procedural_programming

4 Typing Static vs. Dynamic Strong vs. Weak Duck Typing Programming Languages http://en.wikipedia.org/wiki/Type_system

5 Typing Static vs. Dynamic Strong vs. Weak Duck Typing Programming Languages http://en.wikipedia.org/wiki/Type_system

6 Compiled vs. Scripting Compiled (machine code) c, c++ Compiled (byte-code) Java, C# (.net) Scripting PHP, Ruby, Python, ECMAScript (Java / Action) Programming Languages http://en.wikipedia.org/wiki/Scripting_language http://en.wikipedia.org/wiki/Compiled_language http://en.wikipedia.org/wiki/Virtual_machine hhttp://en.wikipedia.org/wiki/Just-in-time_compilationation

7 PHP Scripting Language Virtual Machine: Zend Engine Written in C Multi-paradigm Imperative (procedural) Object-oriented (inheritance) Weak dynamic typing Programming Languages http://en.wikipedia.org/wiki/Zend_Engine http://en.wikipedia.org/wiki/PHP

8 Design Patterns Building Blocks for Software

9 Overview Applications Model 1 Model 2 Programming Patterns Architectural Patterns Design Patterns http://en.wikipedia.org/wiki/Model_1 http://en.wikipedia.org/wiki/Model_2 http://en.wikipedia.org/wiki/Designhttp://en.wikipedia.org/wiki/Design_pattern_(computer_science) http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science).wikipedia.org/wiki/Architectural_pattern_(computer_science)

10 Model 1 vs. Model 2 Coined in the Java world Model 1 apps are procedural applications Typically built as a series of scripts, original JSP pages Model 2 apps are tiered applications and/or applications that have separation of concerns Design Patterns http://en.wikipedia.org/wiki/Model_1 http://en.wikipedia.org/wiki/Model_2 http://en.wikipedia.org/wiki/Separahttp://en.wikipedia.org/wiki/Separation_of_concern http://en.wikipedia.org/wiki/Separation_of_presentation_and_contentrg/wiki/Separation_of_presentation_and_content

11 Programming Patterns Most notable source: Gang of Four Object oriented design patterns Design Patterns http://en.wikipedia.org/wiki/Design_Patterns_(bookhttp://en.wikipedia.org/wiki/Design_Patterns_(book) http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ted-Addison-Wesley-Professional/dp/0201633612/ http://en.wikipedia.org/wiki/Design_pattern_(comphttp://en.wikipedia.org/wiki/Design_pattern_(computer_science)

12 Example: Factory Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Factory_method_pattern http://en.wikipedia.org/wiki/Creational_pattern

13 Example: Lazy Loading Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Lazy_initialization_pattern

14 Example: Singleton Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Singleton_pattern

15 Example: Composite Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Composite_pattern http://devzone.zend.com/node/view/id/7

16 Example: Adapter Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Adapter_patter n

17 Example: Observer Design Patterns / Software Patterns http://en.wikipedia.org/wiki/Observer_patter n http://www.php.net/~helly/php/ext/spl/

18 Programming Patterns Most notable source: Martin Fowler PoEAA: Patterns of Enterprise Application Architecture Design Patterns http://en.wikipedia.org/wiki/Architectural_pattern_(computer_sciencehttp://en.wikipedia.org/wiki/Architectural_pattern_(computer_science) http://martinfowler.com/eaaCatalog/ http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420/

19 Non-PoEAA Presentation-abstraction-control Service-oriented architecture (distributed) Mulit/Three-Tier Peer-to-Peer (distributed) Design Patterns / Architectural Patterns http://en.wikipedia.org/wiki/Presentation-abstraction-control http://en.wikipedia.org/wiki/Service-oriented_architecture http://en.wikipedia.org/wiki/Three-tier_(computing) http://en.wikipedia.org/wiki/Peer-to-peer.wikipedia.org/wiki/Peer-to-peer

20 PoEAA Logical: Domain Model & Table Module Data: Table Row & Row Data Gateway, ActiveRecord, Data Mapper Other: Repository, Registry, Plugin Model-View-Controller, Front Controller, Two-step View Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/ http://en.wikipedia.org/wiki/Active_record_pattern_record_pattern

21 Example: Domain Model http://en.wikipedia.org/wiki/Domain_Model http://martinfowler.com/eaaCatalog/domainMo del.htmlMo del.html Design Patterns / Architectural Patterns

22 Example: Table Module http://martinfowler.com/eaaCatalog/tableModu le.html Design Patterns / Architectural Patterns

23 Example: Table Gateway Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/tableDataGateway.h tml

24 Example: Row Gateway Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/rowDataGateway.ht ml

25 Example: Active Record Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/activeRecord.html http://en.wikipedia.org/wiki/Active_record_pattern

26 Example: Active Record Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/activeRecord.html http://en.wikipedia.org/wiki/Active_record_pattern

27 Example: MVC Design Patterns / Architectural Patterns http://en.wikipedia.org/wiki/Model-view-controller http://martinfowler.com/eaaCatalog/modelViewController.html

28 Example: Registry Design Patterns / Architectural Patterns http://martinfowler.com/eaaCatalog/registry.html

29 Software Development Process Best Practices for Building Software

30 Development Process http://en.wikipedia.org/wiki/Programming_style http://martinfowler.com/articles/continuousIntegration.htmlegration.html http://en.wikipedia.org/wiki/Unit_testing htthttp://en.wikipedia.org/wiki/Revision_control Overview Unit Testing Source Control Coding Standards Continuous Integration Documentation

31 Development Process http://en.wikipedia.org/wiki/XUnit Unit Testing Why write unit tests? prevent regressions ensure software meets requirements tests help document what the software does XUnit pattern unit testing framework with equivalents in PHP, Java, Ruby, C#, and more XUnit is one of the most popular ways to test code

32 Development Process http://subversion.tigris.org/ http://git-scm.com/ http://www.github.comw.github.com http:/http://en.wikipedia.org/wiki/Distributed_revision_controlki/Distributed_revisi Source Control Why use source control? Keep track of changes you made Light-weight backup Great for collaboration, even if there is only one of you now Common SCM (Source Code Management) tools Subversion (SVN) widely used, well-supported by tools client-server model, integrates well with Apache Git distributed model, trendy somewhat high learning curve, especially if youre used to SVN or CVS

33 Development Process http://pear.php.net/pepr/pepr-proposal-show.php?id=426 http://pear.php.net/manual/en/standards.php http://framework.zend.com/manual/en/coding-standard.htmlmework.zend.com/manual/en/coding-standard.h Coding Standards Why have coding standards?readability for yourself and colleaguesprevents mistakes, syntax errorsPear Coding Standardsdon't write your own standards, its not worth your timePear standards are commonly accepted, and align with other languages as well

34 Development Process http://cruisecontrol.sourceforge.net/ http://code.google.com/p/xinc/ http://www.atlassian.com/software/bamboo//www.atlassian.com/software/ba Build & Deploy Create a testable and repeatable deployment process Run some functional testsdocument your application Code comments API Docs automate - take the human out of it continuous integration find the right level of process

35 PHP Ecosystem Software & Tools

36 PHP Ecosystem http://framework.zend.com/ http://codeigniter.com/ http://cakephp.org/tp://cakephp.org/ http:http://www.symfony-project.org/g/ http://en.wikipehttp://en.wikipedia.org/wiki/Web_application_frameworklication_framework Application Frameworks Application Framework Zend Framework toolkit / glue style: use what you want or use it all CakePHP & CodeIgnitor lightweight MVC frameworks with data models SymfonyMVC, more admin and configuration features

37 PHP Ecosystem http://www.simpletest.org/ http://phpt.info/ http://en.wikipedia.org/wiki/Unit_testingn.wikipedia.org/w http://www.phpunit.de/ttp://www.phpunit.de/ Unit Testing Frameworks PHPUnit Most popular, derived from NUnit patternSimpletest phpt

38 PHP Ecosystem http://en.wikipedia.org/wiki/Comparison_of_text_editors http://en.wikipedia.org/wiki/Integrated_development_environmentironment http://www.xdebug.org/ IDEs & Editors Editors pattern matched syntax highlighting & code foldingtypically multi- languageespecially good at text & code manipulationIDEsLanguage introspection (code completion)Errors / Warnings / Syntax CheckDebugging capabilities (breakpoints, watches, profiling)

39 PHP Ecosystem http://www.zend.com/en/products/studio/ http://www.eclipse.org/pdt/ http://www.ultraedit.com/ultraedit.com/ http://www.ahttp://www.aptana.com http://www.macromates.comtes.com IDEs & Editors Eclipse-based IDEsZend Studio (paid) / PDT (open source) great PHP editing and debugging Aptana javascript & css editing & code completion is excellentdebugging with xdebugText Editors Ultraedit on WindowsTextmate on Mac E is Textmate on Windows


Download ppt "PHP Software Engineering. Programming Languages Language Features & Paradigms."

Similar presentations


Ads by Google