O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Phalcon 
Giant Killer
Jacksonfdam 
http://about.me/jacksonfdam 
https://bitbucket.org/jacksonfdam 
https://github.com/jacksonfdam 
http://linked...
A thanks to 
For encourage and believe in the 
passage of knowledge. 
(And to release me from work to be here.) ”
Why? 
• Use of frameworks has become mandatory in 
professional development with PHP 
• They offer a philosophy and organi...
How PHP works? 
1. PHP have dynamic and weak typing discipline 
2. PHP is interpreted (not compiled) 
3. Every time a scri...
How traditional php frameworks works? 
1. Many files with classes and functions are read at every request made. 
Disk read...
How a PHP C extension works? 
1. C extensions are loaded together with PHP one time, on the web server 
dispatch process 
...
What is Phalcon? 
Phalcon is an open source, full stack framework for PHP 5 
written as a C-extension, optimized for high ...
How Phalcon works? 
1. Components are loosely coupled. You may use the components you 
want without depending on a full st...
What is Phalcon?
Compare how Phalcon is faster than other 
frameworks 
Traditional Frameworks Phalcon 
Interpretation of hundreds 
or thous...
Framework Benchmark
Framework Benchmark
Framework Benchmark 
<h1>Hello!</h1>
Test Environment 
Operative System: Mac OS X Snow Leopard 10.6.8 
• Web Server: Apache httpd 2.2.21 
• PHP: 5.3.8 + APC 3....
Framework Benchmark 
ab -n 1000 -c 5 http://localhost/bench/phalcon
Framework/Requests per Second
Framework Total Requests/Average Time
Number of Interpreted Files per Request
Allocated Memory per Request
Installation 
To use phalcon on Windows you can download a DLL library. Edit your 
php.ini file and then append at the end...
Requirements 
Prerequisite packages are: 
PHP >= 5.3 development resources 
GCC compiler (Linux/Solaris) 
Git (if not alre...
Requirements 
Prerequisite packages are: 
PHP >= 5.3 development resources 
GCC compiler (Linux/Solaris) 
Git (if not alre...
Requirements 
Specific packages for common platforms: 
#Ubuntu 
sudo apt-get install php5-dev libpcre3-dev gcc make php5-m...
Compilation 
git clone --depth=1 git://github.com/phalcon/cphalcon.git 
cd cphalcon/build 
sudo ./install
Configure 
Add extension to your php configuration: 
#Suse: Add this line in your php.ini 
extension=phalcon.so 
#Centos/R...
Configure 
Phalcon automatically detects your architecture, however, you can force the compilation for a specific architec...
Mac OS X 
On a Mac OS X system you can compile and install the extension from the source code: 
Requirements 
Prerequisite...
Installation on XAMPP 
XAMPP is an easy to install Apache distribution containing MySQL, PHP 
and Perl. Once you download ...
Installation on XAMPP 
XAMPP is always releasing 32 bit versions of Apache and PHP. You will 
need to download the x86 ver...
Installation on XAMPP 
Extract the library from the archive to get the Phalcon DLL:
Installation on XAMPP 
Copy the file php_phalcon.dll to the PHP extensions. If you have installed 
XAMPP in the c:xampp fo...
Installation on XAMPP 
Edit the php.ini file, it is located at C:xamppphpphp.ini. It can be edited with 
Notepad or a sim...
Installation on XAMPP 
Restart the Apache Web Server from the XAMPP Control Center. This will load the 
new PHP configurat...
Installation on XAMPP 
Open your browser to navigate to 
http://localhost. The XAMPP welcome 
page will appear. Click on t...
Creating a project 
File structure 
Phalcon does not impose a particular file structure for application 
development. Due ...
Creating a project 
For the purposes of this tutorial and as a starting point, we suggest the 
following structure: 
tutor...
Beautiful URLs 
#/tutorial/.htaccess 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^$ public/ [L] 
RewriteRule ...
Bootstrap 
<?php 
try { 
//Register an autoloader 
$loader = new PhalconLoader(); 
$loader->registerDirs(array( 
'../app/c...
Creating a Controller 
By default Phalcon will look for a controller named “Index”. It is the starting point when no contr...
Creating a Controller 
Sending output to a view 
Sending output to the screen from the controller is at times necessary bu...
Creating a Model 
Phalcon brings the first ORM for PHP entirely written in C-language. Instead of increasing the complexit...
Creating a Model 
A model should be located in the app/models directory (app/models/Users.php). The model maps to the “use...
Setting a Database Connection 
In order to be able to use a database connection and subsequently access data through our m...
Setting a Database Connection 
<?php 
try { 
//Register an autoloader 
$loader = new PhalconLoader(); 
$loader->registerDi...
Volt: Template Engine 
Volt is an ultra-fast and designer friendly templating language written in C for 
PHP. It provides ...
Volt: Template Engine
Volt: Template Engine 
Volt views are compiled to pure PHP code, so basically they save the effort of writing PHP code 
ma...
Thank you. 
@jacksonfdam
Próximos SlideShares
Carregando em…5
×

Phalcon - Giant Killer

1.523 visualizações

Publicada em

Presentation about, Phalcon , in Mobile Track of TDC 2014 - Porto Alegre

Publicada em: Tecnologia

Phalcon - Giant Killer

  1. 1. Phalcon Giant Killer
  2. 2. Jacksonfdam http://about.me/jacksonfdam https://bitbucket.org/jacksonfdam https://github.com/jacksonfdam http://linkedin.com/in/jacksonfdam @jacksonfdam
  3. 3. A thanks to For encourage and believe in the passage of knowledge. (And to release me from work to be here.) ”
  4. 4. Why? • Use of frameworks has become mandatory in professional development with PHP • They offer a philosophy and organized structures to easily maintain projects writing less code and making work more fun
  5. 5. How PHP works? 1. PHP have dynamic and weak typing discipline 2. PHP is interpreted (not compiled) 3. Every time a script is loaded, should be interpreted by PHP 4. If a bytecode cache (like APC) isn’t used, syntax checking is performed every time
  6. 6. How traditional php frameworks works? 1. Many files with classes and functions are read at every request made. Disk reading is expensive in terms of performance 2. Modern frameworks use lazy loading technique (autoload) for load and execute only code needed 3. Continuous loading/interpreting could be expensive and impact your application performance 4. When you use a framework most of the code remain the same across development. Why load and interpret it every time?
  7. 7. How a PHP C extension works? 1. C extensions are loaded together with PHP one time, on the web server dispatch process 2. Classes and functions provided by the extension are ready to use for any application 3. The code isn’t interpreted because it is compiled to a specific platform and processor
  8. 8. What is Phalcon? Phalcon is an open source, full stack framework for PHP 5 written as a C-extension, optimized for high performance. You don’t need to learn or use the C language, since the functionality is exposed as PHP classes ready for you to use. Phalcon also is loosely coupled, allowing you to use its objects as glue components based on the needs of your application.
  9. 9. How Phalcon works? 1. Components are loosely coupled. You may use the components you want without depending on a full stack 2. Low-level optimizations provide the lowest overhead for MVC-based applications 3. Interact with databases with maximum performance by using a C-language ORM for PHP 4. Phalcon is directly engaged with PHP, so it can directly access internal structures optimizing execution as well
  10. 10. What is Phalcon?
  11. 11. Compare how Phalcon is faster than other frameworks Traditional Frameworks Phalcon Interpretation of hundreds or thousands of PHP lines on each request YES NO Load dozens of files in each request YES NO Checking the existence of functions, methods, classes, constants at each request YES NO Low-level optimizations gaining microseconds for each request NO YES
  12. 12. Framework Benchmark
  13. 13. Framework Benchmark
  14. 14. Framework Benchmark <h1>Hello!</h1>
  15. 15. Test Environment Operative System: Mac OS X Snow Leopard 10.6.8 • Web Server: Apache httpd 2.2.21 • PHP: 5.3.8 + APC 3.1.9 (Without Xdebug) • CPU: 3.06 Ghz Intel Core 2 Duo • Main Memory: 4GB 1067 MHz DDR3 • Hard Disk: 500GB SCSI/SAS HDD
  16. 16. Framework Benchmark ab -n 1000 -c 5 http://localhost/bench/phalcon
  17. 17. Framework/Requests per Second
  18. 18. Framework Total Requests/Average Time
  19. 19. Number of Interpreted Files per Request
  20. 20. Allocated Memory per Request
  21. 21. Installation To use phalcon on Windows you can download a DLL library. Edit your php.ini file and then append at the end: extension=php_phalcon.dll Restart your webserver.
  22. 22. Requirements Prerequisite packages are: PHP >= 5.3 development resources GCC compiler (Linux/Solaris) Git (if not already installed in your system - unless you download the package from GitHub and upload it on your server via FTP/SFTP)
  23. 23. Requirements Prerequisite packages are: PHP >= 5.3 development resources GCC compiler (Linux/Solaris) Git (if not already installed in your system - unless you download the package from GitHub and upload it on your server via FTP/SFTP)
  24. 24. Requirements Specific packages for common platforms: #Ubuntu sudo apt-get install php5-dev libpcre3-dev gcc make php5-mysql #Suse sudo yast -i gcc make autoconf2.13 php5-devel php5-pear php5-mysql #CentOS/RedHat/Fedora sudo yum install php-devel pcre-devel gcc make #Solaris pkg install gcc-45 php-53 apache-php53
  25. 25. Compilation git clone --depth=1 git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install
  26. 26. Configure Add extension to your php configuration: #Suse: Add this line in your php.ini extension=phalcon.so #Centos/RedHat/Fedora: Add a file called phalcon.ini in /etc/php.d/ with this content: extension=phalcon.so #Ubuntu/Debian: Add a file called 30-phalcon.ini in /etc/php.d/ with this content: extension=phalcon.so #Debian with php5-fpm: Add a file called 30-phalcon.ini in /etc/php5/fpm/conf.d/30-phalcon.ini with this content: extension=phalcon.so Restart the webserver.
  27. 27. Configure Phalcon automatically detects your architecture, however, you can force the compilation for a specific architecture: cd cphalon/build sudo ./install 32bits sudo ./install 64bits sudo ./install safe
  28. 28. Mac OS X On a Mac OS X system you can compile and install the extension from the source code: Requirements Prerequisite packages are: PHP >= 5.3 development resources XCode #brew brew tap homebrew/homebrew-php brew install php53-phalcon brew install php54-phalcon brew install php55-phalcon brew install php56-phalcon #MacPorts sudo port install php53-phalcon sudo port install php54-phalcon sudo port install php55-phalcon sudo port install php56-phalcon
  29. 29. Installation on XAMPP XAMPP is an easy to install Apache distribution containing MySQL, PHP and Perl. Once you download XAMPP, all you have to do is extract it and start using it. Below are detailed instructions on how to install Phalcon on XAMPP for Windows. Using the latest XAMPP version is highly recommended.
  30. 30. Installation on XAMPP XAMPP is always releasing 32 bit versions of Apache and PHP. You will need to download the x86 version of Phalcon for Windows from the download section. After downloading the Phalcon library you will have a zip file like the one shown below:
  31. 31. Installation on XAMPP Extract the library from the archive to get the Phalcon DLL:
  32. 32. Installation on XAMPP Copy the file php_phalcon.dll to the PHP extensions. If you have installed XAMPP in the c:xampp folder, the extension needs to be in c:xamppphpext
  33. 33. Installation on XAMPP Edit the php.ini file, it is located at C:xamppphpphp.ini. It can be edited with Notepad or a similar program. We recommend Notepad++ to avoid issues with line endings. Append at the end of the file: extension=php_phalcon.dll and save it.
  34. 34. Installation on XAMPP Restart the Apache Web Server from the XAMPP Control Center. This will load the new PHP configuration.
  35. 35. Installation on XAMPP Open your browser to navigate to http://localhost. The XAMPP welcome page will appear. Click on the link phpinfo(). phpinfo() will output a significant amount of information on screen about the current state of PHP. Scroll down to check if the phalcon extension has been loaded correctly. If you can see the phalcon version in the phpinfo() output, congrats!, You are now flying with Phalcon.
  36. 36. Creating a project File structure Phalcon does not impose a particular file structure for application development. Due to the fact that it is loosely coupled, you can implement Phalcon powered applications with a file structure you are most comfortable using.
  37. 37. Creating a project For the purposes of this tutorial and as a starting point, we suggest the following structure: tutorial/ app/ controllers/ models/ views/ public/ css/ img/ js/
  38. 38. Beautiful URLs #/tutorial/.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule> #/tutorial/.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
  39. 39. Bootstrap <?php try { //Register an autoloader $loader = new PhalconLoader(); $loader->registerDirs(array( '../app/controllers/', '../app/models/' ))->register(); //Create a DI $di = new PhalconDIFactoryDefault(); //Setup the view component $di->set('view', function(){ $view = new PhalconMvcView(); $view->setViewsDir('../app/views/'); return $view; }); //Setup a base URI so that all generated URIs include the "tutorial" folder $di->set('url', function(){ $url = new PhalconMvcUrl(); $url->setBaseUri('/tutorial/'); return $url; }); //Handle the request $application = new PhalconMvcApplication($di); echo $application->handle()->getContent(); } catch(PhalconException $e) { echo "PhalconException: ", $e->getMessage(); }
  40. 40. Creating a Controller By default Phalcon will look for a controller named “Index”. It is the starting point when no controller or action has been passed in the request. The index controller (app/controllers/IndexController.php) looks like: <?php class IndexController extends PhalconMvcController { public function indexAction() { echo "<h1>Hello!</h1>"; } }
  41. 41. Creating a Controller Sending output to a view Sending output to the screen from the controller is at times necessary but not desirable as most purists in the MVC community will attest. Everything must be passed to the view that is responsible for outputting data on screen. Phalcon will look for a view with the same name as the last executed action inside a directory named as the last executed controller. In our case (app/views/index/index.phtml): <?php echo "<h1>Hello!</h1>"; Our controller (app/controllers/IndexController.php) now has an empty action definition: <?php class IndexController extends PhalconMvcController { public function indexAction() { } }
  42. 42. Creating a Model Phalcon brings the first ORM for PHP entirely written in C-language. Instead of increasing the complexity of development, it simplifies it. Before creating our first model, we need to create a database table outside of Phalcon to map it to. A simple table to store registered users can be defined like this: CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(70) NOT NULL, `email` varchar(70) NOT NULL, PRIMARY KEY (`id`) );
  43. 43. Creating a Model A model should be located in the app/models directory (app/models/Users.php). The model maps to the “users” table: <?php class Users extends PhalconMvcModel { }
  44. 44. Setting a Database Connection In order to be able to use a database connection and subsequently access data through our models, we need to specify it in our bootstrap process. A database connection is just another service that our application has that can be used for several components:
  45. 45. Setting a Database Connection <?php try { //Register an autoloader $loader = new PhalconLoader(); $loader->registerDirs(array( '../app/controllers/', '../app/models/' ))->register(); //Create a DI $di = new PhalconDIFactoryDefault(); / /Setup the database service $di->set('db', function(){ return new PhalconDbAdapterPdoMysql(array( "host" => "localhost", "username" => "root", "password" => "secret", "dbname" => "test_db" )); }); //Setup the view component $di->set('view', function(){ $view = new PhalconMvcView(); $view->setViewsDir('../app/views/'); return $view; }); //Setup a base URI so that all generated URIs include the "tutorial" folder $di->set('url', function(){ $url = new PhalconMvcUrl(); $url->setBaseUri('/tutorial/'); return $url; }); //Handle the request $application = new PhalconMvcApplication($di); echo $application->handle()->getContent(); } catch(Exception $e) { echo "PhalconException: ", $e->getMessage(); }
  46. 46. Volt: Template Engine Volt is an ultra-fast and designer friendly templating language written in C for PHP. It provides you a set of helpers to write views in an easy way. Volt is highly integrated with other components of Phalcon, just as you can use it as a stand-alone component in your applications.
  47. 47. Volt: Template Engine
  48. 48. Volt: Template Engine Volt views are compiled to pure PHP code, so basically they save the effort of writing PHP code manually: {# app/views/products/show.volt #}{% block last_products %}{% for product in products %} * Name: {{ product.name|e }} {% if product.status == "Active" %} Price: {{ product.price + product.taxes/100 }} {% endif %}{% endfor %}{% endblock %}
  49. 49. Thank you. @jacksonfdam

×