Php Development With Eclipde PDT
-
Upload
bastian-feder -
Category
Technology
-
view
4.957 -
download
2
description
Transcript of Php Development With Eclipde PDT
PHP developmentwith Eclipse PDT
Bastian Federpapaya Software GmbH
IPC 200829.10.2008
Me, myself & I
Application developer
PHP since 2001 @papaya since
01.2008
Agenda
Installation Configuration Views & Perspectives Projects Templates Code competetion External Tools Framework xDebug integration Plugins
Installation
Download latest revision from Eclipse website(http://www.eclipse.org/pdt/downloads)
▹ All in one (recommended): provides everything you need to run PDT.
▹ PDT Feature / Update Manager: extends an existing Eclipse, but all dependencies PDT relies on needs to be installed first.
Extract archive Copy to favorized location
(e.g. /usr/local/bin/ or another location in your application path)
Configuration
Heap space (memory allocated by JVM)size depends on system memory capacity
▹ Xms, Xmx
▹ XXMaxPermSize, XXPermSize
Eclipse PDT settings▹ disable code folding▹ formatting / linebreaks▹ validation / build settings▹ disable automatic updates
Views & Perspectives
Views or Tabs(Window > Show View)
▹ Viewport providing specific information and/or functionality
Perspective(Window > Open Perspektive)
▹ Arrangement of Views:PHP Perspektive contains e.g. 'PHP Explorer', 'Outline' and 'Project Outline'
Views & Perspectives (II)
Projects
Organizational untis Customizeable
configuration PHP include path
▹ Validation▹ Build rules▹ ...
Templates
Contextual predefined code snippets
Configure at Preferences > PHP > Templates
Code templates
Activation key:<CTRL> + space
Code templates▹ Eases typing of complex code structures (e.g.
switch – statement)▹ Minimize errors▹ Act like a form
switch ($action) { case 'read': ; break;
default: ; break; }
Code templates (II)
Capable of code completion Set cursor positioning (${cursor}) Dynamic content by use of variables
▹ ${class}, ${class_container}▹ ${function}, ${function_container}▹ ${variable}▹ ${value}
switch (${dollar}${variable}) { case ${value}: ${cursor}; break;
default: ; break; }
File templates
File templates▹ Create new files with
standardized structures
▹ Easy to create or adapt
Code completion (Code Assist)
Configuration via Preferences > PHP > Editor > Code Assist
Code completion (II)(Code Assist)
Activation key<CTRL> + space
Completes▹ PHP functions▹ Classes & functions▹ Constants▹ Code templates
Evolves with every plugin supporting this feature (e.g. JSEclipse)
Code completion (III)(Code Assist)
Code completion (IV)(Code Assist)
Documentation hint▹ declaring the name of a class to be instantiated as
the type of the 'local' class var will enable Eclipse to resolve the methods of the instantiated class:
class docuDb {
private function connect() { return mysql_connect_db(); } }
class docuHint { /** * @var docuDb Database handling */ private $dbHandler = NULL;
private function connectToDB() { $this->dbHandler = &new docuDb(); $dbh = $this->dbHandler->connect(); } }
External Tools Framework
Enables Eclipse to run ,stand-alone' applications
Two broad classes of external tools are available:▹ Ant build files▹ Everything else
External Tools Framework (II)
External Tools Framework (III)
LoactionLinux / Mac OsX: points to the phpDocumentor installation
Windows: points to the PHP executable
Working directorydirectory to store temporary data
ArgumentsLinux/ Mac OsX: command line parameters to be passed to phpDocumentor.
Windows: path to the phpDocumentor installation and command line parameters(e.g.: "D:\xampp\php\phpdoc" -c "${project_loc}/doc/tech/config/phpdoc.ini")
External Tools Framework (III)
Display in favorits menu
Standard input & output
xDebug
Debugging for PHP by Derick Rethans(http://www.xdebug.org)
Provides profiling, tracing, code coverage, … Cross platform
xDebug configuration
Add to php.ini (e.g. on Mac)
or .htaccess - file
[XDebug] ;; Only Zend OR (!) XDebug zend_extension="/Applications/xampp/xamppfiles/lib/php/php5/extensions/no-debug-non-zts-20060613/xdebug.so" xdebug.remote_enable=true xdebug.remote_host=127.0.0.1 ;if debugging on remote server, put client IP here xdebug.remote_port=9000 xdebug.remote_handler=dbgp ;; profiler xdebug.profiler_enable=Off xdebug.profiler_enable_trigger=On xdebug.profiler_output_dir=/data_lokal/temp/xdebug/profiling
#-------------------------------# # xDebug section # #-------------------------------# php_value xdebug.remote_enable 1 php_value xdebug.remote_handler bdgp php_value xdebug.remote_host 127.0.0.1 ;if debugging on remote server, put client IP here;; php_value xdebug.allowed_clients <client IP address> php_value xdebug.remote_port 9000 # profiler php_value xdebug.profiler_enable_trigger 1 php_value xdebug.profiler_enable 0 php_value xdebug.profiler_output_dir "/data_lokal/temp/xdebug/profiling"
xDebug (III)
Debug dialog
xDebug (IV)
Configure PDT to talk to xDebug
xDebug (IV)
Configure the 'Server' handling the debugging session
Plugins
Subclipsemanaging SVN repositories from inside Eclipse
JSEclipseProvides additional features supporting JavaScript
Data Tools Platformmanaging databases from inside Eclipse
Subclipse (installation)
Eclipsse update site:http://subclipse.tigris.org/update
Subclipse (configuration)
Set „auto-properties“ ▹ WinXp:
C:\Dokumente und Einstellungen\<USER>\Anwendungsdaten\Subversion\config
▹ MacOs / Linux: ~/.subversion/config
[miscellany] global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store .project .cache .settings enable-auto-props = yes
[auto-props] *.js = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL *.css = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL *.php = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL *.html = svn:eol-style=LF;svn:mime-type=text/html;svn:keywords=LastChangedDate LastChangedRevision URL *.htm = svn:eol-style=LF;svn:mime-type=text/html;svn:keywords=LastChangedDate LastChangedRevision URL *.xsl = svn:eol-style=LF *.xml = svn:eol-style=LF *.xsd = svn:eol-style=LF
Subclipse (conflict handling)
Integrated (diff-) editor to resolve conflicts Support for merging changes which do not
conflict Preview on the checkout to find conflicts
before updating the sources
Questions?
References
Eclipse PDT(http://www.eclipse.org/pdt)
Eclipse plugins▹ Subclipse (http://subclipse.tigris.org)
▹ JSEclipse (http://www.interaktonline.com/products/eclipse/jseclipse/overview)
xDebug(http://www.xdebug.org)
PhpDocumentor @ pear.php.net(http://pear.php.net/package/PhpDocumentor/docs/1.4.2)
SVN keyword substitution(http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.advanced.props.special.keywords)
License
This set of slides and the source code included in the download package is licensed under the
Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic License
http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en