SlideShare a Scribd company logo
1 of 30
PHP Development Tools 2.0 –
Success Story.
Michael Spector,
Zend Technologies




                              Copyright © 2007, Zend Technologies Inc.
Overview


  •   PDT 1.0 history
  •   PDT NG goals
  •   Dynamic languages toolkit (DLTK)
  •   PDT 2.0 features
  •   Extending PDT example
  •   Q&A




                                         Project History | 2-Apr-09 | 2
Project history


  • Project creation review in March 2006.
  • First release in September 2007.
  • Initial contribution by IBM and Zend.




                                             Project History | 2-Apr-09 | 3
PDT 1.0 requirements

  • Providing developers with PHP capabilities:
      Source editing:
        •   Code Assist
        •   Syntax coloring
        •   Code folding
        •   Open Declaration (CTRL + click)
        •   Annotations (task, breakpoints, CVS)
      Code Inspection & Navigation:
        • PHP Explorer View
        • Outline View
        • Open PHP Element
      Debugging:
        • Local script debugging.
        • Remote application debugging.

                                                   Project History | 2-Apr-09 | 4
PDT 1.0 : initial design



          PHP Source Editing
                                                PHP Model

       WST Source Editing




       PHP
     Debugger

                    PHP Explorer   Project Outline      Outline




                                                      Project History | 2-Apr-09 | 5
PDT next generation: goals

  • Performance & scalability improvements.
      Model memory management improvement.
      Model change notifications narrowing.


  • Create type binding infrastructure that can be
    reused for:
      Better code assist.
      Static analysis tool.
      Refactoring.


  • Ability to separate resources from code.
  • More JDT-like features.
                                               Name of this section | 2-Apr-09 | 6
Best practices: JDT

                              JDT




                          JDT Clones

        CDT        RDT              DLTK   JSDT
                                                              …



                         DLTK Extenders
        DLTK       DLTK             DLTK
                                           PDT
                                                              …
      JavaScript   Ruby             TCL



                                           Name of this section | 2-Apr-09 | 7
What does DLTK provide?

      Core               UI            Debug                   Extra

     Indexer       Script Explorer   Interpreters              Mylyn


  Search Engine       Outline          DBGP                     RSE

    Problems
                   Type Hierarchy     Debug UI
    Reporting

    Validation     Call Hierarchy


    Build Path     Open Element


  Type Inference       Editor


  Type Hierarchy      Actions
                        …
       …

                                                    Name of this section | 2-Apr-09 | 8
New design



      PHP Source Editing    PHP Enabler



    WST Source Editing     DLTK Core




                            PHP Enabler
            PHP
          Debugger
                            DLTK UI




                              Name of this section | 2-Apr-09 | 9
PHP Development Tools 2.0
Features




                            Copyright © 2007, Zend Technologies Inc.
Lighter & Faster

  • Utilizing proven DLTK (JDT) indexing mechanism.
      No more loading model into memory on startup.
      Granulated search mechanism.


  • Optimized memory management.
      Limited memory usage by most recently used elements and
       AST.




                                                  Name of this section | 2-Apr-09 | 11
Build Path configuration

  • Ability to separate application code from
    resources.




                                           Name of this section | 2-Apr-09 | 12
Mark occurrences

  • Highlight all occurrences of the selected element:




  • Highlight all method exit points:


                                         And more…




                                           Name of this section | 2-Apr-09 | 13
Override annotations

  • Triangle annotation indicates overridden or implemented method:




                                                     Name of this section | 2-Apr-09 | 14
Type Hierarchy

  • Makes easier understanding the hierarchy of class or
    interface.




                                            Name of this section | 2-Apr-09 | 15
Smart Code Assist

  • Sophisticated code assist proposals using type inference.




                                                           Name of this section | 2-Apr-09 | 16
PHP 5.3 support (PDT 2.1)

  •   Choose PHP 5.3 version when creating a project:




  •   Code Assist:




  •   PHP Explorer & Outline:




                                                        Name of this section | 2-Apr-09 | 17
Extending PHP
Development Tools 2.0




                        Copyright © 2007, Zend Technologies Inc.
XSS in PHP #1

  • What’s wrong with the following code?




  • Calling this script normally:




                                            Name of this section | 2-Apr-09 | 19
XSS in PHP #2

  • What happens if the following URL is used?




  • Solution:




                                                 Name of this section | 2-Apr-09 | 20
XSS protection plug-in example


  • Warn PHP developer when script parameters are
    accessed in a non-“safe” way.

  • Input is considered “safe” when it’s passed
    through htmlentities() PHP function.




                                           Name of this section | 2-Apr-09 | 21
XSS protection plug-in example (step 1)

  • Step #1: Create new plug-in
  • Step #2: Add build participant extension:




                                           Name of this section | 2-Apr-09 | 22
XSS protection plug-in example (step 2)

 • Build participant factory




 • Implement build participant




                                     Name of this section | 2-Apr-09 | 23
AST search algorithm


  1. Process PHP script AST.           Module
                                                          (PHP script root node)
                                      Declaration

  2. When function call node is
                                           ………
     met, and it’s a htmlentities()
     call – remember this node.
                                               PHP
                                                                   (htmlentities())
                                               Call
  3. When special array variable is         Expression
     met – verify that the parent
     was htmlentities() function
                                               Array
     call.                                                        ($_GET[“name”])
                                              Variable
                                             Reference




                                                    Name of this section | 2-Apr-09 | 24
XSS protection plug-in example (step 3)

  • Determine the function call name:




                                        Name of this section | 2-Apr-09 | 25
XSS protection plug-in example

  • “Catch” unsafe references:




                                 Name of this section | 2-Apr-09 | 26
XSS protection plug-in example (hooray!)

  • Final result:




                                    Name of this section | 2-Apr-09 | 27
PDT Adopters


               Zend Studio for Eclipse
               http://www.zend.com/en/products/studio/



               IBM REST Development Framework
               http://www.projectzero.org/



               Aspect PHP Development Tools
               http://code.google.com/p/apdt/


               Smarty Support for PDT
               http://code.google.com/p/smartypdt/




                                                         Name of this section | 2-Apr-09 | 28
Additional Resources

  • PDT site:
        http://www.eclipse.org/pdt


  • PDT download:
        http://download.eclipse.org/tools/pdt/downloads


  • Extending PDT examples:
        http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pdt/examples/?root=Tools_
         Project


  • PDT bundle with local debugger:
        http://www.zend.com/en/community/pdt


  • PHP stack download:
        http://www.zend.com/en/community/zend-server-ce




                                                                   Name of this section | 2-Apr-09 | 29
Thank You




            Name of this section | 2-Apr-09 | 30

More Related Content

What's hot

Inc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis TechniqueInc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis Technique남준 김
 
Practical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyPractical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyGuillaume Laforge
 
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTThesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTTuononenP
 
J9's MethodHandle Compilation Pipeline #JFokus2015
J9's MethodHandle Compilation Pipeline #JFokus2015J9's MethodHandle Compilation Pipeline #JFokus2015
J9's MethodHandle Compilation Pipeline #JFokus2015DanHeidinga
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineChun-Yu Wang
 
OpenDaylight and YANG
OpenDaylight and YANGOpenDaylight and YANG
OpenDaylight and YANGCoreStack
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1drusso
 
Tail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkTail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkESUG
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGuillaume Laforge
 
JavaOne 2016: Life after Modularity
JavaOne 2016: Life after ModularityJavaOne 2016: Life after Modularity
JavaOne 2016: Life after ModularityDanHeidinga
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 

What's hot (20)

Inc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis TechniqueInc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis Technique
 
Rails
RailsRails
Rails
 
Core java
Core javaCore java
Core java
 
Practical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyPractical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in Groovy
 
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTThesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
 
Next Stop, Android
Next Stop, AndroidNext Stop, Android
Next Stop, Android
 
J9's MethodHandle Compilation Pipeline #JFokus2015
J9's MethodHandle Compilation Pipeline #JFokus2015J9's MethodHandle Compilation Pipeline #JFokus2015
J9's MethodHandle Compilation Pipeline #JFokus2015
 
Dancing with dalvik
Dancing with dalvikDancing with dalvik
Dancing with dalvik
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
 
OpenDaylight and YANG
OpenDaylight and YANGOpenDaylight and YANG
OpenDaylight and YANG
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1
 
Tail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkTail Call Elimination in Open Smalltalk
Tail Call Elimination in Open Smalltalk
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
 
JavaOne 2016: Life after Modularity
JavaOne 2016: Life after ModularityJavaOne 2016: Life after Modularity
JavaOne 2016: Life after Modularity
 
LLVM
LLVMLLVM
LLVM
 
upload test 1
upload test 1upload test 1
upload test 1
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
Practical Groovy DSL
Practical Groovy DSLPractical Groovy DSL
Practical Groovy DSL
 
Os Rego
Os RegoOs Rego
Os Rego
 

Viewers also liked

Inter-Electrode Correlation
Inter-Electrode CorrelationInter-Electrode Correlation
Inter-Electrode CorrelationRyanClement
 
Collab partnership in downturn clps summer school 2010
Collab partnership in downturn clps summer school 2010Collab partnership in downturn clps summer school 2010
Collab partnership in downturn clps summer school 2010Mohammed (MIDHAL) Dhalech
 
Amia Chi Citizen Public Health V2
Amia Chi Citizen Public Health V2Amia Chi Citizen Public Health V2
Amia Chi Citizen Public Health V2bonander
 
Khader Mohammed (khadermohammed@aol.com)ProSpective Assessment
Khader Mohammed (khadermohammed@aol.com)ProSpective AssessmentKhader Mohammed (khadermohammed@aol.com)ProSpective Assessment
Khader Mohammed (khadermohammed@aol.com)ProSpective AssessmentKhader Mohammed
 
Bus Sim Enterprise
Bus Sim EnterpriseBus Sim Enterprise
Bus Sim Enterprisedajordan63
 
Cochlear Implants
Cochlear ImplantsCochlear Implants
Cochlear ImplantsRyanClement
 

Viewers also liked (8)

Inter-Electrode Correlation
Inter-Electrode CorrelationInter-Electrode Correlation
Inter-Electrode Correlation
 
Geo equality act factsheet
Geo equality act factsheetGeo equality act factsheet
Geo equality act factsheet
 
Sol's presentation
Sol's presentationSol's presentation
Sol's presentation
 
Collab partnership in downturn clps summer school 2010
Collab partnership in downturn clps summer school 2010Collab partnership in downturn clps summer school 2010
Collab partnership in downturn clps summer school 2010
 
Amia Chi Citizen Public Health V2
Amia Chi Citizen Public Health V2Amia Chi Citizen Public Health V2
Amia Chi Citizen Public Health V2
 
Khader Mohammed (khadermohammed@aol.com)ProSpective Assessment
Khader Mohammed (khadermohammed@aol.com)ProSpective AssessmentKhader Mohammed (khadermohammed@aol.com)ProSpective Assessment
Khader Mohammed (khadermohammed@aol.com)ProSpective Assessment
 
Bus Sim Enterprise
Bus Sim EnterpriseBus Sim Enterprise
Bus Sim Enterprise
 
Cochlear Implants
Cochlear ImplantsCochlear Implants
Cochlear Implants
 

Similar to PHP Development Tools 2.0 Success Story

Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Oliver Gierke
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using GoCloudOps2005
 
Decorating code (Research Paper)
Decorating code (Research Paper)Decorating code (Research Paper)
Decorating code (Research Paper)Jenna Pederson
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?Oliver Gierke
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf Conference
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Toolsrjsmelo
 
Fix: static code analysis into our project
Fix: static code analysis into our project Fix: static code analysis into our project
Fix: static code analysis into our project noelchris3
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick startEnrico Zimuel
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...OpenShift Origin
 
Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Bastian Feder
 
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiGrâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiJérémy Derussé
 
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUMichael Dawson
 
Server Independent Programming
Server Independent ProgrammingServer Independent Programming
Server Independent ProgrammingZendCon
 
Php Development With Eclipde PDT
Php Development With Eclipde PDTPhp Development With Eclipde PDT
Php Development With Eclipde PDTBastian Feder
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsMarcelo Pinheiro
 
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovSvetlin Nakov
 
Painless Perl Ports with cpan2port
Painless Perl Ports with cpan2portPainless Perl Ports with cpan2port
Painless Perl Ports with cpan2portBenny Siegert
 
How to deploy & optimize eZ Publish (2014)
How to deploy & optimize eZ Publish (2014)How to deploy & optimize eZ Publish (2014)
How to deploy & optimize eZ Publish (2014)Kaliop-slide
 

Similar to PHP Development Tools 2.0 Success Story (20)

Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 
Decorating code (Research Paper)
Decorating code (Research Paper)Decorating code (Research Paper)
Decorating code (Research Paper)
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
 
Fix: static code analysis into our project
Fix: static code analysis into our project Fix: static code analysis into our project
Fix: static code analysis into our project
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick start
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009
 
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiGrâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
 
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EU
 
Server Independent Programming
Server Independent ProgrammingServer Independent Programming
Server Independent Programming
 
Php Development With Eclipde PDT
Php Development With Eclipde PDTPhp Development With Eclipde PDT
Php Development With Eclipde PDT
 
Rebuilding our Foundation
Rebuilding our FoundationRebuilding our Foundation
Rebuilding our Foundation
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability Systems
 
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
 
Painless Perl Ports with cpan2port
Painless Perl Ports with cpan2portPainless Perl Ports with cpan2port
Painless Perl Ports with cpan2port
 
How to deploy & optimize eZ Publish (2014)
How to deploy & optimize eZ Publish (2014)How to deploy & optimize eZ Publish (2014)
How to deploy & optimize eZ Publish (2014)
 

Recently uploaded

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

PHP Development Tools 2.0 Success Story

  • 1. PHP Development Tools 2.0 – Success Story. Michael Spector, Zend Technologies Copyright © 2007, Zend Technologies Inc.
  • 2. Overview • PDT 1.0 history • PDT NG goals • Dynamic languages toolkit (DLTK) • PDT 2.0 features • Extending PDT example • Q&A Project History | 2-Apr-09 | 2
  • 3. Project history • Project creation review in March 2006. • First release in September 2007. • Initial contribution by IBM and Zend. Project History | 2-Apr-09 | 3
  • 4. PDT 1.0 requirements • Providing developers with PHP capabilities:  Source editing: • Code Assist • Syntax coloring • Code folding • Open Declaration (CTRL + click) • Annotations (task, breakpoints, CVS)  Code Inspection & Navigation: • PHP Explorer View • Outline View • Open PHP Element  Debugging: • Local script debugging. • Remote application debugging. Project History | 2-Apr-09 | 4
  • 5. PDT 1.0 : initial design PHP Source Editing PHP Model WST Source Editing PHP Debugger PHP Explorer Project Outline Outline Project History | 2-Apr-09 | 5
  • 6. PDT next generation: goals • Performance & scalability improvements.  Model memory management improvement.  Model change notifications narrowing. • Create type binding infrastructure that can be reused for:  Better code assist.  Static analysis tool.  Refactoring. • Ability to separate resources from code. • More JDT-like features. Name of this section | 2-Apr-09 | 6
  • 7. Best practices: JDT JDT JDT Clones CDT RDT DLTK JSDT … DLTK Extenders DLTK DLTK DLTK PDT … JavaScript Ruby TCL Name of this section | 2-Apr-09 | 7
  • 8. What does DLTK provide? Core UI Debug Extra Indexer Script Explorer Interpreters Mylyn Search Engine Outline DBGP RSE Problems Type Hierarchy Debug UI Reporting Validation Call Hierarchy Build Path Open Element Type Inference Editor Type Hierarchy Actions … … Name of this section | 2-Apr-09 | 8
  • 9. New design PHP Source Editing PHP Enabler WST Source Editing DLTK Core PHP Enabler PHP Debugger DLTK UI Name of this section | 2-Apr-09 | 9
  • 10. PHP Development Tools 2.0 Features Copyright © 2007, Zend Technologies Inc.
  • 11. Lighter & Faster • Utilizing proven DLTK (JDT) indexing mechanism.  No more loading model into memory on startup.  Granulated search mechanism. • Optimized memory management.  Limited memory usage by most recently used elements and AST. Name of this section | 2-Apr-09 | 11
  • 12. Build Path configuration • Ability to separate application code from resources. Name of this section | 2-Apr-09 | 12
  • 13. Mark occurrences • Highlight all occurrences of the selected element: • Highlight all method exit points: And more… Name of this section | 2-Apr-09 | 13
  • 14. Override annotations • Triangle annotation indicates overridden or implemented method: Name of this section | 2-Apr-09 | 14
  • 15. Type Hierarchy • Makes easier understanding the hierarchy of class or interface. Name of this section | 2-Apr-09 | 15
  • 16. Smart Code Assist • Sophisticated code assist proposals using type inference. Name of this section | 2-Apr-09 | 16
  • 17. PHP 5.3 support (PDT 2.1) • Choose PHP 5.3 version when creating a project: • Code Assist: • PHP Explorer & Outline: Name of this section | 2-Apr-09 | 17
  • 18. Extending PHP Development Tools 2.0 Copyright © 2007, Zend Technologies Inc.
  • 19. XSS in PHP #1 • What’s wrong with the following code? • Calling this script normally: Name of this section | 2-Apr-09 | 19
  • 20. XSS in PHP #2 • What happens if the following URL is used? • Solution: Name of this section | 2-Apr-09 | 20
  • 21. XSS protection plug-in example • Warn PHP developer when script parameters are accessed in a non-“safe” way. • Input is considered “safe” when it’s passed through htmlentities() PHP function. Name of this section | 2-Apr-09 | 21
  • 22. XSS protection plug-in example (step 1) • Step #1: Create new plug-in • Step #2: Add build participant extension: Name of this section | 2-Apr-09 | 22
  • 23. XSS protection plug-in example (step 2) • Build participant factory • Implement build participant Name of this section | 2-Apr-09 | 23
  • 24. AST search algorithm 1. Process PHP script AST. Module (PHP script root node) Declaration 2. When function call node is ……… met, and it’s a htmlentities() call – remember this node. PHP (htmlentities()) Call 3. When special array variable is Expression met – verify that the parent was htmlentities() function Array call. ($_GET[“name”]) Variable Reference Name of this section | 2-Apr-09 | 24
  • 25. XSS protection plug-in example (step 3) • Determine the function call name: Name of this section | 2-Apr-09 | 25
  • 26. XSS protection plug-in example • “Catch” unsafe references: Name of this section | 2-Apr-09 | 26
  • 27. XSS protection plug-in example (hooray!) • Final result: Name of this section | 2-Apr-09 | 27
  • 28. PDT Adopters Zend Studio for Eclipse http://www.zend.com/en/products/studio/ IBM REST Development Framework http://www.projectzero.org/ Aspect PHP Development Tools http://code.google.com/p/apdt/ Smarty Support for PDT http://code.google.com/p/smartypdt/ Name of this section | 2-Apr-09 | 28
  • 29. Additional Resources • PDT site:  http://www.eclipse.org/pdt • PDT download:  http://download.eclipse.org/tools/pdt/downloads • Extending PDT examples:  http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pdt/examples/?root=Tools_ Project • PDT bundle with local debugger:  http://www.zend.com/en/community/pdt • PHP stack download:  http://www.zend.com/en/community/zend-server-ce Name of this section | 2-Apr-09 | 29
  • 30. Thank You Name of this section | 2-Apr-09 | 30