Routing as it supposed to be. Nothing more. Nothing less.

Register namespaces, prefixes, directories or classes. Take advantage of the autoloader events and maintain full control over what files are loaded and from where.

Writing REST servers and applications has never been easier. No boilerplate. Simple services will fit in one file.

Phalcon is built upon a powerful yet easy to understand and use pattern called Dependency Injection. Initialize or define services once - and use them virtually anywhere throughout the application.

Build single and multi-module applications with ease and pleasure. Using the file structure, scheme and patterns you already know.

Provides the autoloading mechanism of PHP classes following PSR-4.

In this case, you can use either a micro or full stack application to meet your goal. In addition, a powerful set of HTTP helpers.

Dependency Injection and Location of services and it's itself a container for them.

The cache component allows faster access to frequently used or already processed data. It supports many backends such as Redis, Memcached, Mongo, Files, Apc and more

When a process performs multiple database operations, it might be important that each step is completed successfully so that data integrity can be maintained. Transactions offer the ability to ensure that all database operations have been executed successfully before the data is committed to the database.

PHQL is a high-level, object-oriented SQL dialect that allows to write queries using a standardized SQL-like language. PHQL is implemented as a parser (written in C) that translates syntax in that of the target RDBMS. To achieve the highest performance possible, Phalcon provides a parser that uses the same technology as SQLite. This technology provides a small in-memory parser with a very low memory footprint that is also thread-safe.

A powerful ORM is provided by Phalcon allowing you to manipulate database records as classes and objects. MySQL, PostgreSQL and SQLite are supported out of the box.

Improve your performance with many of the backend caches that Phalcon provides

Transactions in Phalcon allows to keep the data integrity safe.

Template Engines Views represent the user interface of your application

Template Engine (Volt) A template engine inspired by Jinja but built in C for PHP

i18n Translate your applications to many languages easily

Forms Builder Easily create HTML forms

Flash messages Flash messages are used to notify the user about the state of actions.

Template Engines Views represent the user interface of your application. Views are often HTML files with embedded PHP code that perform tasks related solely to the presentation of the data. Views handle the job of providing data to the web browser or other tool that is used to make requests from your application. <html> <body> <div class='top'> <?php $this->partial('shared/ad_banner'); ?> </div> <div class='content'> <h1>Robots</h1> <p> Check out our specials for robots: </p> ... </div> <div class='footer'> <?php $this->partial('shared/footer'); ?> </div> </body> </html>

Template Engine (Volt) Volt is an ultra-fast and designer friendly templating language written in Zephir/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. {# app/views/products/show.volt #} {% block last_products %} {% for prod in products %} * Name: {{ prod.name|e }} {% if prod.status == 'Active' %} Price: {{ prod.price + prod.taxes/100}} {% endif %} {% endfor %} {% endblock %}

i18n The component Phalcon\Translate aids in creating multilingual applications. Applications using this component, display content in different languages, based on the user's chosen language supported by the application. // app/messages/en.php $messages = [ 'hi' => 'Hello', 'bye' => 'Good Bye', 'hi-name' => 'Hello %name%', 'song' => 'This song is %song%' ]; // app/messages/es.php $messages = [ 'hi' => 'Hola', 'bye' => 'Adiós', 'hi-name' => 'Hola %name%', 'song' => 'Esta canción es %song%' ]; use Phalcon\Mvc\Controller; use Phalcon\Translate\Adapter\NativeArray; // UserController.php class UserController extends Controller { protected function getTranslation() { // Browser's best language $language = $this ->request ->getBestLanguage(); // Check the lang translation file $fileName = 'app/messages/' . $language . '.php'; if (file_exists($fileName) { require $fileName; } else { // Fallback to some default require 'app/messages/en.php'; } // Return a translation object return new NativeArray( array( 'content' => $messages ) ); } public function indexAction() { $this->view->name = 'Mike'; $this->view->t = $this ->getTranslation(); } } // user.volt <p><?php echo $t->_('hi'), ' ', $name; ?></p>

Forms Builder Each element in the form can be rendered as required by the developer. Internally, Phalcon\Tag is used to produce the correct HTML for each element and you can pass additional HTML attributes as the second parameter of render(): use Phalcon\Forms\Form; use Phalcon\Forms\Element\Text; use Phalcon\Forms\Element\Select; $form = new Form(); $form->add(new Text('name')); $form->add(new Text('telephone')); $form->add( new Select( 'telephoneType', array( 'H' => 'Home', 'C' => 'Cellphone' ) ) );