diff --git a/README.md b/README.md index 9a2e91aa08ca..5e6fce581900 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,12 @@ updated when any changes are made to this repository. You are welcome to fork this repository and add, correct or enhance the documentation yourselves. -The documentation is written using [reStructuredText](http://sphinx.pocoo.org/rest.html) and is currently available in 9 different languages: +The documentation is written using [reStructuredText](http://sphinx.pocoo.org/rest.html) and is currently available in 10 different languages: * [English (en)](https://docs.phalconphp.com/en/latest/index.html) * [Chinese (zh)](https://docs.phalconphp.com/zh/latest/index.html) * [French (fr)](https://docs.phalconphp.com/fr/latest/index.html) +* [Indonesian (id)](https://docs.phalconphp.com/id/latest/index.html) * [Japanese (ja)](https://docs.phalconphp.com/ja/latest/index.html) * [Polish (pl)](https://docs.phalconphp.com/pl/latest/index.html) * [Portuguese (pt)](https://docs.phalconphp.com/pt/latest/index.html) diff --git a/en/api/index.rst b/en/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/en/api/index.rst +++ b/en/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/en/reference/config.rst b/en/reference/config.rst index b6cb1e8de73e..a89f18bbb60d 100755 --- a/en/reference/config.rst +++ b/en/reference/config.rst @@ -149,3 +149,38 @@ The above code produces the following: ) There are more adapters available for this components in the `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/en/reference/db.rst b/en/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100644 --- a/en/reference/db.rst +++ b/en/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/en/reference/routing.rst b/en/reference/routing.rst index 11488227e43a..0ac481ebbc96 100755 --- a/en/reference/routing.rst +++ b/en/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/es/api/Phalcon_Db_Dialect_Oracle.rst b/es/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/es/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/es/api/index.rst b/es/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/es/api/index.rst +++ b/es/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/es/conf.py b/es/conf.py index 5e03cf0d92d3..6834b66d6560 100644 --- a/es/conf.py +++ b/es/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/es/reference/config.rst b/es/reference/config.rst index b6cb1e8de73e..322218b3bd31 100644 --- a/es/reference/config.rst +++ b/es/reference/config.rst @@ -149,3 +149,38 @@ The above code produces the following: ) There are more adapters available for this components in the `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/es/reference/db.rst b/es/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100644 --- a/es/reference/db.rst +++ b/es/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/es/reference/routing.rst b/es/reference/routing.rst index 11488227e43a..0ac481ebbc96 100644 --- a/es/reference/routing.rst +++ b/es/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/fr/api/index.rst b/fr/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/fr/api/index.rst +++ b/fr/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/fr/conf.py b/fr/conf.py index f1d0977310d5..c2af22a5db4d 100755 --- a/fr/conf.py +++ b/fr/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/fr/reference/config.rst b/fr/reference/config.rst index fdf6a82425a1..b7c8d7ba4ced 100755 --- a/fr/reference/config.rst +++ b/fr/reference/config.rst @@ -151,3 +151,38 @@ Le code fournit le résultat suivant : Il y a plus d'adaptateurs disponible pour ce composant dans l' There are more adapters available for this components in the `Incubateur Phalcon `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/fr/reference/db.rst b/fr/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100755 --- a/fr/reference/db.rst +++ b/fr/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/fr/reference/routing.rst b/fr/reference/routing.rst index 11488227e43a..0ac481ebbc96 100755 --- a/fr/reference/routing.rst +++ b/fr/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/id/Makefile b/id/Makefile new file mode 100755 index 000000000000..8bc42ee9baab --- /dev/null +++ b/id/Makefile @@ -0,0 +1,153 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PhalconDocumentation.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PhalconDocumentation.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/PhalconDocumentation" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PhalconDocumentation" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." diff --git a/id/_static/background.png b/id/_static/background.png new file mode 100644 index 000000000000..db948e7dedf5 Binary files /dev/null and b/id/_static/background.png differ diff --git a/id/_static/configurationblock.css b/id/_static/configurationblock.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/id/_static/docs.css b/id/_static/docs.css new file mode 100755 index 000000000000..f876eef1e653 --- /dev/null +++ b/id/_static/docs.css @@ -0,0 +1,488 @@ + +.hr { margin: 20px 0; border-bottom: 1px solid #c0c0c0; } + +.icon-huge { font-size: 112px; color: #70b599; } + +body { color: #4d4a4c; font-size: 14px; font-family: "Open Sans", Helvetica, Arial; font-weight: 400; } + +a { color: #70b599; } + +a:hover { color: #70b599; text-decoration: none; } + +a.btn-phalcon, button.btn-phalcon { background: #84d3b2; color: white; border-top: none; border-left: none; border-right: none; border-bottom: 4px solid #70b599; margin-top: 25px; margin-bottom: 25px; padding-left: 40px; padding-right: 40px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -ms-border-radius: 15px; border-radius: 15px; -webkit-transition: all 0.1s ease-out; -moz-transition: all 0.1s ease-out; -ms-transition: all 0.1s ease-out; -o-transition: all 0.1s ease-out; transition: all 0.1s ease-out; } + +a:hover.btn-phalcon, button:hover.btn-phalcon { background: #7cc8a8; color: white; border-color: #63a187; } + +a:focus, .nav > li > a:focus { text-decoration: none !important; } + +a.super { font-size: 55%; vertical-align: super; } + +.nav > li > a:focus { background-color: transparent !important; } + +.homepage-header { padding-top: 20px; background: #d6f9d1; background: -moz-radial-gradient(center, ellipse cover, #d6f9d1 0%, #91dbce 38%, #0a6278 100%); background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #d6f9d1), color-stop(38%, #91dbce), color-stop(100%, #0a6278)); background: -webkit-radial-gradient(center, ellipse cover, #d6f9d1 0%, #91dbce 38%, #0a6278 100%); background: -o-radial-gradient(center, ellipse cover, #d6f9d1 0%, #91dbce 38%, #0a6278 100%); background: -ms-radial-gradient(center, ellipse cover, #d6f9d1 0%, #91dbce 38%, #0a6278 100%); background: radial-gradient(ellipse at center, #d6f9d1 0%, #91dbce 38%, #0a6278 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d6f9d1', endColorstr='#0a6278',GradientType=1 ); } + +.page-header { margin: 0; border: none; padding-top: 20px; -webkit-box-shadow: 0 0 3px 0 rgba(37, 82, 95, 0.9); box-shadow: 0 0 3px 0 rgba(37, 82, 95, 0.9); background: #68c4c2; background: -moz-linear-gradient(top, #167a92 0%, #68c4c2 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #167a92), color-stop(100%, #68c4c2)); background: -webkit-linear-gradient(top, #167a92 0%, #68c4c2 100%); background: -o-linear-gradient(top, #167a92 0%, #68c4c2 100%); background: -ms-linear-gradient(top, #167a92 0%, #68c4c2 100%); background: linear-gradient(to bottom, #167a92 0%, #68c4c2 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$start', endColorstr='$end',GradientType=0 ); z-index: 100; } + +.HYPE_scene { background-color: transparent !important; } + +header .navbar { margin-top: -15px; } +header .navbar-toggle { border-color: #ffffff; margin-top: 15px; } +header .navbar-toggle span { background: #ffffff; } +header .phalcon-logo { display: block; width: 200px; height: 90px; background: transparent url("//static.phalconphp.com/www/images/phalcon.png") 0 0 no-repeat; background-size: 200px 90px; } +header .main-menu { margin-top: 38px; } +header .main-menu li { margin: 0 3px; } +header .main-menu li a { color: #bae1e6; font-size: 17px; text-shadow: 1px 1px 1px #0e566a; padding: 8px 18px; } +header .main-menu li a:hover { color: white; background-color: transparent; } +header .main-menu li a.active { color: white; background-color: rgba(0, 0, 0, 0.15); -webkit-box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.2); -webkit-border-radius: 18px; -moz-border-radius: 18px; -ms-border-radius: 18px; border-radius: 18px; } +header a.github { margin-right: 0px; background: transparent url("//static.phalconphp.com/www/images/github.png") center center no-repeat; opacity: 0.6; } +header a:hover.github { opacity: 0.9; } +header a.twitter { background: transparent url("//static.phalconphp.com/www/images/twitter.png") center center no-repeat; opacity: 0.6; } +header a:hover.twitter { opacity: 0.9; } +header a#dropdownLanguageMenu { background: transparent url("//static.phalconphp.com/www/images/frame.png") 6px 3px no-repeat; margin-right: 0; } +header a:hover#dropdownLanguageMenu { background-position: 6px -30px; } +header #dropdownLanguageMenu img { margin-bottom: 4px; } +header #dropdownLanguageMenu span { margin-bottom: 4px; } +header .dropdown-menu { background: rgba(255, 255, 255, 0.6); } +header .dropdown-menu li a { font-size: 12px; color: #4d4a4c; text-shadow: none; background-color: transparent; background-position: 8px 6px; background-repeat: no-repeat; padding: 4px 0 4px 32px; } +header .dropdown-menu li a:hover { background-color: rgba(255, 255, 255, 0.4); color: #4d4a4c; } +header .tagline { margin-top: 50px; text-align: center; } +header .tagline h1 { font-size: 22px; font-weight: 700; } +header .tagline p { font-size: 16px; } +header .tagline p a { color: #4d4a4c; border-bottom: 1px dotted #4d4a4c; } +header .tagline p a:hover { color: #4d4a4c; border-bottom: 1px solid #4d4a4c; } +header .anim { width: 100%; height: 400px; } +header .sublinks { color: #97c6ad; } +header .sublinks a { font-size: 13px; color: #4d4a4c; margin-left: 10px; margin-right: 10px; } +header .sublinks a:hover { border-bottom: 1px dotted #4d4a4c; margin-right: 10px; } + +.heading { background: #548d90 url("//static.phalconphp.com/www/images/heading.png") center center no-repeat; padding: 20px 0; font-size: 24px; font-weight: 700; margin: 0; border: none; -webkit-box-shadow: inset 0 0 7px 0 rgba(58, 100, 102, 0.9); box-shadow: inset 0 0 7px 0 rgba(58, 100, 102, 0.9); } + +.heading h2 { padding: 0; margin: 0; color: #ffffff; } + +a.btn-video { display: block; background-color: #c8ebdc; border-top: 3px solid #70b99a; padding: 20px 0; text-align: center; color: #619884; font-size: 24px; font-weight: 700; -webkit-transition: all 0.15s ease-in; -moz-transition: all 0.15s ease-in; -ms-transition: all 0.15s ease-in; -o-transition: all 0.15s ease-in; transition: all 0.15s ease-in; } + +a.btn-video i { font-weight: 400; font-size: 30px; } + +a.btn-video span { color: #7eb7a9; font-weight: 400; } + +a:hover.btn-video { color: white; background-color: #307670; } + +a:hover.btn-video span { color: #b9f4d3; } + +.codesamples { padding: 80px 0; } + +.codesamples h2 { font-size: 32px; text-transform: uppercase; text-align: center; color: #c4c4c5; margin: 25px 0 50px 0; } +.codesamples h4 { font-size: 11px; text-transform: uppercase; color: #b0b0b0; border-bottom: 1px solid #eeeeee; padding-bottom: 5px; margin: 25px 70px 8px 0; clear: both; } +.codesamples ul.tags { list-style-type: none; padding: 0 75px 0 0; margin: 0; } +.codesamples ul.tags li { display: block; float: left; } +.codesamples ul.tags li a { display: block; padding: 2px 18px; text-align: center; background-color: #c8efd2; color: #285346; -webkit-border-radius: 15px; -moz-border-radius: 15px; -ms-border-radius: 15px; border-radius: 15px; margin-right: 15px; margin-bottom: 15px; } +.codesamples ul.tags li a.active { background-color: #285346; color: #ffffff; } +.codesamples ul.tags li a:hover { background-color: #285346; color: #ffffff; } +.codesamples ul.features-positive { list-style-image: url("//static.phalconphp.com/www/images/check.png"); } +.codesamples ul.features-negative { list-style-image: url("//static.phalconphp.com/www/images/remove.png"); } +.codesamples ul.features li { margin-bottom: 5px; } +.codesamples pre { background-color: #242424; -webkit-border-radius: 25px; -moz-border-radius: 25px; -ms-border-radius: 25px; border-radius: 25px; } +.codesamples code { background-color: #242424; } +.codesamples .codesample-header { text-align: center; } +.codesamples .codesample-header h3 { display: inline-block; padding: 6px 32px; text-align: center; background-color: #285346; color: #ffffff; margin: 45px auto 15px auto; -webkit-border-radius: 25px; -moz-border-radius: 25px; -ms-border-radius: 25px; border-radius: 25px; } +.codesamples .codesample-body p { padding: 5px 25px 10px 25px; color: #696769; font-size: 15px; line-height: 24px; } + +.community { border-top: 2px solid #f2f2f2; padding: 20px 0; } +.community h2 { text-align: center; margin-top: 30px; padding-bottom: 20px; font-size: 32px; font-weight: 700; color: #3b7866; } +.community a.community-link { display: block; font-size: 20px; color: #000000; text-align: center; } +.community a.community-link i { font-size: 36px; } +.community a:hover.community-link { color: #70b599; } + +#community-buttons > div { margin-top: 30px; } + +#community-buttons a { white-space: nowrap; } + +.contributors { margin-top: 40px; position: relative; background: url("//static.phalconphp.com/www/images/contributors.jpeg") center -2px white; text-align: center; } + +.contributors .fader { display: block; width: 100%; height: 135px; background: linear-gradient(to top, #fff, #fff 25px, rgba(255, 255, 255, 0.8) 80px, transparent 100%); position: absolute; z-index: 300; bottom: -20px; left: 0; pointer-events: none !important; } +.contributors a { display: inline-block; width: 60px; height: 60px; margin: -2px; } +.contributors a img { background: white; width: 60px; height: 60px; filter: url("data:image/svg+xml;utf8,#grayscale"); filter: gray; -webkit-filter: grayscale(100%); z-index: 101; position: relative; -webkit-transition: transform 100ms cubic-bezier(0.18, 0.89, 0.32, 1.28); -moz-transition: transform 100ms cubic-bezier(0.18, 0.89, 0.32, 1.28); -ms-transition: transform 100ms cubic-bezier(0.18, 0.89, 0.32, 1.28); -o-transition: transform 100ms cubic-bezier(0.18, 0.89, 0.32, 1.28); transition: transform 100ms cubic-bezier(0.18, 0.89, 0.32, 1.28); } +.contributors a:hover img { filter: none; -webkit-filter: grayscale(0%); transform: scale(1.5); z-index: 301; } + +.download ul.nav, .about ul.nav, .testimonials ul.nav, .team ul.nav { padding: 15px 0; margin-bottom: 0; list-style: none; } + +.getinvolved { padding: 40px 0 80px 0; } + +.getinvolved .container { text-align: center; } +.getinvolved .container .row { display: inline-block; } +.getinvolved .container .row .text-center { max-width: 350px; } +.getinvolved h3 { font-size: 20px; text-align: center; color: #000000; } +.getinvolved p { color: #4d4a4c; } +.getinvolved img { display: block; margin: 0 auto; width: 150px; height: 150px; } + +.prefooter { border-top: 1px solid #b1cec8; background-color: #e6f6ef; padding: 25px; -webkit-box-shadow: inset 0 10px 10px -10px #9ac1b9; box-shadow: inset 0 10px 10px -10px #9ac1b9; } +.prefooter span { font-size: 22px; color: #7eb7a9; margin-right: 20px; } +.prefooter a.btn-social { /* width: 49px */ padding: 10px 11px 5px 11px; -webkit-border-radius: 13px; -moz-border-radius: 13px; -ms-border-radius: 13px; border-radius: 13px; color: white; font-size: 20px; text-align: center; margin: 0 5px; border-bottom: 3px solid #000000; text-shadow: -1px -1px 1px #000000; opacity: 0.8; } +.prefooter a.btn-social-twitter { background: #46b3f5; background: -moz-linear-gradient(top, #52c6f9 0%, #46b3f5 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #52c6f9), color-stop(100%, #46b3f5)); background: -webkit-linear-gradient(top, #52c6f9 0%, #46b3f5 100%); background: -o-linear-gradient(top, #52c6f9 0%, #46b3f5 100%); background: -ms-linear-gradient(top, #52c6f9 0%, #46b3f5 100%); background: linear-gradient(to bottom, #52c6f9 0%, #46b3f5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$start', endColorstr='$end',GradientType=0 ); border-color: #198dd5; text-shadow: -1px -1px 1px #198dd5; } +.prefooter a.btn-social-facebook { background: #384f93; background: -moz-linear-gradient(top, #5c77b4 0%, #384f93 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5c77b4), color-stop(100%, #384f93)); background: -webkit-linear-gradient(top, #5c77b4 0%, #384f93 100%); background: -o-linear-gradient(top, #5c77b4 0%, #384f93 100%); background: -ms-linear-gradient(top, #5c77b4 0%, #384f93 100%); background: linear-gradient(to bottom, #5c77b4 0%, #384f93 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$start', endColorstr='$end',GradientType=0 ); border-color: #2a3e80; text-shadow: -1px -1px 1px #2a3e80; } +.prefooter a.btn-social-googleplus { background: #da3924; background: -moz-linear-gradient(top, #f17d68 0%, #da3924 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f17d68), color-stop(100%, #da3924)); background: -webkit-linear-gradient(top, #f17d68 0%, #da3924 100%); background: -o-linear-gradient(top, #f17d68 0%, #da3924 100%); background: -ms-linear-gradient(top, #f17d68 0%, #da3924 100%); background: linear-gradient(to bottom, #f17d68 0%, #da3924 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$start', endColorstr='$end',GradientType=0 ); border-color: #b92a15; text-shadow: -1px -1px 1px #cf331b; } +.prefooter a.btn-social-github { background: #616161; background: -moz-linear-gradient(top, #898989 0%, #616161 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #898989), color-stop(100%, #616161)); background: -webkit-linear-gradient(top, #898989 0%, #616161 100%); background: -o-linear-gradient(top, #898989 0%, #616161 100%); background: -ms-linear-gradient(top, #898989 0%, #616161 100%); background: linear-gradient(to bottom, #898989 0%, #616161 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$start', endColorstr='$end',GradientType=0 ); border-color: #323232; text-shadow: -1px -1px 1px #323232; } +.prefooter a:hover.btn-social { opacity: 1; color: white; } + +.footer { background-color: #1e272e; padding: 60px 0 80px 0; } + +.footer h4 { font-size: 12px; text-transform: uppercase; color: #ffffff; } +.footer ul { list-style-type: none; padding: 0; margin: 0; } +.footer ul li { padding: 3px 0; } +.footer ul li a { font-size: 13px; color: #6d7481; } +.footer ul li a:hover { color: #c0c6cf; border-bottom: 1px dotted #c0c6cf; } +.footer #license-wrapper { background: url("//static.phalconphp.com/www/images/phalcon3.png") 10px 0/74px 85px no-repeat; } +.footer #license-spaccer { float: left; height: 50px; width: 100%; } +.footer .license { padding-left: 90px; background-size: 74px 85px; color: #6d7481; font-size: 12px; line-height: 18px; } +.footer .license a { color: #6d7481; border-bottom: 1px dotted #6d7481; } +.footer .license a:hover { color: #c0c6cf; border-bottom: 1px solid #c0c6cf; } +.footer .design { padding-left: 90px; margin-top: 30px; font-size: 11px; text-transform: uppercase; color: #6d7481; } +.footer .design a { margin-top: 7px; display: block; width: 115px; height: 42px; background: transparent url("//static.phalconphp.com/www/images/fogcity.png") 0 0 no-repeat; background-size: 115px 42px; opacity: 0.5; } +.footer .design a:hover { opacity: 1; } +.footer .design a span { display: none; } + +.mfp-fade.mfp-bg { opacity: 0.001; -webkit-transition: alls 0.15s ease-out; -moz-transition: alls 0.15s ease-out; -ms-transition: alls 0.15s ease-out; -o-transition: alls 0.15s ease-out; transition: alls 0.15s ease-out; } + +.mfp-fade.mfp-bg.mfp-ready { opacity: 0.8; } + +.mfp-fade.mfp-bg.mfp-removing { opacity: 0; } + +.mfp-fade.mfp-wrap .mfp-content { opacity: 0; -webkit-transition: alls 0.15s ease-out; -moz-transition: alls 0.15s ease-out; -ms-transition: alls 0.15s ease-out; -o-transition: alls 0.15s ease-out; transition: alls 0.15s ease-out; } + +.mfp-fade.mfp-wrap.mfp-ready .mfp-content { opacity: 1; } + +.mfp-fade.mfp-wrap.mfp-removing .mfp-content { opacity: 0; } + +@media screen and (max-width: 767px) { .homepage-header { padding-top: 7px; } + header .phalcon-logo { margin-left: 0px; width: 169px; height: 58px; background-image: url("//static.phalconphp.com/www/images/phalcon1.png"); background-size: 169px 58px; } + header .navbar-header { padding-bottom: 5px; border: none; } + header .main-menu li a { color: #ffffff; padding: 10px 20px; } + header .main-menu li a:hover { color: #ffffff; } + header .main-menu li a.active { color: #a6b2a3; background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } + header .main-menu { margin-top: 0; padding-top: 10px; padding-bottom: 5px; padding-left: 35px; background: rgba(0, 0, 0, 0.4); -webkit-border-radius: 18px; -moz-border-radius: 18px; -ms-border-radius: 18px; border-radius: 18px; -webkit-box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); } + header a#dropdownLanguageMenu { background-position: 8px 5px; } + header a:hover#dropdownLanguageMenu { background-position: 8px -28px; } + header .dropdown-menu { padding-left: 16px; } + header .dropdown-menu li a { color: #ffffff; background-position: 2px 8px; } + header .dropdown-menu li a:hover { color: #ffffff; background-color: transparent; } } +.codesamples-container { display: block; overflow: hidden; height: 520px; position: relative; } + +.codesamples-container .codesample { position: absolute; top: -520px; left: 0; } +.codesamples-container .codesample-pulldown { top: 520px; -webkit-transition: all 0.8s ease-in-out; -moz-transition: all 0.8s ease-in-out; -ms-transition: all 0.8s ease-in-out; -o-transition: all 0.8s ease-in-out; transition: all 0.8s ease-in-out; } +.codesamples-container .codesample-current { top: 0; -webkit-transition: all 0.8s ease-in-out; -moz-transition: all 0.8s ease-in-out; -ms-transition: all 0.8s ease-in-out; -o-transition: all 0.8s ease-in-out; transition: all 0.8s ease-in-out; } + +@media screen and (min-width: 768px) { .homepage-header { padding-top: 7px; } + .page-header { padding-top: 7px; } + header .phalcon-logo { margin-left: 0px; width: 169px; height: 58px; background-image: url("//static.phalconphp.com/www/images/phalcon1.png"); background-size: 169px 58px; } + header .main-menu { margin-top: 5px; border-top: 2px solid #5bafbb; padding-top: 7px; padding-right: 20px; } + header .main-menu li { margin: 0 1px; } + header .main-menu li a { padding: 8px 16px; } + header .dropdown-menu li a { padding: 4px 0 4px 32px; } } +@media screen and (min-width: 992px) { header .phalcon-logo { margin-left: 0px; display: block; width: 200px; height: 90px; background: transparent url("//static.phalconphp.com/www/images/phalcon.png") 0 0 no-repeat; background-size: 200px 90px; } + header .main-menu { margin-top: 38px; border-top: none; padding-top: 0; } } +.team h3 { margin-top: 0; margin-bottom: 10px; } + +.consulting, .hosting, .roadmap, .support { margin-top: 20px; } + +.support .bg-danger { padding: 10px; } + +/*# sourceMappingURL=styles.css.map */ + +.highlight { background: #2b2f3e; color: #f6f3e8} +.highlight .hll { background-color: #ffffcc } +.highlight .c { color: #c99; font-style: italic} /* Comment */ +.highlight .err { color: #f6f3e8} /* Error */ +.highlight .g { color: #f6f3e8} /* Generic */ +.highlight .k { color: #fc9;} /* Keyword */ +.highlight .l { color: #f6f3e8} /* Literal */ +.highlight .n { color: #f6f3e8} /* Name */ +.highlight .o { color: #f6f3e8} /* Operator */ +.highlight .x { color: #f6f3e8} /* Other */ +.highlight .p { color: #f6f3e8} /* Punctuation */ +.highlight .cm { color: #c99; } /* Comment.Multiline */ +.highlight .cp { color: #c99; } /* Comment.Preproc */ +.highlight .c1 { color: #c99; } /* Comment.Single */ +.highlight .cs { color: #c99; } /* Comment.Special */ +.highlight .gd { color: #f6f3e8; } /* Generic.Deleted */ +.highlight .ge { color: #f6f3e8; } /* Generic.Emph */ +.highlight .gr { color: #f6f3e8; } /* Generic.Error */ +.highlight .gh { color: #f6f3e8; font-weight: bold} /* Generic.Heading */ +.highlight .gi { color: #f6f3e8; } /* Generic.Inserted */ +.highlight .go { color: #808080; background-color: #303030 } /* Generic.Output */ +.highlight .gp { color: #f6f3e8; } /* Generic.Prompt */ +.highlight .gs { color: #f6f3e8; } /* Generic.Strong */ +.highlight .gu { color: #f6f3e8; font-weight: bold} /* Generic.Subheading */ +.highlight .gt { color: #f6f3e8} /* Generic.Traceback */ +.highlight .kc { color: #8ac6f2} /* Keyword.Constant */ +.highlight .kd { color: #8ac6f2} /* Keyword.Declaration */ +.highlight .kn { color: #8ac6f2} /* Keyword.Namespace */ +.highlight .kp { color: #8ac6f2} /* Keyword.Pseudo */ +.highlight .kr { color: #8ac6f2} /* Keyword.Reserved */ +.highlight .kt { color: #cae682} /* Keyword.Type */ +.highlight .ld { color: #f6f3e8} /* Literal.Date */ +.highlight .m { color: #e5786d} /* Literal.Number */ +.highlight .s { color: #99c;} /* Literal.String */ +.highlight .na { color: rgb(240, 241, 244)} /* Name.Attribute */ +.highlight .nb { color: #f6f3e8} /* Name.Builtin */ +.highlight .nc { color: #f6f3e8} /* Name.Class */ +.highlight .no { color: #e5786d} /* Name.Constant */ +.highlight .nd { color: #f6f3e8} /* Name.Decorator */ +.highlight .ni { color: #e7f6da} /* Name.Entity */ +.highlight .ne { color: #f6f3e8} /* Name.Exception */ +.highlight .nf { color: rgb(240, 241, 244)} /* Name.Function */ +.highlight .nl { color: #f6f3e8} /* Name.Label */ +.highlight .nn { color: #f6f3e8} /* Name.Namespace */ +.highlight .nx { color: #f6f3e8} /* Name.Other */ +.highlight .py { color: #f6f3e8} /* Name.Property */ +.highlight .nt { color: #8ac6f2} /* Name.Tag */ +.highlight .nv { color: #7ccfaf} /* Name.Variable */ +.highlight .ow { color: #f6f3e8} /* Operator.Word */ +.highlight .w { color: #f6f3e8} /* Text.Whitespace */ +.highlight .mf { color: #e5786d} /* Literal.Number.Float */ +.highlight .mh { color: #e5786d} /* Literal.Number.Hex */ +.highlight .mi { color: #e5786d} /* Literal.Number.Integer */ +.highlight .mo { color: #e5786d} /* Literal.Number.Oct */ +.highlight .sb { color: #95e454; } /* Literal.String.Backtick */ +.highlight .sc { color: #95e454; } /* Literal.String.Char */ +.highlight .sd { color: #c99; } /* Literal.String.Doc */ +.highlight .s2 { color: #99c; } /* Literal.String.Double */ +.highlight .se { color: #99c; } /* Literal.String.Escape */ +.highlight .sh { color: #99c; } /* Literal.String.Heredoc */ +.highlight .si { color: #99c; } /* Literal.String.Interpol */ +.highlight .sx { color: #99c; } /* Literal.String.Other */ +.highlight .sr { color: #99c; } /* Literal.String.Regex */ +.highlight .s1 { color: #99c; } /* Literal.String.Single */ +.highlight .ss { color: #95e454; } /* Literal.String.Symbol */ +.highlight .bp { color: #f6f3e8} /* Name.Builtin.Pseudo */ +.highlight .vc { color: #cae682} /* Name.Variable.Class */ +.highlight .vg { color: #cae682} /* Name.Variable.Global */ +.highlight .vi { color: #cae682} /* Name.Variable.Instance */ +.highlight .il { color: #e5786d} /* Literal.Number.Integer.Long */ + +hr { + color: 1px solid #c0c0c0; + background-color: 1px solid #c0c0c0; +} + +div.highlight, blockquote { + font-family: Monaco,Menlo,Consolas,"Courier New",monospace; + display: block; + font-size: 17px; + line-height: 18px; + word-wrap: break-word; +} + +div.highlight pre { + background: transparent; + border: none; + padding: 0px; + margin: 0px; + color: #F6F3E8 +} + +.highlight { + padding: 20px 10px 10px; + border-left: 3px solid #94d7be; + background: none repeat scroll 0% 0% #2B2F3E; + color: #F6F3E8; + font: 14px/18px "Courier New",serif; + margin-bottom: 10px; +} + +div.related { + margin-top: 10px; + padding-top: 5px; + padding-bottom: 15px; + height: 25px; + color: #F2F2F2; +} + +div.related li.right { + float: right; + padding-right: 0px; + list-style: outside none none; + color: #FFF; + margin-right: 5px; +} + +div.related li.right a { + background: none repeat scroll 0% 0% #337AB7; + color: #FFF; + padding: 10px; +} + +td.second-box h1 { + font-size: 30px; + margin-bottom: 15px; +} + +td.second-box h2 { + font-size: 24px; +} + +td.second-box p, +td.second-box li { + color: #111111; + font-size: 16px; + line-height: 26px; +} + +td.second-box td, +td.second-box th { + margin: 10px; + border: 1px solid #dadada; +} + +td.second-box img { + border: 1px solid #dadada; + margin: 15px; +} + +td.primary-box { + padding: 10px; + text-align: left; + padding-left: 30px; +} + +td.primary-box a { + color: #5d6576; + font-size: 14px; + line-height: 20px; + text-decoration: none; +} + +td.primary-box h4, +td.primary-box h3, +td.primary-box h3 a { + color: #7ccfaf; + text-decoration: uppercase; + font-size: 18px; +} + +td.primary-box div.carbonad { + text-align: center; + height: 270px; + width: 160px; + margin-left: 50px; + background: #fff; + border: 1px solid #dadada; +} + +td.primary-box div.carbonad a { + color: #70b599; +} + +td.primary-box .cse table.gsc-search-box td.gsc-input, table.gsc-search-box td.gsc-input { + width: 200px; +} + +td.primary-box span.carbonad-tag { + position: relative; + right: -30px; + bottom: -75px; + margin: 0px; + padding: 0px; +} + +td.second-box { + padding: 30px 15px; + max-width: 650px; + text-align: left; + padding-right: 120px; +} + +a.headerlink { + color: #fafafa; +} + +blockquote.highlights { + padding: 10px; +} + +p.versionchanged, blockquote.highlights { + font-family: Open Sans, Helvetica, sans-serif; + background-color: #CD4A78; + border-color: #CD4A78; + color: #FFF; + line-height: 24px; + padding: 10px; + text-align: left; + font-size: 15px; + margin-left: 20px; + margin-right: 20px; + margin-top: 10px; + font-style: normal; +} + +p.versionchanged a, +blockquote.highlights a { + color: #ffffff; +} + +blockquote { + border-left: 3px solid #0EC281; + background: none repeat scroll 0% 0% #F2F2F2; +} + +div.related li { + float: left; + padding-right: 20px; + list-style: none outside none; + color: #717171; +} + +table.docutils td, +table.docutils th { + padding: 5px; + font-size: 16px; +} + +table.docutils { + margin-bottom: 10px; +} + +div.section { + margin-top: 10px; +} + +.sample { + width: 330px; + height: 250px; +} + +.sample div { + position: relative; + top: 105px; + left: -1px; + padding: 10px; + background: rgba(0, 0, 0, 0.8); + color: #fff; +} + +.sample a { + color: #fff; +} + +.sample-1 { + background: url('img/sample-1.png'); +} + +.sample-2 { + background: url('img/sample-2.png'); +} + +.sample-3 { + background: url('img/sample-3.png'); +} + +.sample-4 { + background: url('img/sample-4.png'); +} + +.sample-5 { + background: url('img/sample-5.png'); +} + +.sample-6 { + background: url('img/sample-6.png'); +} diff --git a/id/_static/docs.js b/id/_static/docs.js new file mode 100644 index 000000000000..30bd325ab316 --- /dev/null +++ b/id/_static/docs.js @@ -0,0 +1,32 @@ + +$(document).ready(function() { + $("#versions").change(function() { + var docsUrl = $(this).val(); + window.location.href = docsUrl; + }); + var n = 1; + $("div#methods p").each(function() { + if (n % 2 == 0) { + $(this).addClass("method-desc"); + } else { + var text = this.innerHTML; + text = text.replace("public ", "public "); + text = text.replace("protected ", "protected "); + text = text.replace("final ", "final "); + text = text.replace("static ", "static "); + text = text.replace("inherited from", "inherited from "); + this.innerHTML = text; + $(this).addClass("method-signature"); + }; + n++; + }); + $("div.section em").each (function(index, element) { + if (element.innerHTML.substr(0, 7) == 'extends') { + $(element.parentElement).addClass("extends-class"); + } else { + if (element.innerHTML.substr(0, 10) == 'implements') { + $(element.parentElement).addClass("implements-interface"); + } + } + }); +}); \ No newline at end of file diff --git a/id/_static/favicon.ico b/id/_static/favicon.ico new file mode 100644 index 000000000000..b08b013581d6 Binary files /dev/null and b/id/_static/favicon.ico differ diff --git a/id/_static/fonts.css b/id/_static/fonts.css new file mode 100644 index 000000000000..d292f6f570a4 --- /dev/null +++ b/id/_static/fonts.css @@ -0,0 +1 @@ +@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/light.ttf") format('truetype');font-style:normal;font-weight:200}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/thin.ttf") format('truetype');font-style:normal;font-weight:100}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/thin-italic.ttf") format('truetype');font-style:italic;font-weight:100}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/light-italic.ttf") format('truetype');font-style:italic;font-weight:200}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/regular.ttf") format('truetype');font-style:normal;font-weight:normal}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/italic.ttf") format('truetype');font-style:italic;font-weight:normal}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/semibold-italic.ttf") format('truetype');font-style:italic;font-weight:600}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/semibold.ttf") format('truetype');font-style:normal;font-weight:600}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/bold.ttf") format('truetype');font-style:normal;font-weight:bold}@font-face{font-family:'Proxima Nova';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/proxima-nova/bold-italic.ttf") format('truetype');font-style:italic;font-weight:bold}@font-face{font-family:'Source Code Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/source-code-pro/regular.ttf") format('truetype');font-style:normal;font-weight:normal}@font-face{font-family:'Source Code Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/source-code-pro/bold.ttf") format('truetype');font-style:normal;font-weight:bold}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/xbold.ttf") format('truetype'),url("/fonts/titillium/xbold.svg#TitilliumText25L999wt") format('svg');font-weight:900;font-style:normal}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/bold.ttf") format('truetype'),url("/fonts/titillium/bold.svg#TitilliumText25L800wt") format('svg');font-weight:800;font-style:normal}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/medium.ttf") format('truetype'),url("/fonts/titillium/medium.svg#TitilliumText25L600wt") format('svg');font-weight:600;font-style:normal}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/normal.ttf") format('truetype'),url("/fonts/titillium/normal.svg#TitilliumText25L400wt") format('svg');font-weight:normal;font-style:normal}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/light.ttf") format('truetype'),url("/fonts/titillium/light.svg#TitilliumText25L250wt") format('svg');font-weight:200;font-style:normal}@font-face{font-family:TitilliumText;src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/titillium/thin.ttf") format('truetype'),url("/fonts/titillium/thin.svg#TitilliumText25L1wt") format('svg');font-weight:100;font-style:normal}@font-face{font-family:'Tisa Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/tisa-pro/regular.ttf") format('truetype'),url("/fonts/tisa-pro/regular.svg#tisaproregular") format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'Tisa Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/tisa-pro/italic.ttf") format('truetype'),url("/fonts/tisa-pro/italic.svg#tisaproitalic") format('svg');font-weight:normal;font-style:italic}@font-face{font-family:'Tisa Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/tisa-pro/bold.ttf") format('truetype'),url("/fonts/tisa-pro/bold.svg#tisaprobold") format('svg');font-weight:bold;font-style:normal}@font-face{font-family:'Tisa Pro';src:url("data:font/woff;charset=utf-8;base64,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") format('woff'),url("/fonts/tisa-pro/bold-italic.ttf") format('truetype'),url("/fonts/tisa-pro/bold-italic.svg#tisaproitalicbold") format('svg');font-weight:bold;font-style:italic} \ No newline at end of file diff --git a/id/_static/icons-large.png b/id/_static/icons-large.png new file mode 100644 index 000000000000..e5ae3a55800d Binary files /dev/null and b/id/_static/icons-large.png differ diff --git a/id/_static/img/background.png b/id/_static/img/background.png new file mode 100644 index 000000000000..db948e7dedf5 Binary files /dev/null and b/id/_static/img/background.png differ diff --git a/id/_static/img/bench-1.png b/id/_static/img/bench-1.png new file mode 100755 index 000000000000..582665ceed76 Binary files /dev/null and b/id/_static/img/bench-1.png differ diff --git a/id/_static/img/bench-2.png b/id/_static/img/bench-2.png new file mode 100755 index 000000000000..36df8d613c6f Binary files /dev/null and b/id/_static/img/bench-2.png differ diff --git a/id/_static/img/bench-3.png b/id/_static/img/bench-3.png new file mode 100755 index 000000000000..49e5db3709ab Binary files /dev/null and b/id/_static/img/bench-3.png differ diff --git a/id/_static/img/bench-4.png b/id/_static/img/bench-4.png new file mode 100644 index 000000000000..8bab5fd6acb3 Binary files /dev/null and b/id/_static/img/bench-4.png differ diff --git a/id/_static/img/bench-5.png b/id/_static/img/bench-5.png new file mode 100644 index 000000000000..884ad71b6bb0 Binary files /dev/null and b/id/_static/img/bench-5.png differ diff --git a/id/_static/img/cherokee-1.jpg b/id/_static/img/cherokee-1.jpg new file mode 100644 index 000000000000..39af7fb86ed3 Binary files /dev/null and b/id/_static/img/cherokee-1.jpg differ diff --git a/id/_static/img/cherokee-2.jpg b/id/_static/img/cherokee-2.jpg new file mode 100644 index 000000000000..43d0b84df765 Binary files /dev/null and b/id/_static/img/cherokee-2.jpg differ diff --git a/id/_static/img/cherokee-3.jpg b/id/_static/img/cherokee-3.jpg new file mode 100644 index 000000000000..2ba25a29a4f0 Binary files /dev/null and b/id/_static/img/cherokee-3.jpg differ diff --git a/id/_static/img/cherokee-4.jpg b/id/_static/img/cherokee-4.jpg new file mode 100644 index 000000000000..ab52e8f849f7 Binary files /dev/null and b/id/_static/img/cherokee-4.jpg differ diff --git a/id/_static/img/cherokee-5.jpg b/id/_static/img/cherokee-5.jpg new file mode 100644 index 000000000000..9e4b67611648 Binary files /dev/null and b/id/_static/img/cherokee-5.jpg differ diff --git a/id/_static/img/cherokee-55.jpg b/id/_static/img/cherokee-55.jpg new file mode 100644 index 000000000000..63e8aaea0b56 Binary files /dev/null and b/id/_static/img/cherokee-55.jpg differ diff --git a/id/_static/img/cherokee-6.jpg b/id/_static/img/cherokee-6.jpg new file mode 100644 index 000000000000..4f5244395659 Binary files /dev/null and b/id/_static/img/cherokee-6.jpg differ diff --git a/id/_static/img/cherokee-7.jpg b/id/_static/img/cherokee-7.jpg new file mode 100644 index 000000000000..f4c4337a6ba3 Binary files /dev/null and b/id/_static/img/cherokee-7.jpg differ diff --git a/id/_static/img/cherokee-8.jpg b/id/_static/img/cherokee-8.jpg new file mode 100644 index 000000000000..e42208b22a2b Binary files /dev/null and b/id/_static/img/cherokee-8.jpg differ diff --git a/id/_static/img/cherokee-9.jpg b/id/_static/img/cherokee-9.jpg new file mode 100644 index 000000000000..46132991fadf Binary files /dev/null and b/id/_static/img/cherokee-9.jpg differ diff --git a/id/_static/img/chrome-1.jpg b/id/_static/img/chrome-1.jpg new file mode 100644 index 000000000000..2200020ee3a1 Binary files /dev/null and b/id/_static/img/chrome-1.jpg differ diff --git a/id/_static/img/class.png b/id/_static/img/class.png new file mode 100644 index 000000000000..214fc2165aa6 Binary files /dev/null and b/id/_static/img/class.png differ diff --git a/id/_static/img/eer-1.png b/id/_static/img/eer-1.png new file mode 100644 index 000000000000..438ddaa27638 Binary files /dev/null and b/id/_static/img/eer-1.png differ diff --git a/id/_static/img/eer-2.png b/id/_static/img/eer-2.png new file mode 100644 index 000000000000..a4310ababc2f Binary files /dev/null and b/id/_static/img/eer-2.png differ diff --git a/id/_static/img/escape.jpeg b/id/_static/img/escape.jpeg new file mode 100644 index 000000000000..7b0692686e32 Binary files /dev/null and b/id/_static/img/escape.jpeg differ diff --git a/id/_static/img/firefox-1.jpg b/id/_static/img/firefox-1.jpg new file mode 100644 index 000000000000..7c3f4a9b5ee6 Binary files /dev/null and b/id/_static/img/firefox-1.jpg differ diff --git a/id/_static/img/header-line.jpg b/id/_static/img/header-line.jpg new file mode 100644 index 000000000000..1a813f0078fc Binary files /dev/null and b/id/_static/img/header-line.jpg differ diff --git a/id/_static/img/interface.png b/id/_static/img/interface.png new file mode 100644 index 000000000000..421a07bc535a Binary files /dev/null and b/id/_static/img/interface.png differ diff --git a/id/_static/img/invo-1.png b/id/_static/img/invo-1.png new file mode 100644 index 000000000000..3e4409251b85 Binary files /dev/null and b/id/_static/img/invo-1.png differ diff --git a/id/_static/img/invo-2.png b/id/_static/img/invo-2.png new file mode 100644 index 000000000000..9a7f45268af0 Binary files /dev/null and b/id/_static/img/invo-2.png differ diff --git a/id/_static/img/linux-1.png b/id/_static/img/linux-1.png new file mode 100644 index 000000000000..42eaadc62365 Binary files /dev/null and b/id/_static/img/linux-1.png differ diff --git a/id/_static/img/linux-2.png b/id/_static/img/linux-2.png new file mode 100644 index 000000000000..1c38f60592ae Binary files /dev/null and b/id/_static/img/linux-2.png differ diff --git a/id/_static/img/logo-small-sp.png b/id/_static/img/logo-small-sp.png new file mode 100644 index 000000000000..f1fe5898567c Binary files /dev/null and b/id/_static/img/logo-small-sp.png differ diff --git a/id/_static/img/logo-small.png b/id/_static/img/logo-small.png new file mode 100644 index 000000000000..6ea6508188c6 Binary files /dev/null and b/id/_static/img/logo-small.png differ diff --git a/id/_static/img/mac-1.png b/id/_static/img/mac-1.png new file mode 100644 index 000000000000..4444e2689d9b Binary files /dev/null and b/id/_static/img/mac-1.png differ diff --git a/id/_static/img/mac-2.png b/id/_static/img/mac-2.png new file mode 100644 index 000000000000..13170540b2dd Binary files /dev/null and b/id/_static/img/mac-2.png differ diff --git a/id/_static/img/mac-3.png b/id/_static/img/mac-3.png new file mode 100644 index 000000000000..c6a31b1dc3f8 Binary files /dev/null and b/id/_static/img/mac-3.png differ diff --git a/id/_static/img/mac-4.png b/id/_static/img/mac-4.png new file mode 100644 index 000000000000..ccc088e54547 Binary files /dev/null and b/id/_static/img/mac-4.png differ diff --git a/id/_static/img/mac-5.png b/id/_static/img/mac-5.png new file mode 100644 index 000000000000..c1cfa90e09fa Binary files /dev/null and b/id/_static/img/mac-5.png differ diff --git a/id/_static/img/migrations-1.png b/id/_static/img/migrations-1.png new file mode 100755 index 000000000000..2e6d37c28fdf Binary files /dev/null and b/id/_static/img/migrations-1.png differ diff --git a/id/_static/img/migrations-2.png b/id/_static/img/migrations-2.png new file mode 100755 index 000000000000..016edca91778 Binary files /dev/null and b/id/_static/img/migrations-2.png differ diff --git a/id/_static/img/migrations-3.png b/id/_static/img/migrations-3.png new file mode 100755 index 000000000000..77df5563af46 Binary files /dev/null and b/id/_static/img/migrations-3.png differ diff --git a/id/_static/img/migrations-4.png b/id/_static/img/migrations-4.png new file mode 100755 index 000000000000..bbc9d7046ba2 Binary files /dev/null and b/id/_static/img/migrations-4.png differ diff --git a/id/_static/img/migrations-5.png b/id/_static/img/migrations-5.png new file mode 100755 index 000000000000..3d05160e133b Binary files /dev/null and b/id/_static/img/migrations-5.png differ diff --git a/id/_static/img/path-0.png b/id/_static/img/path-0.png new file mode 100644 index 000000000000..8ba128cbc480 Binary files /dev/null and b/id/_static/img/path-0.png differ diff --git a/id/_static/img/path-01.png b/id/_static/img/path-01.png new file mode 100644 index 000000000000..ba0ef8d09149 Binary files /dev/null and b/id/_static/img/path-01.png differ diff --git a/id/_static/img/path-1.png b/id/_static/img/path-1.png new file mode 100644 index 000000000000..18d601539d6b Binary files /dev/null and b/id/_static/img/path-1.png differ diff --git a/id/_static/img/path-2.png b/id/_static/img/path-2.png new file mode 100644 index 000000000000..5f1fdcc489aa Binary files /dev/null and b/id/_static/img/path-2.png differ diff --git a/id/_static/img/path-3.png b/id/_static/img/path-3.png new file mode 100644 index 000000000000..f82204558e47 Binary files /dev/null and b/id/_static/img/path-3.png differ diff --git a/id/_static/img/path-4.png b/id/_static/img/path-4.png new file mode 100644 index 000000000000..d065c2228151 Binary files /dev/null and b/id/_static/img/path-4.png differ diff --git a/id/_static/img/path-5.png b/id/_static/img/path-5.png new file mode 100644 index 000000000000..2664a8b7a5ff Binary files /dev/null and b/id/_static/img/path-5.png differ diff --git a/id/_static/img/path-6.png b/id/_static/img/path-6.png new file mode 100644 index 000000000000..ddf38f9a4041 Binary files /dev/null and b/id/_static/img/path-6.png differ diff --git a/id/_static/img/path-7.png b/id/_static/img/path-7.png new file mode 100644 index 000000000000..95e39552dee0 Binary files /dev/null and b/id/_static/img/path-7.png differ diff --git a/id/_static/img/pretty.jpg b/id/_static/img/pretty.jpg new file mode 100644 index 000000000000..3f072dd5d4c9 Binary files /dev/null and b/id/_static/img/pretty.jpg differ diff --git a/id/_static/img/sample-1.png b/id/_static/img/sample-1.png new file mode 100644 index 000000000000..09653aa26d22 Binary files /dev/null and b/id/_static/img/sample-1.png differ diff --git a/id/_static/img/sample-2.png b/id/_static/img/sample-2.png new file mode 100644 index 000000000000..9a537362c42c Binary files /dev/null and b/id/_static/img/sample-2.png differ diff --git a/id/_static/img/sample-3.png b/id/_static/img/sample-3.png new file mode 100644 index 000000000000..9348ca788f52 Binary files /dev/null and b/id/_static/img/sample-3.png differ diff --git a/id/_static/img/sample-4.png b/id/_static/img/sample-4.png new file mode 100644 index 000000000000..3015792c2a16 Binary files /dev/null and b/id/_static/img/sample-4.png differ diff --git a/id/_static/img/sample-5.png b/id/_static/img/sample-5.png new file mode 100644 index 000000000000..191904a99fbd Binary files /dev/null and b/id/_static/img/sample-5.png differ diff --git a/id/_static/img/sample-6.png b/id/_static/img/sample-6.png new file mode 100644 index 000000000000..c6cac7894675 Binary files /dev/null and b/id/_static/img/sample-6.png differ diff --git a/id/_static/img/speed-tracer.jpg b/id/_static/img/speed-tracer.jpg new file mode 100644 index 000000000000..a59c53b7c4a2 Binary files /dev/null and b/id/_static/img/speed-tracer.jpg differ diff --git a/id/_static/img/sql.png b/id/_static/img/sql.png new file mode 100755 index 000000000000..2cccbd3d2ca8 Binary files /dev/null and b/id/_static/img/sql.png differ diff --git a/id/_static/img/tools-1.png b/id/_static/img/tools-1.png new file mode 100755 index 000000000000..c9833feb5583 Binary files /dev/null and b/id/_static/img/tools-1.png differ diff --git a/id/_static/img/tools-10.png b/id/_static/img/tools-10.png new file mode 100755 index 000000000000..631081bc94fe Binary files /dev/null and b/id/_static/img/tools-10.png differ diff --git a/id/_static/img/tools-11.png b/id/_static/img/tools-11.png new file mode 100755 index 000000000000..305321fefe8e Binary files /dev/null and b/id/_static/img/tools-11.png differ diff --git a/id/_static/img/tools-12.png b/id/_static/img/tools-12.png new file mode 100755 index 000000000000..5bf302f1335c Binary files /dev/null and b/id/_static/img/tools-12.png differ diff --git a/id/_static/img/tools-13.png b/id/_static/img/tools-13.png new file mode 100755 index 000000000000..085c98f7d4e0 Binary files /dev/null and b/id/_static/img/tools-13.png differ diff --git a/id/_static/img/tools-2.png b/id/_static/img/tools-2.png new file mode 100755 index 000000000000..6d51dde7ae6b Binary files /dev/null and b/id/_static/img/tools-2.png differ diff --git a/id/_static/img/tools-3.png b/id/_static/img/tools-3.png new file mode 100755 index 000000000000..b28490bc96cc Binary files /dev/null and b/id/_static/img/tools-3.png differ diff --git a/id/_static/img/tools-4.png b/id/_static/img/tools-4.png new file mode 100755 index 000000000000..cd3840696fc1 Binary files /dev/null and b/id/_static/img/tools-4.png differ diff --git a/id/_static/img/tools-5.png b/id/_static/img/tools-5.png new file mode 100755 index 000000000000..10cc608d8be6 Binary files /dev/null and b/id/_static/img/tools-5.png differ diff --git a/id/_static/img/tools-6.png b/id/_static/img/tools-6.png new file mode 100755 index 000000000000..9f30d8d27b40 Binary files /dev/null and b/id/_static/img/tools-6.png differ diff --git a/id/_static/img/tools-7.png b/id/_static/img/tools-7.png new file mode 100755 index 000000000000..658cd2d8b3fc Binary files /dev/null and b/id/_static/img/tools-7.png differ diff --git a/id/_static/img/tools-8.png b/id/_static/img/tools-8.png new file mode 100755 index 000000000000..00c7b8d66f71 Binary files /dev/null and b/id/_static/img/tools-8.png differ diff --git a/id/_static/img/tools-9.png b/id/_static/img/tools-9.png new file mode 100755 index 000000000000..09d5fbc53d0b Binary files /dev/null and b/id/_static/img/tools-9.png differ diff --git a/id/_static/img/tutorial-1.png b/id/_static/img/tutorial-1.png new file mode 100644 index 000000000000..24f3454fc972 Binary files /dev/null and b/id/_static/img/tutorial-1.png differ diff --git a/id/_static/img/tutorial-2.png b/id/_static/img/tutorial-2.png new file mode 100644 index 000000000000..5161832817ad Binary files /dev/null and b/id/_static/img/tutorial-2.png differ diff --git a/id/_static/img/tutorial-3.png b/id/_static/img/tutorial-3.png new file mode 100644 index 000000000000..efee564f17ca Binary files /dev/null and b/id/_static/img/tutorial-3.png differ diff --git a/id/_static/img/tutorial-4.png b/id/_static/img/tutorial-4.png new file mode 100644 index 000000000000..d39271f94133 Binary files /dev/null and b/id/_static/img/tutorial-4.png differ diff --git a/id/_static/img/views-1.png b/id/_static/img/views-1.png new file mode 100755 index 000000000000..be34f6f5eef7 Binary files /dev/null and b/id/_static/img/views-1.png differ diff --git a/id/_static/img/vokuro-1.png b/id/_static/img/vokuro-1.png new file mode 100644 index 000000000000..7a42dad94a1a Binary files /dev/null and b/id/_static/img/vokuro-1.png differ diff --git a/id/_static/img/volt-bundle.jpg b/id/_static/img/volt-bundle.jpg new file mode 100644 index 000000000000..55936088e88d Binary files /dev/null and b/id/_static/img/volt-bundle.jpg differ diff --git a/id/_static/img/volt-small.jpg b/id/_static/img/volt-small.jpg new file mode 100644 index 000000000000..d62ed1d46528 Binary files /dev/null and b/id/_static/img/volt-small.jpg differ diff --git a/id/_static/img/volt.jpg b/id/_static/img/volt.jpg new file mode 100644 index 000000000000..b2da5577fc47 Binary files /dev/null and b/id/_static/img/volt.jpg differ diff --git a/id/_static/img/wamp-1.png b/id/_static/img/wamp-1.png new file mode 100755 index 000000000000..48202d950e58 Binary files /dev/null and b/id/_static/img/wamp-1.png differ diff --git a/id/_static/img/wamp-2.png b/id/_static/img/wamp-2.png new file mode 100755 index 000000000000..cde5bc9dadb7 Binary files /dev/null and b/id/_static/img/wamp-2.png differ diff --git a/id/_static/img/wamp-3.png b/id/_static/img/wamp-3.png new file mode 100755 index 000000000000..5521e06be3fa Binary files /dev/null and b/id/_static/img/wamp-3.png differ diff --git a/id/_static/img/wamp-4.png b/id/_static/img/wamp-4.png new file mode 100755 index 000000000000..e0e612155119 Binary files /dev/null and b/id/_static/img/wamp-4.png differ diff --git a/id/_static/img/webgrind.jpg b/id/_static/img/webgrind.jpg new file mode 100644 index 000000000000..172491d1a7c0 Binary files /dev/null and b/id/_static/img/webgrind.jpg differ diff --git a/id/_static/img/xampp-1.png b/id/_static/img/xampp-1.png new file mode 100644 index 000000000000..29cf09b48f61 Binary files /dev/null and b/id/_static/img/xampp-1.png differ diff --git a/id/_static/img/xampp-2.png b/id/_static/img/xampp-2.png new file mode 100644 index 000000000000..5e4ded141155 Binary files /dev/null and b/id/_static/img/xampp-2.png differ diff --git a/id/_static/img/xampp-3.png b/id/_static/img/xampp-3.png new file mode 100644 index 000000000000..40ed41fd9d8f Binary files /dev/null and b/id/_static/img/xampp-3.png differ diff --git a/id/_static/img/xampp-4.png b/id/_static/img/xampp-4.png new file mode 100644 index 000000000000..88d464bae126 Binary files /dev/null and b/id/_static/img/xampp-4.png differ diff --git a/id/_static/img/xampp-5.png b/id/_static/img/xampp-5.png new file mode 100644 index 000000000000..d943054e36af Binary files /dev/null and b/id/_static/img/xampp-5.png differ diff --git a/id/_static/img/xampp-6.png b/id/_static/img/xampp-6.png new file mode 100644 index 000000000000..fea11bc933d7 Binary files /dev/null and b/id/_static/img/xampp-6.png differ diff --git a/id/_static/img/xampp-7.png b/id/_static/img/xampp-7.png new file mode 100755 index 000000000000..e8cf30d5fb5c Binary files /dev/null and b/id/_static/img/xampp-7.png differ diff --git a/id/_static/img/xdebug-1.jpg b/id/_static/img/xdebug-1.jpg new file mode 100644 index 000000000000..cfe7cf91baea Binary files /dev/null and b/id/_static/img/xdebug-1.jpg differ diff --git a/id/_static/img/xhprof-1.jpg b/id/_static/img/xhprof-1.jpg new file mode 100644 index 000000000000..df7ad62c8cf7 Binary files /dev/null and b/id/_static/img/xhprof-1.jpg differ diff --git a/id/_static/img/xhprof-2.jpg b/id/_static/img/xhprof-2.jpg new file mode 100644 index 000000000000..d8468c809aab Binary files /dev/null and b/id/_static/img/xhprof-2.jpg differ diff --git a/id/_static/img/yslow-1.jpg b/id/_static/img/yslow-1.jpg new file mode 100644 index 000000000000..abcba6425c75 Binary files /dev/null and b/id/_static/img/yslow-1.jpg differ diff --git a/id/_static/jquery.js b/id/_static/jquery.js new file mode 100644 index 000000000000..e7f2a292bd33 --- /dev/null +++ b/id/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.1 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"":"")+a.replace(H,"$1"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;al){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="
",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/id/_static/logo-text.png b/id/_static/logo-text.png new file mode 100644 index 000000000000..af455e5b69dc Binary files /dev/null and b/id/_static/logo-text.png differ diff --git a/id/_static/logo.png b/id/_static/logo.png new file mode 100644 index 000000000000..5e79806c72b5 Binary files /dev/null and b/id/_static/logo.png differ diff --git a/id/_static/s.css b/id/_static/s.css new file mode 100644 index 000000000000..797f4beaab38 --- /dev/null +++ b/id/_static/s.css @@ -0,0 +1 @@ +html{background:url("./img/background.png") repeat-x scroll 0 -730px #fff}body{color:#333;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.231;border-top:2px solid #686868;margin:0;min-width:990px;padding:0;text-align:center}#header{margin:0;text-align:center}#header h1{float:left;margin:0}#header h1 img{height:40px;margin:10px;margin-left:20px;margin-right:30px}#nav-main{font-family:"Helvetica",sans-serif;font-size:13px;font-weight:bold;text-align:left;text-transform:uppercase;background:#262626}#nav-main div.menubar{margin:0;padding:0}#nav-main div.nav-main-features{list-style:none outside none;background:none repeat scroll 0 0 transparent;display:table-cell;margin:0 0 0 -1px;padding:10px 7px 10px 10px;position:relative}#nav-main div.nav-main-features a{color:#dadada;display:block;float:left;height:18px;padding:15px 20px 7px 7px;position:relative;text-decoration:none;z-index:100}#nav-main div.nav-main-features a:hover{color:#349968}div#main-content{margin-top:50px}table.main-table{width:900px}div.name{padding:10px;padding-top:40px;padding-right:40px;display:block;font:italic 32px/35px;color:#444}div.name a{color:#444;text-decoration:underline}div.subname{font-family:Rosario,sans-serif;font-style:normal;font-size:56px;line-height:50px;text-transform:uppercase;letter-spacing:-3px}div.name p{font:italic 18px;padding-top:12px;letter-spacing:0;font-size:16px;margin:5px 5px 15px}#footer{background:url("../img/background.png") repeat-x scroll 0 0 #339a6b;clear:both;color:#fafafa;display:block;min-width:978px;padding:150px 10px 100px}#footer label{color:#fff;font-family:MetaBlack,"Trebuchet MS",sans-serif;font-size:14px;font-weight:bold;text-transform:uppercase}#footer table.footer-table{width:800px}#footer a{color:#d3ebe3}#footer td.subscribe,#footer td.social{width:25%;line-height:22px}#footer td.tweets{width:40%;padding-right:60px}#footer td.tweets li,#footer td.tweets ul{margin:0;padding:0;list-style:none outside none}#footer input[type="submit"]{background:#0b683c;padding:5px;color:#fafafa;border:0;border-radius:5px}div.errorMessage{background:none repeat scroll 0 0 #b11a04;border:medium none;border-radius:5px 5px 5px 5px;box-shadow:0 3px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.2);color:#fff;font-family:"Open Sans",sans-serif;padding:10px;margin:10px;text-align:left}div.successMessage{background:none repeat scroll 0 0 #80ba36;border:medium none;border-radius:5px 5px 5px 5px;box-shadow:0 3px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.2);color:#fff;font-family:"Open Sans",sans-serif;padding:10px;margin:10px;text-align:left}div.download{font-family:"Open Sans",sans-serif;font-style:normal;font-size:20px;letter-spacing:0;text-align:center;padding:10px;display:block;margin:0 0 10px 20px;-moz-box-shadow:0 3px rgba(0,0,0,0.1),inset 0 -4px rgba(0,0,0,0.1);-webkit-box-shadow:0 3px rgba(0,0,0,0.1),inset 0 -4px rgba(0,0,0,0.1);box-shadow:0 3px rgba(0,0,0,0.1),inset 0 -4px rgba(0,0,0,0.1);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;color:white;overflow:visible;background:#58a100;background:-moz-linear-gradient(top,#84c63c 0,#489615 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#84c63c),color-stop(100%,#489615));background:linear-gradient(top,#84c63c 0,#489615 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#84C63C',endColorstr='#489615',GradientType=0);-moz-transition:box-shadow .2s ease-in-out;-webit-transition:box-shadow .2s ease-in-out;transition:box-shadow .2s ease-in-out;width:150px;zoom:1}div.documentation{background:-moz-linear-gradient(center top,#2d9a6d 0,#227653 100%) repeat scroll 0 0 transparent;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2d9a6d),color-stop(100%,#227653));background:linear-gradient(top,#2d9a6d 0,#227653 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2D9A6D',endColorstr='#227653',GradientType=0);-moz-transition:box-shadow .2s ease-in-out;-webit-transition:box-shadow .2s ease-in-out;transition:box-shadow .2s ease-in-out;border-radius:6px 6px 6px 6px;-moz-box-shadow:0 3px rgba(0,0,0,0.1),inset 0 -4px rgba(0,0,0,0.1);-webkit-box-shadow:0 3px rgba(0,0,0,0.1),inset 0 -4px rgba(0,0,0,0.1);box-shadow:0 3px rgba(0,0,0,0.1),0 -4px rgba(0,0,0,0.1) inset;color:white;font-family:"Open Sans",sans-serif;font-size:20px;font-style:normal;letter-spacing:0;margin:0 0 10px 0;overflow:visible;padding:10px;text-align:center;width:220px}div.name a.no-decoration{text-decoration:none}div.sub-content{border-radius:10px 10px 10px 10px;padding:20px;margin-top:0;width:70%}div.sub{padding:20px;display:table-cell;width:25%;font-size:22px;line-height:24px}div.sub a{color:#333}div.sub img{width:96px}div.sub span{font-size:16px}div.page{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;text-align:center;margin-top:40px}div.subheader{border-bottom:1px solid #666;clear:both;height:34px;margin-bottom:15px}#tabs{float:right;font-weight:bold}#tabs a{background:inherit;border:1px solid #fff;color:#777;display:block;float:left;font-size:90%;height:24px;line-height:22px;margin:8px 8px 0 0;padding:0 11px;text-decoration:none}#tabs a.youarehere{-moz-border-bottom-colors:none;-moz-border-image:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat scroll 0 0 #fff;border-color:#777 #777 #fff;border-style:solid;border-width:1px;color:black;font-size:120%;height:30px;line-height:28px;margin-top:3px;padding:0 11px}h2{color:#000;display:block;font:italic 36px Georgia,"Times New Roman",Times,serif;letter-spacing:-3px;text-rendering:optimizelegibility}.titleContent{letter-spacing:1px;font-size:22px;font-weight:normal}.tableFormat1{font:45px;font-size:15px}.cellDown td{border-bottom:2px solid #DDD;margin-right:10px}.tableFormat2 td{font-size:15px;line-height:23px;text-align:left}.tableFormat2 h4{margin:0;margin-top:15px}.tableFormat2 pre{font-style:normal;line-height:16px}a{color:#08c;text-decoration:none}div.doc-box{background-color:#f5fafa;border-radius:10px 10px 10px 10px;padding:32px;font-family:"Open Sans",sans-serif;line-height:23px;margin-bottom:15px}div.doc-box h2{margin:0;margin-bottom:15px}h3{margin:0;margin-top:15px;margin-bottom:10px}div.doc-box td{color:#333;text-align:left;font-size:16px}div.doc-box img{width:128px;padding-right:20px}table.resume td{border-left:1px solid #dadada;border-bottom:1px solid #dadada}table.resume{border-right:1px solid #dadada;border-top:1px solid #dadada}iframe.present_iframe{border:0;padding:0;margin:0;background:transparent}#github-con{position:absolute;top:0;right:0;width:220px;height:180px;overflow:hidden;padding-top:40px}#github{background-color:#6fb52e;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 0 1px #1d212e inset,0 0 2px 1px #fff inset,0 0 1em #333;-moz-box-shadow:0 0 0 1px #1d212e inset,0 0 2px 1px #fff inset,0 0 1em #333;box-shadow:0 0 0 1px #1d212e inset,0 0 2px 1px #fff inset,0 0 1em #333;color:rgba(255,255,255,0.90);padding:.6em 3.5em;font:bold 12px sans-serif;text-align:center;text-decoration:none;text-shadow:1px -1px 8px rgba(0,0,0,0.60);-webkit-user-select:none;-moz-user-select:none;user-select:none}#github a{color:#fff}div.about-bg{background:url("../img/watermark.png") no-repeat scroll 500px 50px #fff;width:99%}div.about{color:#222;width:650px;font-size:16px;text-align:left;margin-left:100px;margin-top:70px;background:rgba(255,255,255,0.7);border-radius:15px;padding-top:10px;line-height:22px}div.about li{color:#222;font-size:16px;text-align:left;line-height:25px;margin:5px} diff --git a/id/_static/search-button.png b/id/_static/search-button.png new file mode 100644 index 000000000000..f55f7940fd1a Binary files /dev/null and b/id/_static/search-button.png differ diff --git a/id/_static/social-links.png b/id/_static/social-links.png new file mode 100644 index 000000000000..bb4d4077b733 Binary files /dev/null and b/id/_static/social-links.png differ diff --git a/id/_static/style.css b/id/_static/style.css new file mode 100644 index 000000000000..32d045e93758 --- /dev/null +++ b/id/_static/style.css @@ -0,0 +1,319 @@ + +body, html {margin: 0; padding:0; height: 100%;} + +body {background: #fff; color: #000000; font: 16px/20px Ubuntu, sans-serif; min-width: 990px;} + +a {color:#118f9e; } +a:hover {color: #000;} +a:visited {color:#767676; } + +.link-green {color: #118a65;} + +.link-black {color: #000; text-decoration: none; border-bottom: 1px solid;} +.link-black:hover {color: #000; border-bottom-color:#0ec281; } + +p {margin: 15px 0;} + +pre {margin: 0;} + +blockquote {display: block; text-align: center; padding: 15px 0; margin: 15px 0; position: relative; font-style: italic;} + +.note {font-style: italic; margin: 15px 0;} +.note-orange {padding:10px 30px; border-bottom: 6px solid #dc590b; background:#f38441; color:#fff; } + +.highlight {padding: 20px 10px 10px; border-left: 3px solid #0ec281; background:#f2f2f2; color: #000; font: 14px/18px "Courier New", serif; } + +.strong {font-weight: bold;} +.lighter {color:#747474;} + +.title-huge {font-size: 48px; line-height: 50px; font-weight: bold; text-align: center; text-transform: uppercase; margin:30px 0; } +h1, .h1 {font-size: 36px; line-height: 38px; font-weight: normal; margin: 15px 0 10px; padding: 0;} +h2, .h2 {font-size: 30px; line-height: 32px; font-weight: normal; margin: 10px 0 5px; padding: 0 0 5px; position: relative;} +h2:after, .h2:after { + content: ''; display: block; height: 1px; width: 100%; position: absolute; bottom: 0; left: 0; +} + +h3, .h3 {font-size: 24px; line-height: 24px; font-weight: normal; margin: 5px 0 3px;} +h4, .h4 {font-size: 16px; line-height: 18px; font-weight: bold; margin: 3px 0 2px;} + +p + h2, p + .h2 {margin-top: 50px;} + +h2 + h3 {margin-top: 20px;} + + +.title-white {color: #fff; text-shadow: 0 0 2px rgba(0,0,0,0.7); font-weight: bold;} +.section-title {color:#525252; text-transform: uppercase;} + +.with-hash {position: relative; padding-right: 20px; } +.hash-link { text-decoration: none; font-size: 16px; position: absolute; top:0; right: 5px;} + +ul {padding: 0 0 0 26px;} + +ul.unstyled {list-style: none; padding: 0;} + +ul.dash-list {list-style:none; padding: 0; } +ul.dash-list > li {padding: 0 0 0 20px; position: relative;} +ul.dash-list > li:before {content: '\2013'; position: absolute; top:0; left: 3px;} + +.small {font-size: 85%; line-height: 85%;} + +ul.two-columns {overflow: hidden;} +ul.two-columns li {width: 50%; float: left; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box} +/* ui */ + + +.button-large { + display: inline-block; font-size: 36px; line-height: 38px; font-weight:bold; color: #fff; background: #0ec281; padding: 16px 60px 24px; + outline:none; cursor: pointer; border-radius: 5px; box-shadow: inset 0 -5px 0 #118a65; +} +a.button-large {color: #fff;} + +.button-large:hover {background-color:#12d38d; } +.button-large:active {background-color:#0da26c; box-shadow: inset 0 -5px 0 #12d38d;} + + +.button-medium { + display: inline-block; font-size: 21px; line-height: 23px; color: #fff; background: #23838f; padding: 12px 36px 16px; + outline: none; cursor: pointer; border-radius: 5px; box-shadow: inset 0 -4px 0 #0e565f; +} +a.button-medium {color: #fff;} + +.button-medium:hover {background-color: #1a9eae;} +.button-medium:active {background-color: #0e565f; box-shadow: inset 0 -4px 0 #23838f;} + +.button {display: inline-block; font-size: 16px; line-height: 18px; padding: 15px 30px; outline: none; cursor: pointer; text-decoration: none; background: #f2f2f2; color:#000;} +.button:hover {background: #c0c0c0;} + +.button-small {font-size: 14px; line-height: 16px; padding: 10px 15px;} + +.button.black {background:#525252; color: #fff; } +.button.black:hover {background: #000000;} + +.button.orange {background:#f38441; color: #fff; } +.button.orange:hover {background: #f06715;} + +.button.green {background:#0ec281; color: #fff; } +.button.green:hover {background: #118a65;} + +.button.blue {background:#118f9e; color: #fff; } +.button.blue:hover {background: #23838f;} + + + +.tabs {margin:30px 0; padding: 0; background: #f2f2f2; list-style:none;} +.tabs li {margin:0; padding: 0; float: left;} + +.tab-link {display: block; position: relative; padding: 10px 40px; font-size:20px; line-height:22px; text-decoration: none; outline: none; color: #000; } +a.tab-link {color: #000;} +.tab-link u {text-decoration: none; border-bottom: 1px dashed #9a9a9a;} + +.tab-link:hover {background: #0ec281; color:#fff;} +.tab-link:hover u {border: none;} + +.tab-link.active {background: #0ec281; color:#fff;} +.tab-link.active u {border: none;} +.tab-link.active:after { + content: ''; display: block; width: 0; height: 0; position: absolute; top:100%; left:50%; margin-left: -8px; + border-width: 8px; border-style: solid solid none; border-color: #0ec281 transparent; border-color: #0ec281 rgba(255,255,255,0); +} + +/* layout */ + +.clear-fix:after {content:''; display: block; clear: both;} + +.wrapper {} +.size-wrap {margin: 0 auto; min-width: 960px; max-width: 1440px; padding: 0 15px;} + +.size-wrap.fixed {width:960px;} + + +.sidebar {width:260px; padding:8px; float: left; border: 1px solid #a6a6a6;} +.sidebar + .content {margin-left:300px; overflow: hidden; } + +/* elements */ + +.header { padding:55px 0 20px; margin: 0 0 30px;} + +.header-logo {display:block; float:left; padding:0 0 0 85px; margin: -4px 0 0; color: #000; font-size: 20px; line-height: 22px; text-transform: uppercase; text-decoration: none; position: relative;} +a.header-logo {color: #000;} + +.logo-text {display: block; width:98px; height: 28px; overflow: hidden; text-indent: -9999px; background: url('../_static/logo-text.png'); } + +.header-logo:before {content: ''; display: block; width: 82px; height: 82px; background: url('../_static/logo.png') 0 0; position: absolute; top:-37px; left:0; } + +.header-right {width: 160px; float: right; margin-top: -7px;} + +.header-nav {list-style: none; margin: 0 230px 0 230px; padding: 0; text-align: center;} +.header-nav li {display: inline-block; vertical-align: top; margin: 0 0 0 20px; padding: 0;} +.header-nav li:first-child {margin:0;} + +.header-nav-link {color:#000; font-size: 16px; line-height: 18px;} +a.header-nav-link {color:#000;} + +.header-line {min-width:980px; height: 87px; background: #5da49e url('../_static/header-line.jpg') 50% 0 no-repeat; margin: 0 0 20px; overflow: hidden;} + +.header-line-title {font-size:48px; line-height: 50px; padding: 20px 0; margin: 0; } + +.main-teaser {margin: 15px 0 45px; background: #5da49e url('../_static/bg.jpg') 50% 0 no-repeat; height: 694px; text-align: center; position: relative;} +.main-teaser:after { + content: ''; display: block; position: absolute; top:100%; left:50%; margin-left:-13px; + border-width: 34px 26px; border-style: solid solid none; border-color: #5da49e transparent; border-color: #5da49e rgba(255,255,255,0); +} + +.main-teaser-title { font-size: 72px; line-height: 74px; padding: 30px 0;} + +.main-teaser-left {width: 49%; float: left;} +.main-teaser-right {width: 49%; float: right;} + +.teser-chart-wrap {margin: 0 0 20px; text-align: left;} + +.teaser-video-wrap { margin: 50px 0 40px; width: 462px; box-shadow: 0 0 6px #000;} +.teaser-video-wrap img {vertical-align: top;} + + + +.features-wrap {margin: 0 0 30px;} +.features-table {width:100%; border-collapse: collapse; } +.features-table td {vertical-align: top; border-color: #c0c0c0; border-width: 1px; border-style: none none solid solid; vertical-align: top; padding: 20px 15px; width: 25%; } +.features-table tr td:first-child {border-left:none;} + +.features-table li {margin-bottom:15px; } +.features-table .small li {margin-bottom: 10px;} + +.features-table ul {margin-top: 0;} + +.documentation-button-wrap {text-align: center;} + + + +.green-block {background:#0ec281; color: #fff; padding: 30px 0;} + + +.icon-large {display: inline-block; width: 130px; height: 130px; background: url('../_static/icons-large.png');} + +.icon-forum {background-position: 0 0;} +.icon-so {background-position: -130px 0;} +.icon-github {background-position: 0 -130px;} +.icon-email {background-position: -130px -130px;} + + +.services-links-wrap {float: left; width: 50%; overflow: hidden;} +/*.services-links {margin-left: -30px; overflow: hidden;}*/ + +.service-link { + -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; + display: block; float: left; margin: 0 4% 30px 0; border: 1px solid #27de9c; width: 45%; padding: 10px 0; + color: #fff; text-decoration: none; text-transform: uppercase; text-align: center; +} +a.service-link {color: #fff;} +.service-link:hover {color:#fff; border-color: #fff; background:#0caa71; } + +.service-link-text {display: block;} + + +.services-block {float: right; width: 46%; height: 380px; border:1px solid #27de9c; text-align: center; font-size: 18px; line-height: 24px;} + +.services-block-title {font-size: 60px; line-height: 62px; font-weight: bold; margin: 30px 0; text-transform: uppercase;} +.services-block-link {font-size: 30px; line-height: 36px; text-transform: uppercase; color: #fff;} +a.services-block-link {color: #fff;} +.services-block-link:hover {color: #0d4f37;} + + + +.blog-post-wrap {margin: 30px 0;} + +.blog-post {width: 430px; margin: 0 auto; overflow: hidden;} + +.blog-post-date {width: 84px; height: 84px; border: 1px solid #0ec281; border-radius: 50%; overflow: hidden; text-align: center; float: left;} +.blog-post-date .month {height: 38px; font-size:16px; line-height: 38px; background: #0ec281; color: #fff; } +.blog-post-date .day {height: 46px; font-size: 24px; line-height: 46px;} + + +.blog-post-title {margin: 15px 0 0 95px; font-size: 22px; line-height: 26px;} + + + +.searchbox-wrap {position: relative; margin-bottom: 20px;} +.searchbox { + font-size: 14px; line-height: 16px; padding: 10px 35px 10px 7px; color: #000; background: #fff; border: none; border-bottom: 1px solid #a6a6a6; outline: none; + width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; +} +.search-button { + width: 20px; height: 20px; cursor: pointer; border: none; background: transparent url('../_static/search-button.png') 0 0; padding: 0; margin: 0; + position: absolute; top:9px; right: 7px; text-indent: -9999px; overflow: hidden; text-align: left; +} + +.table-of-contents {} +.table-of-contents .h4 {text-transform: uppercase;} +.table-of-contents ul {font-size: 14px; margin-bottom: 30px;} +.table-of-contents ul li {margin: 0 0 5px;} + + +.api-table-of-contents {list-style: none; margin: 0 -8px; padding: 0;} +.api-table-of-contents > li {margin: 0; padding: 0;} + +.api-top-level-link {display: block; text-decoration: none; color: #000; padding: 10px 10px 10px 8px; border-left: 9px solid transparent; } +.api-top-level-link:hover, .api-top-level-link.active {background: #f5f5f5; border-left-color: #0ec281;} + +.api-top-level-link.active {position: relative;} +.api-top-level-link.active:before {content: ''; display: block; position:absolute; right: 7px; top: 18px; border-width: 6px;border-style: solid solid none; border-color: #666666 transparent; border-color: #666666 rgba(255,255,255,0); } + +.api-sublist {margin:5px 0 5px 20px; list-style: none; padding: 0; } +.api-sublist li {margin: 0 0 7px 0;} + + + +.api-table {border-collapse: collapse; width: 100%;} +.api-table td, .api-table th {vertical-align: top; text-align: left; padding: 8px 5px; border-bottom: 1px solid #c0c0c0; } + + +.api-table.info-table th {padding-right: 20px; font-weight: bold; text-align: right; width: 100px;} + +.api-table.methods-table .method {width: 200px;} +.api-table.methods-table .description {font-size: 14px;} +.api-table.methods-table tr:hover td {background: #f2f2f2;} + +.api-table.constants-table .type {width: 1px; color:#118a65; } + +.method-type {display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 15px; } +.method-type.public {background: #0ec281; } + + +.team-member {margin: 0 0 20px; overflow: hidden;} +.member-photo {border: 1px solid #c0c0c0; padding: 27px 48px; float: left;} +.member-photo img {border: none;} +.member-info {margin-left: 324px; } +.member-name {font-size:24px; line-height: 26px; text-transform:uppercase; margin:0 0 10px; padding: 0; } +.member-links {margin: 10px 0;} + +.method-description {padding-left: 26px; margin: 0 0 30px;} + + +.footer-wrap { margin-top: 50px; } +/*.footer-wrap:before {content: ''; display: block; height: 2px; border-color:#525252; border-width:3px 0 1px; border-style: solid none; margin-bottom:24px;}*/ + +.footer-links {width: 100%; border-collapse: collapse;} +.footer-links td {vertical-align: top; width: 25%; padding: 0 0 0 20px; font-size: 14px;} +.footer-links-title {font-weight: bold; text-transform: uppercase; margin: 0 0 5px;} + +ul.footer-links-list {margin:0;} +.footer-links-list li {margin-bottom: 5px;} + +.donate-wrap {margin: 10px 0; padding: 15px 0; border-color:#525252; border-width:1px; border-style: solid none; font-size: 18px; line-height: 24px; font-weight: bold; text-align: center;} +.donate-wrap .button {margin: 0 10px;} + +.social-links {padding: 10px 0 20px; text-align: center;} + +.social-link {display: inline-block; width: 44px; height: 44px; text-align: left; text-indent: -9999px; overflow: hidden; background: url('../_static/social-links.png'); } + +.social-link.tw {background-position: 0 0;} +.social-link.tw:hover {background-position: 0 -44px;} + +.social-link.fb {background-position: -44px 0;} +.social-link.fb:hover {background-position: -44px -44px;} + +.social-link.gp {background-position: -88px 0;} +.social-link.gp:hover {background-position: -88px -44px;} + +.social-link.vm {background-position: -132px 0;} +.social-link.vm:hover {background-position: -132px -44px;} diff --git a/id/_theme/phalcon/layout.html b/id/_theme/phalcon/layout.html new file mode 100755 index 000000000000..a6a331f6ee2c --- /dev/null +++ b/id/_theme/phalcon/layout.html @@ -0,0 +1,356 @@ +{%- block doctype -%} + +{%- endblock %} + +{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} +{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} +{%- set url_root = pathto('', 1) %} +{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} + +{%- macro relbar() %} + +{%- endmacro %} + +{%- macro downrelbar() %} + +{%- endmacro %} + +{%- macro sidebar() %} + {%- if not embedded %}{% if not theme_nosidebar|tobool %} +
+ {%- endif %}{% endif %} +{%- endmacro %} + + + + {% if sourcename == "error.txt" %} + + {% endif %} + + {{ metatags }} + {%- if not embedded and docstitle %} + {%- set titlesuffix = " — "|safe + docstitle|e %} + {%- else %} + {%- set titlesuffix = "" %} + {%- endif %} + {{ title|striptags }}{{ titlesuffix }} + + + + + + + + + + + + + + {%- if not embedded %} + + + + + + {%- if use_opensearch %} + + {%- endif %} + + {%- endif %} +{%- block linktags %} + {%- if hasdoc('about') %} + + {%- endif %} + {%- if hasdoc('genindex') %} + + {%- endif %} + {%- if hasdoc('search') %} + + {%- endif %} + {%- if hasdoc('copyright') %} + + {%- endif %} + + {%- if parents %} + + {%- endif %} + {%- if next %} + + {%- endif %} + {%- if prev %} + + {%- endif %} +{%- endblock %} +{%- block extrahead %} {% endblock %} + + + + + +
+
+
+

Documentation

+
+
+
+ + + {%- block header %}{% endblock %} + + {%- block relbar1 %}{{ relbar() }}{% endblock %} + + {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %} + +
+ {%- block sidebarlogo %} + {%- if logo %} + + {%- endif %} + {%- endblock %} + {%- block sidebarsearch %} + {%- if pagename != "search" %} +
+ +
+
+
+
+ +
+
+ {%- endif %} + {%- endblock %} + {%- block sidebartoc %} + {%- if display_toc %} +

{{ _('Table Of Contents') }}

+ {{ toc }} + {%- endif %} + {%- endblock %} + {%- block sidebarrel %} + {%- if prev %} +

{{ _('Previous topic') }}

+

< {{ prev.title }}

+ {%- endif %} + {%- if next %} +

{{ _('Next topic') }}

+

{{ next.title }} >

+ {%- endif %} + {%- endblock %} + {%- block sidebarsourcelink %} + {%- if show_source and has_source and sourcename %} +

{{ _('This Page') }}

+ + {%- endif %} + {%- endblock %} + {%- if customsidebar %} + {% include customsidebar %} + {%- endif %} +
+ + {%- block sidebar2 %}{{ sidebar() }}{% endblock %} + + +
+
+ {%- block document %} +
+ {%- if not embedded %}{% if not theme_nosidebar|tobool %} +
+ {%- endif %}{% endif %} +
+ {% block body %} {% endblock %} +
+ {%- if not embedded %}{% if not theme_nosidebar|tobool %} +
+ {%- endif %}{% endif %} +
+ {%- endblock %} +
+
+ + {%- block relbar2 %}{{ downrelbar() }}{% endblock %} + + {%- block footer %} + +
+
+
+
+ Follow along: +
+
+ + + + +
+
+
+
+
+ +
+ + + {%- endblock %} + + + + + + diff --git a/id/_theme/phalcon/theme.conf b/id/_theme/phalcon/theme.conf new file mode 100755 index 000000000000..7e043c94448c --- /dev/null +++ b/id/_theme/phalcon/theme.conf @@ -0,0 +1,8 @@ +[theme] +inherit = basic +stylesheet = default.css +pygments_style = sphinx + +[options] +nosidebar = false +body_leftmargin = 0 \ No newline at end of file diff --git a/id/api/Phalcon_Acl.rst b/id/api/Phalcon_Acl.rst new file mode 100644 index 000000000000..74ff02a33bd0 --- /dev/null +++ b/id/api/Phalcon_Acl.rst @@ -0,0 +1,15 @@ +Abstract class **Phalcon\\Acl** +=============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Constants +--------- + +*integer* **ALLOW** + +*integer* **DENY** + diff --git a/id/api/Phalcon_Acl_Adapter.rst b/id/api/Phalcon_Acl_Adapter.rst new file mode 100644 index 000000000000..93f13171f596 --- /dev/null +++ b/id/api/Phalcon_Acl_Adapter.rst @@ -0,0 +1,118 @@ +Abstract class **Phalcon\\Acl\\Adapter** +======================================== + +*implements* :doc:`Phalcon\\Acl\\AdapterInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Adapter for Phalcon\\Acl adapters + + +Methods +------- + +public **getActiveRole** () + +Role which the list is checking if it's allowed to certain resource/access + + + +public **getActiveResource** () + +Resource which the list is checking if some role can access it + + + +public **getActiveAccess** () + +Active access which the list is checking if some role can access it + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setDefaultAction** (*unknown* $defaultAccess) + +Sets the default access level (Phalcon\\Acl::ALLOW or Phalcon\\Acl::DENY) + + + +public **getDefaultAction** () + +Returns the default ACL access level + + + +abstract public **addRole** (*unknown* $role, [*unknown* $accessInherits]) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **addInherit** (*unknown* $roleName, *unknown* $roleToInherit) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **isRole** (*unknown* $roleName) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **isResource** (*unknown* $resourceName) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **addResource** (*unknown* $resourceObject, *unknown* $accessList) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **addResourceAccess** (*unknown* $resourceName, *unknown* $accessList) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **dropResourceAccess** (*unknown* $resourceName, *unknown* $accessList) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **allow** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **deny** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **isAllowed** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **getRoles** () inherited from Phalcon\\Acl\\AdapterInterface + +... + + +abstract public **getResources** () inherited from Phalcon\\Acl\\AdapterInterface + +... + + diff --git a/id/api/Phalcon_Acl_AdapterInterface.rst b/id/api/Phalcon_Acl_AdapterInterface.rst new file mode 100644 index 000000000000..a0419934ebb9 --- /dev/null +++ b/id/api/Phalcon_Acl_AdapterInterface.rst @@ -0,0 +1,96 @@ +Interface **Phalcon\\Acl\\AdapterInterface** +============================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setDefaultAction** (*unknown* $defaultAccess) + +... + + +abstract public **getDefaultAction** () + +... + + +abstract public **addRole** (*unknown* $role, [*unknown* $accessInherits]) + +... + + +abstract public **addInherit** (*unknown* $roleName, *unknown* $roleToInherit) + +... + + +abstract public **isRole** (*unknown* $roleName) + +... + + +abstract public **isResource** (*unknown* $resourceName) + +... + + +abstract public **addResource** (*unknown* $resourceObject, *unknown* $accessList) + +... + + +abstract public **addResourceAccess** (*unknown* $resourceName, *unknown* $accessList) + +... + + +abstract public **dropResourceAccess** (*unknown* $resourceName, *unknown* $accessList) + +... + + +abstract public **allow** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +... + + +abstract public **deny** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +... + + +abstract public **isAllowed** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +... + + +abstract public **getActiveRole** () + +... + + +abstract public **getActiveResource** () + +... + + +abstract public **getActiveAccess** () + +... + + +abstract public **getRoles** () + +... + + +abstract public **getResources** () + +... + + diff --git a/id/api/Phalcon_Acl_Adapter_Memory.rst b/id/api/Phalcon_Acl_Adapter_Memory.rst new file mode 100644 index 000000000000..f30b499bca5f --- /dev/null +++ b/id/api/Phalcon_Acl_Adapter_Memory.rst @@ -0,0 +1,263 @@ +Class **Phalcon\\Acl\\Adapter\\Memory** +======================================= + +*extends* abstract class :doc:`Phalcon\\Acl\\Adapter ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Acl\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Manages ACL lists in memory + +.. code-block:: php + + setDefaultAction(Phalcon\Acl::DENY); + + //Register roles + $roles = array( + 'users' => new \Phalcon\Acl\Role('Users'), + 'guests' => new \Phalcon\Acl\Role('Guests') + ); + foreach ($roles as $role) { + $acl->addRole($role); + } + + //Private area resources + $privateResources = array( + 'companies' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'), + 'products' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'), + 'invoices' => array('index', 'profile') + ); + foreach ($privateResources as $resource => $actions) { + $acl->addResource(new Phalcon\Acl\Resource($resource), $actions); + } + + //Public area resources + $publicResources = array( + 'index' => array('index'), + 'about' => array('index'), + 'session' => array('index', 'register', 'start', 'end'), + 'contact' => array('index', 'send') + ); + foreach ($publicResources as $resource => $actions) { + $acl->addResource(new Phalcon\Acl\Resource($resource), $actions); + } + + //Grant access to public areas to both users and guests + foreach ($roles as $role){ + foreach ($publicResources as $resource => $actions) { + $acl->allow($role->getName(), $resource, '*'); + } + } + + //Grant access to private area to role Users + foreach ($privateResources as $resource => $actions) { + foreach ($actions as $action) { + $acl->allow('Users', $resource, $action); + } + } + + + +Methods +------- + +public **__construct** () + +Phalcon\\Acl\\Adapter\\Memory constructor + + + +public **addRole** (*unknown* $role, [*array|string* $accessInherits]) + +Adds a role to the ACL list. Second parameter allows inheriting access data from other existing role Example: + +.. code-block:: php + + addRole(new Phalcon\Acl\Role('administrator'), 'consultant'); + $acl->addRole('administrator', 'consultant'); + + + + +public **addInherit** (*unknown* $roleName, *unknown* $roleToInherit) + +Do a role inherit from another existing role + + + +public **isRole** (*unknown* $roleName) + +Check whether role exist in the roles list + + + +public **isResource** (*unknown* $resourceName) + +Check whether resource exist in the resources list + + + +public **addResource** (*Phalcon\\Acl\\Resource|string* $resourceValue, *array|string* $accessList) + +Adds a resource to the ACL list Access names can be a particular action, by example search, update, delete, etc or a list of them Example: + +.. code-block:: php + + addResource(new Phalcon\Acl\Resource('customers'), 'search'); + $acl->addResource('customers', 'search'); + + //Add a resource with an access list + $acl->addResource(new Phalcon\Acl\Resource('customers'), array('create', 'search')); + $acl->addResource('customers', array('create', 'search')); + + + + +public **addResourceAccess** (*unknown* $resourceName, *array|string* $accessList) + +Adds access to resources + + + +public **dropResourceAccess** (*unknown* $resourceName, *array|string* $accessList) + +Removes an access from a resource + + + +protected **_allowOrDeny** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access, *unknown* $action) + +Checks if a role has access to a resource + + + +public **allow** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +Allow access to a role on a resource You can use '*' as wildcard Example: + +.. code-block:: php + + allow('guests', 'customers', 'search'); + + //Allow access to guests to search or create on customers + $acl->allow('guests', 'customers', array('search', 'create')); + + //Allow access to any role to browse on products + $acl->allow('*', 'products', 'browse'); + + //Allow access to any role to browse on any resource + $acl->allow('*', '*', 'browse'); + + + + +public **deny** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +Deny access to a role on a resource You can use '*' as wildcard Example: + +.. code-block:: php + + deny('guests', 'customers', 'search'); + + //Deny access to guests to search or create on customers + $acl->deny('guests', 'customers', array('search', 'create')); + + //Deny access to any role to browse on products + $acl->deny('*', 'products', 'browse'); + + //Deny access to any role to browse on any resource + $acl->deny('*', '*', 'browse'); + + + + +public **isAllowed** (*unknown* $roleName, *unknown* $resourceName, *unknown* $access) + +Check whether a role is allowed to access an action from a resource + +.. code-block:: php + + isAllowed('andres', 'Products', 'create'); + + //Do guests have access to any resource to edit? + $acl->isAllowed('guests', '*', 'edit'); + + + + +public **getRoles** () + +Return an array with every role registered in the list + + + +public **getResources** () + +Return an array with every resource registered in the list + + + +public **getActiveRole** () inherited from Phalcon\\Acl\\Adapter + +Role which the list is checking if it's allowed to certain resource/access + + + +public **getActiveResource** () inherited from Phalcon\\Acl\\Adapter + +Resource which the list is checking if some role can access it + + + +public **getActiveAccess** () inherited from Phalcon\\Acl\\Adapter + +Active access which the list is checking if some role can access it + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Acl\\Adapter + +Sets the events manager + + + +public **getEventsManager** () inherited from Phalcon\\Acl\\Adapter + +Returns the internal event manager + + + +public **setDefaultAction** (*unknown* $defaultAccess) inherited from Phalcon\\Acl\\Adapter + +Sets the default access level (Phalcon\\Acl::ALLOW or Phalcon\\Acl::DENY) + + + +public **getDefaultAction** () inherited from Phalcon\\Acl\\Adapter + +Returns the default ACL access level + + + diff --git a/id/api/Phalcon_Acl_Exception.rst b/id/api/Phalcon_Acl_Exception.rst new file mode 100644 index 000000000000..9576e3ceadc3 --- /dev/null +++ b/id/api/Phalcon_Acl_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Acl\\Exception** +================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Acl_Resource.rst b/id/api/Phalcon_Acl_Resource.rst new file mode 100644 index 000000000000..ca625c91d23c --- /dev/null +++ b/id/api/Phalcon_Acl_Resource.rst @@ -0,0 +1,38 @@ +Class **Phalcon\\Acl\\Resource** +================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class defines resource entity and its description + + +Methods +------- + +public **getName** () + +Resource name + + + +public **__toString** () + +Resource name + + + +public **getDescription** () + +Resource description + + + +public **__construct** (*unknown* $name, [*unknown* $description]) + +Phalcon\\Acl\\Resource constructor + + + diff --git a/id/api/Phalcon_Acl_ResourceInterface.rst b/id/api/Phalcon_Acl_ResourceInterface.rst new file mode 100644 index 000000000000..c729b84ba086 --- /dev/null +++ b/id/api/Phalcon_Acl_ResourceInterface.rst @@ -0,0 +1,31 @@ +Interface **Phalcon\\Acl\\ResourceInterface** +============================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $name, [*unknown* $description]) + +... + + +abstract public **getName** () + +... + + +abstract public **getDescription** () + +... + + +abstract public **__toString** () + +... + + diff --git a/id/api/Phalcon_Acl_Role.rst b/id/api/Phalcon_Acl_Role.rst new file mode 100644 index 000000000000..b64592e5fd3d --- /dev/null +++ b/id/api/Phalcon_Acl_Role.rst @@ -0,0 +1,40 @@ +Class **Phalcon\\Acl\\Role** +============================ + +*implements* :doc:`Phalcon\\Acl\\RoleInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class defines role entity and its description + + +Methods +------- + +public **getName** () + +Role name + + + +public **__toString** () + +Role name + + + +public **getDescription** () + +Role description + + + +public **__construct** (*unknown* $name, [*unknown* $description]) + +Phalcon\\Acl\\Role constructor + + + diff --git a/id/api/Phalcon_Acl_RoleInterface.rst b/id/api/Phalcon_Acl_RoleInterface.rst new file mode 100644 index 000000000000..0d663d6ffbc3 --- /dev/null +++ b/id/api/Phalcon_Acl_RoleInterface.rst @@ -0,0 +1,31 @@ +Interface **Phalcon\\Acl\\RoleInterface** +========================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $name, [*unknown* $description]) + +... + + +abstract public **getName** () + +... + + +abstract public **getDescription** () + +... + + +abstract public **__toString** () + +... + + diff --git a/id/api/Phalcon_Annotations_Adapter.rst b/id/api/Phalcon_Annotations_Adapter.rst new file mode 100644 index 000000000000..e2b3a171e511 --- /dev/null +++ b/id/api/Phalcon_Annotations_Adapter.rst @@ -0,0 +1,56 @@ +Abstract class **Phalcon\\Annotations\\Adapter** +================================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is the base class for Phalcon\\Annotations adapters + + +Methods +------- + +public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) + +Sets the annotations parser + + + +public **getReader** () + +Returns the annotation reader + + + +public **get** (*string|object* $className) + +Parses or retrieves all the annotations found in a class + + + +public **getMethods** (*unknown* $className) + +Returns the annotations found in all the class' methods + + + +public **getMethod** (*unknown* $className, *unknown* $methodName) + +Returns the annotations found in a specific method + + + +public **getProperties** (*unknown* $className) + +Returns the annotations found in all the class' methods + + + +public **getProperty** (*unknown* $className, *unknown* $propertyName) + +Returns the annotations found in a specific property + + + diff --git a/id/api/Phalcon_Annotations_AdapterInterface.rst b/id/api/Phalcon_Annotations_AdapterInterface.rst new file mode 100644 index 000000000000..66f497d6e695 --- /dev/null +++ b/id/api/Phalcon_Annotations_AdapterInterface.rst @@ -0,0 +1,46 @@ +Interface **Phalcon\\Annotations\\AdapterInterface** +==================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) + +... + + +abstract public **getReader** () + +... + + +abstract public **get** (*unknown* $className) + +... + + +abstract public **getMethods** (*unknown* $className) + +... + + +abstract public **getMethod** (*unknown* $className, *unknown* $methodName) + +... + + +abstract public **getProperties** (*unknown* $className) + +... + + +abstract public **getProperty** (*unknown* $className, *unknown* $propertyName) + +... + + diff --git a/id/api/Phalcon_Annotations_Adapter_Apc.rst b/id/api/Phalcon_Annotations_Adapter_Apc.rst new file mode 100644 index 000000000000..3aadda1011ac --- /dev/null +++ b/id/api/Phalcon_Annotations_Adapter_Apc.rst @@ -0,0 +1,85 @@ +Class **Phalcon\\Annotations\\Adapter\\Apc** +============================================ + +*extends* abstract class :doc:`Phalcon\\Annotations\\Adapter ` + +*implements* :doc:`Phalcon\\Annotations\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores the parsed annotations in APC. This adapter is suitable for production + +.. code-block:: php + + ` **read** (*string* $key) + +Reads parsed annotations from APC + + + +public **write** (*unknown* $key, :doc:`Phalcon\\Annotations\\Reflection ` $data) + +Writes parsed annotations to APC + + + +public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) inherited from Phalcon\\Annotations\\Adapter + +Sets the annotations parser + + + +public **getReader** () inherited from Phalcon\\Annotations\\Adapter + +Returns the annotation reader + + + +public **get** (*string|object* $className) inherited from Phalcon\\Annotations\\Adapter + +Parses or retrieves all the annotations found in a class + + + +public **getMethods** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getMethod** (*unknown* $className, *unknown* $methodName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific method + + + +public **getProperties** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getProperty** (*unknown* $className, *unknown* $propertyName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific property + + + diff --git a/id/api/Phalcon_Annotations_Adapter_Files.rst b/id/api/Phalcon_Annotations_Adapter_Files.rst new file mode 100644 index 000000000000..8f052df07545 --- /dev/null +++ b/id/api/Phalcon_Annotations_Adapter_Files.rst @@ -0,0 +1,87 @@ +Class **Phalcon\\Annotations\\Adapter\\Files** +============================================== + +*extends* abstract class :doc:`Phalcon\\Annotations\\Adapter ` + +*implements* :doc:`Phalcon\\Annotations\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores the parsed annotations in diles. This adapter is suitable for production + +.. code-block:: php + + 'app/cache/annotations/' + )); + + + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Annotations\\Adapter\\Files constructor + + + +public :doc:`Phalcon\\Annotations\\Reflection ` **read** (*string* $key) + +Reads parsed annotations from files + + + +public **write** (*unknown* $key, :doc:`Phalcon\\Annotations\\Reflection ` $data) + +Writes parsed annotations to files + + + +public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) inherited from Phalcon\\Annotations\\Adapter + +Sets the annotations parser + + + +public **getReader** () inherited from Phalcon\\Annotations\\Adapter + +Returns the annotation reader + + + +public **get** (*string|object* $className) inherited from Phalcon\\Annotations\\Adapter + +Parses or retrieves all the annotations found in a class + + + +public **getMethods** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getMethod** (*unknown* $className, *unknown* $methodName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific method + + + +public **getProperties** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getProperty** (*unknown* $className, *unknown* $propertyName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific property + + + diff --git a/id/api/Phalcon_Annotations_Adapter_Memory.rst b/id/api/Phalcon_Annotations_Adapter_Memory.rst new file mode 100644 index 000000000000..874a2b4f2be2 --- /dev/null +++ b/id/api/Phalcon_Annotations_Adapter_Memory.rst @@ -0,0 +1,72 @@ +Class **Phalcon\\Annotations\\Adapter\\Memory** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Annotations\\Adapter ` + +*implements* :doc:`Phalcon\\Annotations\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores the parsed annotations in memory. This adapter is the suitable development/testing + + +Methods +------- + +public :doc:`Phalcon\\Annotations\\Reflection ` **read** (*string* $key) + +Reads parsed annotations from memory + + + +public **write** (*unknown* $key, :doc:`Phalcon\\Annotations\\Reflection ` $data) + +Writes parsed annotations to memory + + + +public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) inherited from Phalcon\\Annotations\\Adapter + +Sets the annotations parser + + + +public **getReader** () inherited from Phalcon\\Annotations\\Adapter + +Returns the annotation reader + + + +public **get** (*string|object* $className) inherited from Phalcon\\Annotations\\Adapter + +Parses or retrieves all the annotations found in a class + + + +public **getMethods** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getMethod** (*unknown* $className, *unknown* $methodName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific method + + + +public **getProperties** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getProperty** (*unknown* $className, *unknown* $propertyName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific property + + + diff --git a/id/api/Phalcon_Annotations_Adapter_Xcache.rst b/id/api/Phalcon_Annotations_Adapter_Xcache.rst new file mode 100644 index 000000000000..32cc4b71d3d5 --- /dev/null +++ b/id/api/Phalcon_Annotations_Adapter_Xcache.rst @@ -0,0 +1,79 @@ +Class **Phalcon\\Annotations\\Adapter\\Xcache** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Annotations\\Adapter ` + +*implements* :doc:`Phalcon\\Annotations\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores the parsed annotations to XCache. This adapter is suitable for production + +.. code-block:: php + + ` **read** (*string* $key) + +Reads parsed annotations from XCache + + + +public **write** (*unknown* $key, :doc:`Phalcon\\Annotations\\Reflection ` $data) + +Writes parsed annotations to XCache + + + +public **setReader** (:doc:`Phalcon\\Annotations\\ReaderInterface ` $reader) inherited from Phalcon\\Annotations\\Adapter + +Sets the annotations parser + + + +public **getReader** () inherited from Phalcon\\Annotations\\Adapter + +Returns the annotation reader + + + +public **get** (*string|object* $className) inherited from Phalcon\\Annotations\\Adapter + +Parses or retrieves all the annotations found in a class + + + +public **getMethods** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getMethod** (*unknown* $className, *unknown* $methodName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific method + + + +public **getProperties** (*unknown* $className) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in all the class' methods + + + +public **getProperty** (*unknown* $className, *unknown* $propertyName) inherited from Phalcon\\Annotations\\Adapter + +Returns the annotations found in a specific property + + + diff --git a/id/api/Phalcon_Annotations_Annotation.rst b/id/api/Phalcon_Annotations_Annotation.rst new file mode 100644 index 000000000000..14f10ef8c2c9 --- /dev/null +++ b/id/api/Phalcon_Annotations_Annotation.rst @@ -0,0 +1,74 @@ +Class **Phalcon\\Annotations\\Annotation** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents a single annotation in an annotations collection + + +Methods +------- + +public **__construct** (*array* $reflectionData) + +Phalcon\\Annotations\\Annotation constructor + + + +public **getName** () + +Returns the annotation's name + + + +public *mixed* **getExpression** (*array* $expr) + +Resolves an annotation expression + + + +public *array* **getExprArguments** () + +Returns the expression arguments without resolving + + + +public *array* **getArguments** () + +Returns the expression arguments + + + +public **numberArguments** () + +Returns the number of arguments that the annotation has + + + +public *mixed* **getArgument** (*int|string* $position) + +Returns an argument in a specific position + + + +public *boolean* **hasArgument** (*int|string* $position) + +Returns an argument in a specific position + + + +public *mixed* **getNamedArgument** (*unknown* $name) + +Returns a named argument + + + +public *mixed* **getNamedParameter** (*unknown* $name) + +Returns a named parameter + + + diff --git a/id/api/Phalcon_Annotations_Collection.rst b/id/api/Phalcon_Annotations_Collection.rst new file mode 100644 index 000000000000..e25ecb0f7346 --- /dev/null +++ b/id/api/Phalcon_Annotations_Collection.rst @@ -0,0 +1,98 @@ +Class **Phalcon\\Annotations\\Collection** +========================================== + +*implements* Iterator, Traversable, Countable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents a collection of annotations. This class allows to traverse a group of annotations easily + +.. code-block:: php + + getName(), PHP_EOL; + } + + //Check if the annotations has a specific + var_dump($classAnnotations->has('Cacheable')); + + //Get an specific annotation in the collection + $annotation = $classAnnotations->get('Cacheable'); + + + +Methods +------- + +public **__construct** ([*array* $reflectionData]) + +Phalcon\\Annotations\\Collection constructor + + + +public **count** () + +Returns the number of annotations in the collection + + + +public **rewind** () + +Rewinds the internal iterator + + + +public :doc:`Phalcon\\Annotations\\Annotation ` **current** () + +Returns the current annotation in the iterator + + + +public **key** () + +Returns the current position/key in the iterator + + + +public **next** () + +Moves the internal iteration pointer to the next position + + + +public **valid** () + +Check if the current annotation in the iterator is valid + + + +public **getAnnotations** () + +Returns the internal annotations as an array + + + +public **get** (*unknown* $name) + +Returns the first annotation that match a name + + + +public **getAll** (*unknown* $name) + +Returns all the annotations that match a name + + + +public **has** (*unknown* $name) + +Check if an annotation exists in a collection + + + diff --git a/id/api/Phalcon_Annotations_Exception.rst b/id/api/Phalcon_Annotations_Exception.rst new file mode 100644 index 000000000000..01c104c1724e --- /dev/null +++ b/id/api/Phalcon_Annotations_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Annotations\\Exception** +========================================= + +*extends* Exception + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Annotations_Reader.rst b/id/api/Phalcon_Annotations_Reader.rst new file mode 100644 index 000000000000..2d95d56e10de --- /dev/null +++ b/id/api/Phalcon_Annotations_Reader.rst @@ -0,0 +1,28 @@ +Class **Phalcon\\Annotations\\Reader** +====================================== + +*implements* :doc:`Phalcon\\Annotations\\ReaderInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Parses docblocks returning an array with the found annotations + + +Methods +------- + +public **parse** (*unknown* $className) + +Reads annotations from the class dockblocks, its methods and/or properties + + + +public static **parseDocBlock** (*unknown* $docBlock, [*unknown* $file], [*unknown* $line]) + +Parses a raw doc block returning the annotations found + + + diff --git a/id/api/Phalcon_Annotations_ReaderInterface.rst b/id/api/Phalcon_Annotations_ReaderInterface.rst new file mode 100644 index 000000000000..00b69995acee --- /dev/null +++ b/id/api/Phalcon_Annotations_ReaderInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Annotations\\ReaderInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **parse** (*unknown* $className) + +... + + +abstract public static **parseDocBlock** (*unknown* $docBlock, [*unknown* $file], [*unknown* $line]) + +... + + diff --git a/id/api/Phalcon_Annotations_Reflection.rst b/id/api/Phalcon_Annotations_Reflection.rst new file mode 100644 index 000000000000..6786e30e4551 --- /dev/null +++ b/id/api/Phalcon_Annotations_Reflection.rst @@ -0,0 +1,68 @@ +Class **Phalcon\\Annotations\\Reflection** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to manipulate the annotations reflection in an OO manner + +.. code-block:: php + + parse('MyComponent'); + + // Create the reflection + $reflection = new Reflection($parsing); + + // Get the annotations in the class docblock + $classAnnotations = reflection->getClassAnnotations(); + + + +Methods +------- + +public **__construct** ([*array* $reflectionData]) + +Phalcon\\Annotations\\Reflection constructor + + + +public **getClassAnnotations** () + +Returns the annotations found in the class docblock + + + +public **getMethodsAnnotations** () + +Returns the annotations found in the methods' docblocks + + + +public **getPropertiesAnnotations** () + +Returns the annotations found in the properties' docblocks + + + +public *array* **getReflectionData** () + +Returns the raw parsing intermediate definitions used to construct the reflection + + + +public static *array data* **__set_state** (*unknown* $data) + +Restores the state of a Phalcon\\Annotations\\Reflection variable export + + + diff --git a/id/api/Phalcon_Assets_Collection.rst b/id/api/Phalcon_Assets_Collection.rst new file mode 100644 index 000000000000..7000e65b50b5 --- /dev/null +++ b/id/api/Phalcon_Assets_Collection.rst @@ -0,0 +1,214 @@ +Class **Phalcon\\Assets\\Collection** +===================================== + +*implements* Countable, Iterator, Traversable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents a collection of resources + + +Methods +------- + +public **getPrefix** () + +... + + +public **getLocal** () + +... + + +public **getResources** () + +... + + +public **getCodes** () + +... + + +public **getPosition** () + +... + + +public **getFilters** () + +... + + +public **getAttributes** () + +... + + +public **getJoin** () + +... + + +public **getTargetUri** () + +... + + +public **getTargetPath** () + +... + + +public **getTargetLocal** () + +... + + +public **getSourcePath** () + +... + + +public **add** (:doc:`Phalcon\\Assets\\Resource ` $resource) + +Adds a resource to the collection + + + +public **addInline** (:doc:`Phalcon\\Assets\\Inline ` $code) + +Adds a inline code to the collection + + + +public **addCss** (*unknown* $path, [*unknown* $local], [*unknown* $filter], [*unknown* $attributes]) + +Adds a CSS resource to the collection + + + +public **addInlineCss** (*unknown* $content, [*unknown* $filter], [*unknown* $attributes]) + +Adds a inline CSS to the collection + + + +public :doc:`Phalcon\\Assets\\Collection ` **addJs** (*string* $path, [*boolean* $local], [*boolean* $filter], [*array* $attributes]) + +Adds a javascript resource to the collection + + + +public **addInlineJs** (*unknown* $content, [*unknown* $filter], [*unknown* $attributes]) + +Adds a inline javascript to the collection + + + +public **count** () + +Returns the number of elements in the form + + + +public **rewind** () + +Rewinds the internal iterator + + + +public **current** () + +Returns the current resource in the iterator + + + +public *int* **key** () + +Returns the current position/key in the iterator + + + +public **next** () + +Moves the internal iteration pointer to the next position + + + +public **valid** () + +Check if the current element in the iterator is valid + + + +public **setTargetPath** (*unknown* $targetPath) + +Sets the target path of the file for the filtered/join output + + + +public **setSourcePath** (*unknown* $sourcePath) + +Sets a base source path for all the resources in this collection + + + +public **setTargetUri** (*unknown* $targetUri) + +Sets a target uri for the generated HTML + + + +public **setPrefix** (*unknown* $prefix) + +Sets a common prefix for all the resources + + + +public **setLocal** (*unknown* $local) + +Sets if the collection uses local resources by default + + + +public **setAttributes** (*array* $attributes) + +Sets extra HTML attributes + + + +public **setFilters** (*array* $filters) + +Sets an array of filters in the collection + + + +public **setTargetLocal** (*unknown* $targetLocal) + +Sets the target local + + + +public **join** (*unknown* $join) + +Sets if all filtered resources in the collection must be joined in a single result file + + + +public **getRealTargetPath** (*unknown* $basePath) + +Returns the complete location where the joined/filtered collection must be written + + + +public **addFilter** (:doc:`Phalcon\\Assets\\FilterInterface ` $filter) + +Adds a filter to the collection + + + diff --git a/id/api/Phalcon_Assets_Exception.rst b/id/api/Phalcon_Assets_Exception.rst new file mode 100644 index 000000000000..55a50b47e59e --- /dev/null +++ b/id/api/Phalcon_Assets_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Assets\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Assets_FilterInterface.rst b/id/api/Phalcon_Assets_FilterInterface.rst new file mode 100644 index 000000000000..158951eaceb3 --- /dev/null +++ b/id/api/Phalcon_Assets_FilterInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Assets\\FilterInterface** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **filter** (*unknown* $content) + +... + + diff --git a/id/api/Phalcon_Assets_Filters_Cssmin.rst b/id/api/Phalcon_Assets_Filters_Cssmin.rst new file mode 100644 index 000000000000..a41277b3138a --- /dev/null +++ b/id/api/Phalcon_Assets_Filters_Cssmin.rst @@ -0,0 +1,22 @@ +Class **Phalcon\\Assets\\Filters\\Cssmin** +========================================== + +*implements* :doc:`Phalcon\\Assets\\FilterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Minify the css - removes comments removes newlines and line feeds keeping removes last semicolon from last property + + +Methods +------- + +public **filter** (*unknown* $content) + +Filters the content using CSSMIN + + + diff --git a/id/api/Phalcon_Assets_Filters_Jsmin.rst b/id/api/Phalcon_Assets_Filters_Jsmin.rst new file mode 100644 index 000000000000..ed4eea36f0b6 --- /dev/null +++ b/id/api/Phalcon_Assets_Filters_Jsmin.rst @@ -0,0 +1,22 @@ +Class **Phalcon\\Assets\\Filters\\Jsmin** +========================================= + +*implements* :doc:`Phalcon\\Assets\\FilterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Deletes the characters which are insignificant to JavaScript. Comments will be removed. Tabs will be replaced with spaces. Carriage returns will be replaced with linefeeds. Most spaces and linefeeds will be removed. + + +Methods +------- + +public **filter** (*unknown* $content) + +Filters the content using JSMIN + + + diff --git a/id/api/Phalcon_Assets_Filters_None.rst b/id/api/Phalcon_Assets_Filters_None.rst new file mode 100644 index 000000000000..3b9746df9d8b --- /dev/null +++ b/id/api/Phalcon_Assets_Filters_None.rst @@ -0,0 +1,22 @@ +Class **Phalcon\\Assets\\Filters\\None** +======================================== + +*implements* :doc:`Phalcon\\Assets\\FilterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Returns the content without make any modification to the original source + + +Methods +------- + +public **filter** (*unknown* $content) + +Returns the content without be touched + + + diff --git a/id/api/Phalcon_Assets_Inline.rst b/id/api/Phalcon_Assets_Inline.rst new file mode 100644 index 000000000000..6fa91dfc3606 --- /dev/null +++ b/id/api/Phalcon_Assets_Inline.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Assets\\Inline** +================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents an inline asset + +.. code-block:: php + + ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents an inlined CSS + + +Methods +------- + +public **__construct** (*string* $content, [*boolean* $filter], [*array* $attributes]) + + + + + +public **getType** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getContent** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getFilter** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getAttributes** () inherited from Phalcon\\Assets\\Inline + +... + + +public **setType** (*unknown* $type) inherited from Phalcon\\Assets\\Inline + +Sets the inline's type + + + +public **setFilter** (*unknown* $filter) inherited from Phalcon\\Assets\\Inline + +Sets if the resource must be filtered or not + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Assets\\Inline + +Sets extra HTML attributes + + + diff --git a/id/api/Phalcon_Assets_Inline_Js.rst b/id/api/Phalcon_Assets_Inline_Js.rst new file mode 100644 index 000000000000..466680a8ff1c --- /dev/null +++ b/id/api/Phalcon_Assets_Inline_Js.rst @@ -0,0 +1,60 @@ +Class **Phalcon\\Assets\\Inline\\Js** +===================================== + +*extends* class :doc:`Phalcon\\Assets\\Inline ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents an inline Javascript + + +Methods +------- + +public **__construct** (*string* $content, [*boolean* $filter], [*array* $attributes]) + + + + + +public **getType** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getContent** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getFilter** () inherited from Phalcon\\Assets\\Inline + +... + + +public **getAttributes** () inherited from Phalcon\\Assets\\Inline + +... + + +public **setType** (*unknown* $type) inherited from Phalcon\\Assets\\Inline + +Sets the inline's type + + + +public **setFilter** (*unknown* $filter) inherited from Phalcon\\Assets\\Inline + +Sets if the resource must be filtered or not + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Assets\\Inline + +Sets extra HTML attributes + + + diff --git a/id/api/Phalcon_Assets_Manager.rst b/id/api/Phalcon_Assets_Manager.rst new file mode 100644 index 000000000000..260f25498497 --- /dev/null +++ b/id/api/Phalcon_Assets_Manager.rst @@ -0,0 +1,202 @@ +Class **Phalcon\\Assets\\Manager** +================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Manages collections of CSS/Javascript assets + + +Methods +------- + +public **__construct** ([*array* $options]) + + + + + +public **setOptions** (*array* $options) + +Sets the manager options + + + +public **getOptions** () + +Returns the manager options + + + +public **useImplicitOutput** (*unknown* $implicitOutput) + +Sets if the HTML generated must be directly printed or returned + + + +public **addCss** (*unknown* $path, [*unknown* $local], [*unknown* $filter], [*unknown* $attributes]) + +Adds a Css resource to the 'css' collection + +.. code-block:: php + + addCss('css/bootstrap.css'); + $assets->addCss('http://bootstrap.my-cdn.com/style.css', false); + + + + +public **addInlineCss** (*unknown* $content, [*unknown* $filter], [*unknown* $attributes]) + +Adds a inline Css to the 'css' collection + + + +public **addJs** (*unknown* $path, [*unknown* $local], [*unknown* $filter], [*unknown* $attributes]) + +Adds a javascript resource to the 'js' collection + +.. code-block:: php + + addJs('scripts/jquery.js'); + $assets->addJs('http://jquery.my-cdn.com/jquery.js', false); + + + + +public **addInlineJs** (*unknown* $content, [*unknown* $filter], [*unknown* $attributes]) + +Adds a inline javascript to the 'js' collection + + + +public **addResourceByType** (*unknown* $type, :doc:`Phalcon\\Assets\\Resource ` $resource) + +Adds a resource by its type + +.. code-block:: php + + addResourceByType('css', new \Phalcon\Assets\Resource\Css('css/style.css')); + + + + +public **addInlineCodeByType** (*unknown* $type, :doc:`Phalcon\\Assets\\Inline ` $code) + +Adds a inline code by its type + + + +public **addResource** (:doc:`Phalcon\\Assets\\Resource ` $resource) + +Adds a raw resource to the manager + +.. code-block:: php + + addResource(new Phalcon\Assets\Resource('css', 'css/style.css')); + + + + +public **addInlineCode** (:doc:`Phalcon\\Assets\\Inline ` $code) + +Adds a raw inline code to the manager + + + +public **set** (*unknown* $id, :doc:`Phalcon\\Assets\\Collection ` $collection) + +Sets a collection in the Assets Manager + +.. code-block:: php + + set('js', $collection); + + + + +public **get** (*unknown* $id) + +Returns a collection by its id + +.. code-block:: php + + get('js'); + + + + +public **getCss** () + +Returns the CSS collection of assets + + + +public **getJs** () + +Returns the CSS collection of assets + + + +public **collection** (*unknown* $name) + +Creates/Returns a collection of resources + + + +public **output** (:doc:`Phalcon\\Assets\\Collection ` $collection, *callback* $callback, *string* $type) + +Traverses a collection calling the callback to generate its HTML + + + +public **outputInline** (:doc:`Phalcon\\Assets\\Collection ` $collection, *string* $type) + +Traverses a collection and generate its HTML + + + +public **outputCss** ([*string* $collectionName]) + +Prints the HTML for CSS resources + + + +public **outputInlineCss** ([*string* $collectionName]) + +Prints the HTML for inline CSS + + + +public **outputJs** ([*string* $collectionName]) + +Prints the HTML for JS resources + + + +public **outputInlineJs** ([*string* $collectionName]) + +Prints the HTML for inline JS + + + +public **getCollections** () + +Returns existing collections in the manager + + + diff --git a/id/api/Phalcon_Assets_Resource.rst b/id/api/Phalcon_Assets_Resource.rst new file mode 100644 index 000000000000..4179ea20bb45 --- /dev/null +++ b/id/api/Phalcon_Assets_Resource.rst @@ -0,0 +1,139 @@ +Class **Phalcon\\Assets\\Resource** +=================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents an asset resource + +.. code-block:: php + + ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents CSS resources + + +Methods +------- + +public **__construct** (*string* $path, [*boolean* $local], [*boolean* $filter], [*array* $attributes]) + + + + + +public **getType** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getPath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getLocal** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getFilter** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getAttributes** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getSourcePath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getTargetPath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getTargetUri** () inherited from Phalcon\\Assets\\Resource + +... + + +public **setType** (*unknown* $type) inherited from Phalcon\\Assets\\Resource + +Sets the resource's type + + + +public **setPath** (*unknown* $path) inherited from Phalcon\\Assets\\Resource + +Sets the resource's path + + + +public **setLocal** (*unknown* $local) inherited from Phalcon\\Assets\\Resource + +Sets if the resource is local or external + + + +public **setFilter** (*unknown* $filter) inherited from Phalcon\\Assets\\Resource + +Sets if the resource must be filtered or not + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Assets\\Resource + +Sets extra HTML attributes + + + +public **setTargetUri** (*unknown* $targetUri) inherited from Phalcon\\Assets\\Resource + +Sets a target uri for the generated HTML + + + +public **setSourcePath** (*unknown* $sourcePath) inherited from Phalcon\\Assets\\Resource + +Sets the resource's source path + + + +public **setTargetPath** (*unknown* $targetPath) inherited from Phalcon\\Assets\\Resource + +Sets the resource's target path + + + +public **getContent** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the content of the resource as an string Optionally a base path where the resource is located can be set + + + +public **getRealTargetUri** () inherited from Phalcon\\Assets\\Resource + +Returns the real target uri for the generated HTML + + + +public **getRealSourcePath** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the complete location where the resource is located + + + +public **getRealTargetPath** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the complete location where the resource must be written + + + diff --git a/id/api/Phalcon_Assets_Resource_Js.rst b/id/api/Phalcon_Assets_Resource_Js.rst new file mode 100644 index 000000000000..eb088582c046 --- /dev/null +++ b/id/api/Phalcon_Assets_Resource_Js.rst @@ -0,0 +1,134 @@ +Class **Phalcon\\Assets\\Resource\\Js** +======================================= + +*extends* class :doc:`Phalcon\\Assets\\Resource ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents Javascript resources + + +Methods +------- + +public **__construct** (*string* $path, [*boolean* $local], [*boolean* $filter], [*array* $attributes]) + + + + + +public **getType** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getPath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getLocal** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getFilter** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getAttributes** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getSourcePath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getTargetPath** () inherited from Phalcon\\Assets\\Resource + +... + + +public **getTargetUri** () inherited from Phalcon\\Assets\\Resource + +... + + +public **setType** (*unknown* $type) inherited from Phalcon\\Assets\\Resource + +Sets the resource's type + + + +public **setPath** (*unknown* $path) inherited from Phalcon\\Assets\\Resource + +Sets the resource's path + + + +public **setLocal** (*unknown* $local) inherited from Phalcon\\Assets\\Resource + +Sets if the resource is local or external + + + +public **setFilter** (*unknown* $filter) inherited from Phalcon\\Assets\\Resource + +Sets if the resource must be filtered or not + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Assets\\Resource + +Sets extra HTML attributes + + + +public **setTargetUri** (*unknown* $targetUri) inherited from Phalcon\\Assets\\Resource + +Sets a target uri for the generated HTML + + + +public **setSourcePath** (*unknown* $sourcePath) inherited from Phalcon\\Assets\\Resource + +Sets the resource's source path + + + +public **setTargetPath** (*unknown* $targetPath) inherited from Phalcon\\Assets\\Resource + +Sets the resource's target path + + + +public **getContent** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the content of the resource as an string Optionally a base path where the resource is located can be set + + + +public **getRealTargetUri** () inherited from Phalcon\\Assets\\Resource + +Returns the real target uri for the generated HTML + + + +public **getRealSourcePath** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the complete location where the resource is located + + + +public **getRealTargetPath** ([*unknown* $basePath]) inherited from Phalcon\\Assets\\Resource + +Returns the complete location where the resource must be written + + + diff --git a/id/api/Phalcon_Cache_Backend.rst b/id/api/Phalcon_Cache_Backend.rst new file mode 100644 index 000000000000..636ec6b3826a --- /dev/null +++ b/id/api/Phalcon_Cache_Backend.rst @@ -0,0 +1,80 @@ +Abstract class **Phalcon\\Cache\\Backend** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class implements common functionality for backend adapters. A backend cache adapter may extend this class + + +Methods +------- + +public **getFrontend** () + +... + + +public **setFrontend** (*unknown* $frontend) + +... + + +public **getOptions** () + +... + + +public **setOptions** (*unknown* $options) + +... + + +public **getLastKey** () + +... + + +public **setLastKey** (*unknown* $lastKey) + +... + + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend constructor + + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) + +Stops the frontend without store any cached content + + + +public **isFresh** () + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_BackendInterface.rst b/id/api/Phalcon_Cache_BackendInterface.rst new file mode 100644 index 000000000000..eb2ce2d1200b --- /dev/null +++ b/id/api/Phalcon_Cache_BackendInterface.rst @@ -0,0 +1,76 @@ +Interface **Phalcon\\Cache\\BackendInterface** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **start** (*unknown* $keyName, [*unknown* $lifetime]) + +... + + +abstract public **stop** ([*unknown* $stopBuffer]) + +... + + +abstract public **getFrontend** () + +... + + +abstract public **getOptions** () + +... + + +abstract public **isFresh** () + +... + + +abstract public **isStarted** () + +... + + +abstract public **setLastKey** (*unknown* $lastKey) + +... + + +abstract public **getLastKey** () + +... + + +abstract public **get** (*unknown* $keyName, [*unknown* $lifetime]) + +... + + +abstract public **save** ([*unknown* $keyName], [*unknown* $content], [*unknown* $lifetime], [*unknown* $stopBuffer]) + +... + + +abstract public **delete** (*unknown* $keyName) + +... + + +abstract public **queryKeys** ([*unknown* $prefix]) + +... + + +abstract public **exists** ([*unknown* $keyName], [*unknown* $lifetime]) + +... + + diff --git a/id/api/Phalcon_Cache_Backend_Apc.rst b/id/api/Phalcon_Cache_Backend_Apc.rst new file mode 100644 index 000000000000..490d0390384a --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Apc.rst @@ -0,0 +1,152 @@ +Class **Phalcon\\Cache\\Backend\\Apc** +====================================== + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data and raw data using an APC backend + +.. code-block:: php + + 172800 + )); + + $cache = new \Phalcon\Cache\Backend\Apc($frontCache, array( + 'prefix' => 'app-data' + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public *mixed* **get** (*string|long* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*string|long* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the APC backend and stops the frontend + + + +public *mixed* **increment** ([*string* $keyName], [*long* $value]) + +Increment of a given key, by number $value + + + +public *mixed* **decrement** ([*string* $keyName], [*long* $value]) + +Decrement of a given key, by number $value + + + +public **delete** (*unknown* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string|long* $keyName], [*long* $lifetime]) + +Checks if cache exists and it hasn't expired + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) inherited from Phalcon\\Cache\\Backend + +Phalcon\\Cache\\Backend constructor + + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_File.rst b/id/api/Phalcon_Cache_Backend_File.rst new file mode 100644 index 000000000000..3214b7559e94 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_File.rst @@ -0,0 +1,173 @@ +Class **Phalcon\\Cache\\Backend\\File** +======================================= + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments using a file backend + +.. code-block:: php + + 172800 + ); + + //Create a output cache + $frontCache = \Phalcon\Cache\Frontend\Output($frontOptions); + + //Set the cache directory + $backendOptions = array( + 'cacheDir' => '../app/cache/' + ); + + //Create the File backend + $cache = new \Phalcon\Cache\Backend\File($frontCache, $backendOptions); + + $content = $cache->start('my-cache'); + if ($content === null) { + echo '

', time(), '

'; + $cache->save(); + } else { + echo $content; + } + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\File constructor + + + +public *mixed* **get** (*int|string* $keyName, [*int* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*int* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string|int* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string|int* $keyName], [*int* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *mixed* **increment** ([*string|int* $keyName], [*int* $value]) + +Increment of a given key, by number $value + + + +public *mixed* **decrement** ([*string|int* $keyName], [*int* $value]) + +Decrement of a given key, by number $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getKey** (*unknown* $key) + +Return a file-system safe identifier for a given key + + + +public *this* **useSafeKey** (*unknown* $useSafeKey) + +Set whether to use the safekey or not + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Libmemcached.rst b/id/api/Phalcon_Cache_Backend_Libmemcached.rst new file mode 100644 index 000000000000..1f27a30374f9 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Libmemcached.rst @@ -0,0 +1,167 @@ +Class **Phalcon\\Cache\\Backend\\Libmemcached** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data or raw data to a libmemcached backend This adapter uses the special memcached key "_PHCM" to store all the keys internally used by the adapter + +.. code-block:: php + + 172800 + )); + + //Create the Cache setting memcached connection options + $cache = new \Phalcon\Cache\Backend\Libmemcached($frontCache, array( + "servers" => array( + array('host' => 'localhost', + 'port' => 11211, + 'weight' => 1), + ), + "client" => array( + Memcached::OPT_HASH => Memcached::HASH_MD5, + Memcached::OPT_PREFIX_KEY => 'prefix.', + ) + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\Memcache constructor + + + +public **_connect** () + +Create internal connection to memcached + + + +public *mixed* **get** (*int|string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string* $keyName], [*long* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *long* **increment** ([*string* $keyName], [*unknown* $value]) + +Increment of given $keyName by $value + + + +public *long* **decrement** ([*string* $keyName], [*long* $value]) + +Decrement of $keyName by given $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Memcache.rst b/id/api/Phalcon_Cache_Backend_Memcache.rst new file mode 100644 index 000000000000..75af575bba1f --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Memcache.rst @@ -0,0 +1,161 @@ +Class **Phalcon\\Cache\\Backend\\Memcache** +=========================================== + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data or raw data to a memcache backend This adapter uses the special memcached key "_PHCM" to store all the keys internally used by the adapter + +.. code-block:: php + + 172800 + )); + + //Create the Cache setting memcached connection options + $cache = new \Phalcon\Cache\Backend\Memcache($frontCache, array( + 'host' => 'localhost', + 'port' => 11211, + 'persistent' => false + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\Memcache constructor + + + +public **_connect** () + +Create internal connection to memcached + + + +public *mixed* **get** (*int|string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string* $keyName], [*long* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *long* **increment** ([*string* $keyName], [*unknown* $value]) + +Increment of given $keyName by $value + + + +public *long* **decrement** ([*string* $keyName], [*long* $value]) + +Decrement of $keyName by given $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Memory.rst b/id/api/Phalcon_Cache_Backend_Memory.rst new file mode 100644 index 000000000000..cdad952ead29 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Memory.rst @@ -0,0 +1,160 @@ +Class **Phalcon\\Cache\\Backend\\Memory** +========================================= + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface `, Serializable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores content in memory. Data is lost when the request is finished + +.. code-block:: php + + save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public *mixed* **get** (*string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the backend and stops the frontend + + + +public *boolean* **delete** (*string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string|int* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string|int* $keyName], [*long* $lifetime]) + +Checks if cache exists and it hasn't expired + + + +public *long* **increment** ([*string* $keyName], [*unknown* $value]) + +Increment of given $keyName by $value + + + +public *long* **decrement** ([*string* $keyName], [*long* $value]) + +Decrement of $keyName by given $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **serialize** () + +Required for interface \\Serializable + + + +public **unserialize** (*unknown* $data) + +Required for interface \\Serializable + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) inherited from Phalcon\\Cache\\Backend + +Phalcon\\Cache\\Backend constructor + + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Mongo.rst b/id/api/Phalcon_Cache_Backend_Mongo.rst new file mode 100644 index 000000000000..bd80538d9e64 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Mongo.rst @@ -0,0 +1,167 @@ +Class **Phalcon\\Cache\\Backend\\Mongo** +======================================== + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data or raw data to a MongoDb backend + +.. code-block:: php + + 172800 + )); + + //Create a MongoDB cache + $cache = new \Phalcon\Cache\Backend\Mongo($frontCache, array( + 'server' => "mongodb://localhost", + 'db' => 'caches', + 'collection' => 'images' + )); + + //Cache arbitrary data + $cache->save('my-data', file_get_contents('some-image.jpg')); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\Mongo constructor + + + +final protected *MongoCollection* **_getCollection** () + +Returns a MongoDb collection based on the backend parameters + + + +public *mixed* **get** (*int|string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string* $keyName], [*long* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *collection->remove(...)* **gc** () + +gc + + + +public *mixed* **increment** (*int|string* $keyName, [*long* $value]) + +Increment of a given key by $value + + + +public *mixed* **decrement** (*int|string* $keyName, [*long* $value]) + +Decrement of a given key by $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Redis.rst b/id/api/Phalcon_Cache_Backend_Redis.rst new file mode 100644 index 000000000000..db5c28d729f4 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Redis.rst @@ -0,0 +1,162 @@ +Class **Phalcon\\Cache\\Backend\\Redis** +======================================== + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data or raw data to a redis backend This adapter uses the special redis key "_PHCR" to store all the keys internally used by the adapter + +.. code-block:: php + + 172800 + )); + + //Create the Cache setting redis connection options + $cache = new Phalcon\Cache\Backend\Redis($frontCache, array( + 'host' => 'localhost', + 'port' => 6379, + 'auth' => 'foobared', + 'persistent' => false + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\Redis constructor + + + +public **_connect** () + +Create internal connection to redis + + + +public *mixed* **get** (*int|string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string* $keyName], [*long* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *long* **increment** ([*string* $keyName], [*unknown* $value]) + +Increment of given $keyName by $value + + + +public *long* **decrement** ([*string* $keyName], [*long* $value]) + +Decrement of $keyName by given $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Backend_Xcache.rst b/id/api/Phalcon_Cache_Backend_Xcache.rst new file mode 100644 index 000000000000..349ea6daf0c1 --- /dev/null +++ b/id/api/Phalcon_Cache_Backend_Xcache.rst @@ -0,0 +1,152 @@ +Class **Phalcon\\Cache\\Backend\\Xcache** +========================================= + +*extends* abstract class :doc:`Phalcon\\Cache\\Backend ` + +*implements* :doc:`Phalcon\\Cache\\BackendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments, PHP data and raw data using an XCache backend + +.. code-block:: php + + 172800 + )); + + $cache = new \Phalcon\Cache\Backend\Xcache($frontCache, array( + 'prefix' => 'app-data' + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Cache\\FrontendInterface ` $frontend, [*array* $options]) + +Phalcon\\Cache\\Backend\\Xcache constructor + + + +public *mixed* **get** (*int|string* $keyName, [*long* $lifetime]) + +Returns a cached content + + + +public **save** ([*int|string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into the file backend and stops the frontend + + + +public *boolean* **delete** (*int|string* $keyName) + +Deletes a value from the cache by its key + + + +public *array* **queryKeys** ([*string* $prefix]) + +Query the existing cached keys + + + +public *boolean* **exists** ([*string* $keyName], [*long* $lifetime]) + +Checks if cache exists and it isn't expired + + + +public *mixed* **increment** (*string* $keyName, [*long* $value]) + +Atomic increment of a given key, by number $value + + + +public *mixed* **decrement** (*string* $keyName, [*long* $value]) + +Atomic decrement of a given key, by number $value + + + +public **flush** () + +Immediately invalidates all existing items. + + + +public **getFrontend** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setFrontend** (*unknown* $frontend) inherited from Phalcon\\Cache\\Backend + +... + + +public **getOptions** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setOptions** (*unknown* $options) inherited from Phalcon\\Cache\\Backend + +... + + +public **getLastKey** () inherited from Phalcon\\Cache\\Backend + +... + + +public **setLastKey** (*unknown* $lastKey) inherited from Phalcon\\Cache\\Backend + +... + + +public *mixed* **start** (*int|string* $keyName, [*int* $lifetime]) inherited from Phalcon\\Cache\\Backend + +Starts a cache. The keyname allows to identify the created fragment + + + +public **stop** ([*unknown* $stopBuffer]) inherited from Phalcon\\Cache\\Backend + +Stops the frontend without store any cached content + + + +public **isFresh** () inherited from Phalcon\\Cache\\Backend + +Checks whether the last cache is fresh or cached + + + +public **isStarted** () inherited from Phalcon\\Cache\\Backend + +Checks whether the cache has starting buffering or not + + + +public *int* **getLifetime** () inherited from Phalcon\\Cache\\Backend + +Gets the last lifetime set + + + diff --git a/id/api/Phalcon_Cache_Exception.rst b/id/api/Phalcon_Cache_Exception.rst new file mode 100644 index 000000000000..02142a50cf54 --- /dev/null +++ b/id/api/Phalcon_Cache_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Cache\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Cache_FrontendInterface.rst b/id/api/Phalcon_Cache_FrontendInterface.rst new file mode 100644 index 000000000000..82c65aadefec --- /dev/null +++ b/id/api/Phalcon_Cache_FrontendInterface.rst @@ -0,0 +1,46 @@ +Interface **Phalcon\\Cache\\FrontendInterface** +=============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **getLifetime** () + +... + + +abstract public **isBuffering** () + +... + + +abstract public **start** () + +... + + +abstract public **getContent** () + +... + + +abstract public **stop** () + +... + + +abstract public **beforeStore** (*unknown* $data) + +... + + +abstract public **afterRetrieve** (*unknown* $data) + +... + + diff --git a/id/api/Phalcon_Cache_Frontend_Base64.rst b/id/api/Phalcon_Cache_Frontend_Base64.rst new file mode 100644 index 000000000000..a3f2d52eccde --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_Base64.rst @@ -0,0 +1,95 @@ +Class **Phalcon\\Cache\\Frontend\\Base64** +========================================== + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache data converting/deconverting them to base64. This adapter uses the base64_encode/base64_decode PHP's functions + +.. code-block:: php + + 172800 + )); + + //Create a MongoDB cache + $cache = new \Phalcon\Cache\Backend\Mongo($frontCache, array( + 'server' => "mongodb://localhost", + 'db' => 'caches', + 'collection' => 'images' + )); + + // Try to get cached image + $cacheKey = 'some-image.jpg.cache'; + $image = $cache->get($cacheKey); + if ($image === null) { + + // Store the image in the cache + $cache->save($cacheKey, file_get_contents('tmp-dir/some-image.jpg')); + } + + header('Content-Type: image/jpeg'); + echo $image; + + + +Methods +------- + +public **__construct** ([*array* $frontendOptions]) + +Phalcon\\Cache\\Frontend\\Base64 constructor + + + +public **getLifetime** () + +Returns the cache lifetime + + + +public **isBuffering** () + +Check whether if frontend is buffering output + + + +public **start** () + +Starts output frontend. Actually, does nothing in this adapter + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public *string* **beforeStore** (*mixed* $data) + +Serializes data before storing them + + + +public *mixed* **afterRetrieve** (*mixed* $data) + +Unserializes data after retrieval + + + diff --git a/id/api/Phalcon_Cache_Frontend_Data.rst b/id/api/Phalcon_Cache_Frontend_Data.rst new file mode 100644 index 000000000000..b0d647d0cf40 --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_Data.rst @@ -0,0 +1,101 @@ +Class **Phalcon\\Cache\\Frontend\\Data** +======================================== + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache native PHP data in a serialized form + +.. code-block:: php + + 172800 + )); + + // Create the component that will cache "Data" to a "File" backend + // Set the cache file directory - important to keep the "/" at the end of + // of the value for the folder + $cache = new \Phalcon\Cache\Backend\File($frontCache, array( + "cacheDir" => "../app/cache/" + )); + + // Try to get cached records + $cacheKey = 'robots_order_id.cache'; + $robots = $cache->get($cacheKey); + if ($robots === null) { + + // $robots is null due to cache expiration or data does not exist + // Make the database call and populate the variable + $robots = Robots::find(array("order" => "id")); + + // Store it in the cache + $cache->save($cacheKey, $robots); + } + + // Use $robots :) + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + + +Methods +------- + +public **__construct** ([*array* $frontendOptions]) + +Phalcon\\Cache\\Frontend\\Data constructor + + + +public **getLifetime** () + +Returns the cache lifetime + + + +public **isBuffering** () + +Check whether if frontend is buffering output + + + +public **start** () + +Starts output frontend. Actually, does nothing + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public **beforeStore** (*unknown* $data) + +Serializes data before storing them + + + +public **afterRetrieve** (*unknown* $data) + +Unserializes data after retrieval + + + diff --git a/id/api/Phalcon_Cache_Frontend_Igbinary.rst b/id/api/Phalcon_Cache_Frontend_Igbinary.rst new file mode 100644 index 000000000000..97401e8b735f --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_Igbinary.rst @@ -0,0 +1,101 @@ +Class **Phalcon\\Cache\\Frontend\\Igbinary** +============================================ + +*extends* class :doc:`Phalcon\\Cache\\Frontend\\Data ` + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache native PHP data in a serialized form using igbinary extension + +.. code-block:: php + + 172800 + )); + + // Create the component that will cache "Igbinary" to a "File" backend + // Set the cache file directory - important to keep the "/" at the end of + // of the value for the folder + $cache = new \Phalcon\Cache\Backend\File($frontCache, array( + "cacheDir" => "../app/cache/" + )); + + // Try to get cached records + $cacheKey = 'robots_order_id.cache'; + $robots = $cache->get($cacheKey); + if ($robots === null) { + + // $robots is null due to cache expiration or data do not exist + // Make the database call and populate the variable + $robots = Robots::find(array("order" => "id")); + + // Store it in the cache + $cache->save($cacheKey, $robots); + } + + // Use $robots :) + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + + +Methods +------- + +public **__construct** ([*array* $frontendOptions]) + +Phalcon\\Cache\\Frontend\\Data constructor + + + +public **getLifetime** () + +Returns the cache lifetime + + + +public **isBuffering** () + +Check whether if frontend is buffering output + + + +public **start** () + +Starts output frontend. Actually, does nothing + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public *string* **beforeStore** (*mixed* $data) + +Serializes data before storing them + + + +public *mixed* **afterRetrieve** (*mixed* $data) + +Unserializes data after retrieval + + + diff --git a/id/api/Phalcon_Cache_Frontend_Json.rst b/id/api/Phalcon_Cache_Frontend_Json.rst new file mode 100644 index 000000000000..ea436324c6b2 --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_Json.rst @@ -0,0 +1,89 @@ +Class **Phalcon\\Cache\\Frontend\\Json** +======================================== + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache data converting/deconverting them to JSON. This adapter uses the json_encode/json_decode PHP's functions As the data is encoded in JSON other systems accessing the same backend could process them + +.. code-block:: php + + 172800 + )); + + //Create the Cache setting memcached connection options + $cache = new \Phalcon\Cache\Backend\Memcache($frontCache, array( + 'host' => 'localhost', + 'port' => 11211, + 'persistent' => false + )); + + //Cache arbitrary data + $cache->save('my-data', array(1, 2, 3, 4, 5)); + + //Get data + $data = $cache->get('my-data'); + + + +Methods +------- + +public **__construct** ([*array* $frontendOptions]) + +Phalcon\\Cache\\Frontend\\Base64 constructor + + + +public **getLifetime** () + +Returns the cache lifetime + + + +public **isBuffering** () + +Check whether if frontend is buffering output + + + +public **start** () + +Starts output frontend. Actually, does nothing + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public *string* **beforeStore** (*mixed* $data) + +Serializes data before storing them + + + +public *mixed* **afterRetrieve** (*mixed* $data) + +Unserializes data after retrieval + + + diff --git a/id/api/Phalcon_Cache_Frontend_None.rst b/id/api/Phalcon_Cache_Frontend_None.rst new file mode 100644 index 000000000000..8c4ba30d2e35 --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_None.rst @@ -0,0 +1,92 @@ +Class **Phalcon\\Cache\\Frontend\\None** +======================================== + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Discards any kind of frontend data input. This frontend does not have expiration time or any other options + +.. code-block:: php + + "localhost", + "port" => "11211" + )); + + // This Frontend always return the data as it's returned by the backend + $cacheKey = 'robots_order_id.cache'; + $robots = $cache->get($cacheKey); + if ($robots === null) { + + // This cache doesn't perform any expiration checking, so the data is always expired + // Make the database call and populate the variable + $robots = Robots::find(array("order" => "id")); + + $cache->save($cacheKey, $robots); + } + + // Use $robots :) + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + + +Methods +------- + +public **getLifetime** () + +Returns cache lifetime, always one second expiring content + + + +public **isBuffering** () + +Check whether if frontend is buffering output, always false + + + +public **start** () + +Starts output frontend + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public **beforeStore** (*mixed* $data) + +Prepare data to be stored + + + +public **afterRetrieve** (*mixed* $data) + +Prepares data to be retrieved to user + + + diff --git a/id/api/Phalcon_Cache_Frontend_Output.rst b/id/api/Phalcon_Cache_Frontend_Output.rst new file mode 100644 index 000000000000..7497da90d2c7 --- /dev/null +++ b/id/api/Phalcon_Cache_Frontend_Output.rst @@ -0,0 +1,110 @@ +Class **Phalcon\\Cache\\Frontend\\Output** +========================================== + +*implements* :doc:`Phalcon\\Cache\\FrontendInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to cache output fragments captured with ob_* functions + +.. code-block:: php + + 172800 + )); + + // Create the component that will cache from the "Output" to a "File" backend + // Set the cache file directory - it's important to keep the "/" at the end of + // the value for the folder + $cache = new \Phalcon\Cache\Backend\File($frontCache, array( + "cacheDir" => "../app/cache/" + )); + + // Get/Set the cache file to ../app/cache/my-cache.html + $content = $cache->start("my-cache.html"); + + // If $content is null then the content will be generated for the cache + if ($content === null) { + + //Print date and time + echo date("r"); + + //Generate a link to the sign-up action + echo Phalcon\Tag::linkTo( + array( + "user/signup", + "Sign Up", + "class" => "signup-button" + ) + ); + + // Store the output into the cache file + $cache->save(); + + } else { + + // Echo the cached output + echo $content; + } + + + +Methods +------- + +public **__construct** ([*array* $frontendOptions]) + +Phalcon\\Cache\\Frontend\\Output constructor + + + +public **getLifetime** () + +Returns the cache lifetime + + + +public **isBuffering** () + +Check whether if frontend is buffering output + + + +public **start** () + +Starts output frontend. Currently, does nothing + + + +public *string* **getContent** () + +Returns output cached content + + + +public **stop** () + +Stops output frontend + + + +public *string* **beforeStore** (*mixed* $data) + +Serializes data before storing them + + + +public *mixed* **afterRetrieve** (*mixed* $data) + +Unserializes data after retrieval + + + diff --git a/id/api/Phalcon_Cache_Multiple.rst b/id/api/Phalcon_Cache_Multiple.rst new file mode 100644 index 000000000000..fb0c4c7fc156 --- /dev/null +++ b/id/api/Phalcon_Cache_Multiple.rst @@ -0,0 +1,104 @@ +Class **Phalcon\\Cache\\Multiple** +================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to read to chained backend adapters writing to multiple backends + +.. code-block:: php + + 3600 + )); + + $fastFrontend = new DataFrontend(array( + "lifetime" => 86400 + )); + + $slowFrontend = new DataFrontend(array( + "lifetime" => 604800 + )); + + //Backends are registered from the fastest to the slower + $cache = new Multiple(array( + new ApcCache($ultraFastFrontend, array( + "prefix" => 'cache', + )), + new MemcacheCache($fastFrontend, array( + "prefix" => 'cache', + "host" => "localhost", + "port" => "11211" + )), + new FileCache($slowFrontend, array( + "prefix" => 'cache', + "cacheDir" => "../app/cache/" + )) + )); + + //Save, saves in every backend + $cache->save('my-key', $data); + + + +Methods +------- + +public **__construct** ([*Phalcon\\Cache\\BackendInterface[]* $backends]) + +Phalcon\\Cache\\Multiple constructor + + + +public **push** (:doc:`Phalcon\\Cache\\BackendInterface ` $backend) + +Adds a backend + + + +public *mixed* **get** (*string|int* $keyName, [*long* $lifetime]) + +Returns a cached content reading the internal backends + + + +public **start** (*string|int* $keyName, [*long* $lifetime]) + +Starts every backend + + + +public **save** ([*string* $keyName], [*string* $content], [*long* $lifetime], [*boolean* $stopBuffer]) + +Stores cached content into all backends and stops the frontend + + + +public *boolean* **delete** (*string|int* $keyName) + +Deletes a value from each backend + + + +public *boolean* **exists** ([*string|int* $keyName], [*long* $lifetime]) + +Checks if cache exists in at least one backend + + + +public **flush** () + +Flush all backend(s) + + + diff --git a/id/api/Phalcon_Cli_Console.rst b/id/api/Phalcon_Cli_Console.rst new file mode 100644 index 000000000000..ef7d80c4625d --- /dev/null +++ b/id/api/Phalcon_Cli_Console.rst @@ -0,0 +1,104 @@ +Class **Phalcon\\Cli\\Console** +=============================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows to create CLI applications using Phalcon + + +Methods +------- + +public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Phalcon\\Cli\\Console constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **registerModules** (*array* $modules) + +Register an array of modules present in the console + +.. code-block:: php + + registerModules(array( + 'frontend' => array( + 'className' => 'Multiple\Frontend\Module', + 'path' => '../apps/frontend/Module.php' + ), + 'backend' => array( + 'className' => 'Multiple\Backend\Module', + 'path' => '../apps/backend/Module.php' + ) + )); + + + + +public **addModules** (*array* $modules) + +Merge modules with the existing ones + +.. code-block:: php + + addModules(array( + 'admin' => array( + 'className' => 'Multiple\Admin\Module', + 'path' => '../apps/admin/Module.php' + ) + )); + + + + +public **getModules** () + +Return the modules registered in the console + + + +public **handle** ([*array* $arguments]) + +Handle the whole command-line tasks + + + +public **setArgument** ([*array* $arguments], [*unknown* $str], [*unknown* $shift]) + +Set an specific argument + + + diff --git a/id/api/Phalcon_Cli_Console_Exception.rst b/id/api/Phalcon_Cli_Console_Exception.rst new file mode 100644 index 000000000000..046d579111f5 --- /dev/null +++ b/id/api/Phalcon_Cli_Console_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Cli\\Console\\Exception** +========================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Cli_Dispatcher.rst b/id/api/Phalcon_Cli_Dispatcher.rst new file mode 100644 index 000000000000..4cbf1f681576 --- /dev/null +++ b/id/api/Phalcon_Cli_Dispatcher.rst @@ -0,0 +1,285 @@ +Class **Phalcon\\Cli\\Dispatcher** +================================== + +*extends* abstract class :doc:`Phalcon\\Dispatcher ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\DispatcherInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Dispatching is the process of taking the command-line arguments, extracting the module name, task name, action name, and optional parameters contained in it, and then instantiating a task and calling an action on it. + +.. code-block:: php + + setDi(di); + + $dispatcher->setTaskName('posts'); + $dispatcher->setActionName('index'); + $dispatcher->setParams(array()); + + $handle = dispatcher->dispatch(); + + + +Constants +--------- + +*integer* **EXCEPTION_NO_DI** + +*integer* **EXCEPTION_CYCLIC_ROUTING** + +*integer* **EXCEPTION_HANDLER_NOT_FOUND** + +*integer* **EXCEPTION_INVALID_HANDLER** + +*integer* **EXCEPTION_INVALID_PARAMS** + +*integer* **EXCEPTION_ACTION_NOT_FOUND** + +Methods +------- + +public **__construct** () + +Phalcon\\Cli\\Dispatcher constructor + + + +public **setTaskSuffix** (*unknown* $taskSuffix) + +Sets the default task suffix + + + +public **setDefaultTask** (*unknown* $taskName) + +Sets the default task name + + + +public **setTaskName** (*unknown* $taskName) + +Sets the task name to be dispatched + + + +public **getTaskName** () + +Gets last dispatched task name + + + +protected **_throwDispatchException** (*unknown* $message, [*unknown* $exceptionCode]) + +Throws an internal exception + + + +protected **_handleException** (*Exception* $exception) + +Handles a user exception + + + +public **getLastTask** () + +Returns the lastest dispatched controller + + + +public **getActiveTask** () + +Returns the active task in the dispatcher + + + +public **setOptions** (*array* $options) + +Set the options to be dispatched + + + +public **getOptions** () + +Get dispatched options + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Dispatcher + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Dispatcher + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Dispatcher + +Sets the events manager + + + +public **getEventsManager** () inherited from Phalcon\\Dispatcher + +Returns the internal event manager + + + +public **setActionSuffix** (*unknown* $actionSuffix) inherited from Phalcon\\Dispatcher + +Sets the default action suffix + + + +public **setModuleName** (*unknown* $moduleName) inherited from Phalcon\\Dispatcher + +Sets the module where the controller is (only informative) + + + +public **getModuleName** () inherited from Phalcon\\Dispatcher + +Gets the module where the controller class is + + + +public **setNamespaceName** (*unknown* $namespaceName) inherited from Phalcon\\Dispatcher + +Sets the namespace where the controller class is + + + +public **getNamespaceName** () inherited from Phalcon\\Dispatcher + +Gets a namespace to be prepended to the current handler name + + + +public **setDefaultNamespace** (*unknown* $namespaceName) inherited from Phalcon\\Dispatcher + +Sets the default namespace + + + +public **getDefaultNamespace** () inherited from Phalcon\\Dispatcher + +Returns the default namespace + + + +public **setDefaultAction** (*unknown* $actionName) inherited from Phalcon\\Dispatcher + +Sets the default action name + + + +public **setActionName** (*unknown* $actionName) inherited from Phalcon\\Dispatcher + +Sets the action name to be dispatched + + + +public **getActionName** () inherited from Phalcon\\Dispatcher + +Gets the latest dispatched action name + + + +public **setParams** (*array* $params) inherited from Phalcon\\Dispatcher + +Sets action params to be dispatched + + + +public **getParams** () inherited from Phalcon\\Dispatcher + +Gets action params + + + +public **setParam** (*mixed* $param, *mixed* $value) inherited from Phalcon\\Dispatcher + +Set a param by its name or numeric index + + + +public *mixed* **getParam** (*mixed* $param, [*string|array* $filters], [*mixed* $defaultValue]) inherited from Phalcon\\Dispatcher + +Gets a param by its name or numeric index + + + +public **getActiveMethod** () inherited from Phalcon\\Dispatcher + +Returns the current method to be/executed in the dispatcher + + + +public **isFinished** () inherited from Phalcon\\Dispatcher + +Checks if the dispatch loop is finished or has more pendent controllers/tasks to dispatch + + + +public **setReturnedValue** (*mixed* $value) inherited from Phalcon\\Dispatcher + +Sets the latest returned value by an action manually + + + +public *mixed* **getReturnedValue** () inherited from Phalcon\\Dispatcher + +Returns value returned by the lastest dispatched action + + + +public *object* **dispatch** () inherited from Phalcon\\Dispatcher + +Dispatches a handle action taking into account the routing parameters + + + +public **forward** (*array* $forward) inherited from Phalcon\\Dispatcher + +Forwards the execution flow to another controller/action Dispatchers are unique per module. Forwarding between modules is not allowed + +.. code-block:: php + + dispatcher->forward(array("controller" => "posts", "action" => "index")); + + + + +public **wasForwarded** () inherited from Phalcon\\Dispatcher + +Check if the current executed action was forwarded by another one + + + +public **getHandlerClass** () inherited from Phalcon\\Dispatcher + +Possible class name that will be located to dispatch the request + + + +protected **_resolveEmptyProperties** () inherited from Phalcon\\Dispatcher + +Set empty properties to their defaults (where defaults are available) + + + diff --git a/id/api/Phalcon_Cli_Dispatcher_Exception.rst b/id/api/Phalcon_Cli_Dispatcher_Exception.rst new file mode 100644 index 000000000000..a2fc95e6b3d0 --- /dev/null +++ b/id/api/Phalcon_Cli_Dispatcher_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Cli\\Dispatcher\\Exception** +============================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Cli_Router.rst b/id/api/Phalcon_Cli_Router.rst new file mode 100644 index 000000000000..5249dcf4ee7c --- /dev/null +++ b/id/api/Phalcon_Cli_Router.rst @@ -0,0 +1,160 @@ +Class **Phalcon\\Cli\\Router** +============================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Cli\\Router is the standard framework router. Routing is the process of taking a command-line arguments and decomposing it into parameters to determine which module, task, and action of that task should receive the request + +.. code-block:: php + + handle(array( + 'module' => 'main', + 'task' => 'videos', + 'action' => 'process' + )); + echo $router->getTaskName(); + + + +Methods +------- + +public **__construct** ([*unknown* $defaultRoutes]) + +Phalcon\\Cli\\Router constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setDefaultModule** (*unknown* $moduleName) + +Sets the name of the default module + + + +public **setDefaultTask** (*unknown* $taskName) + +Sets the default controller name + + + +public **setDefaultAction** (*unknown* $actionName) + +Sets the default action name + + + +public **setDefaults** (*array* $defaults) + +Sets an array of default paths. If a route is missing a path the router will use the defined here This method must not be used to set a 404 route + +.. code-block:: php + + setDefaults(array( + 'module' => 'common', + 'action' => 'index' + )); + + + + +public **handle** ([*array* $arguments]) + +Handles routing information received from command-line arguments + + + +public :doc:`Phalcon\\Cli\\Router\\Route ` **add** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router + +.. code-block:: php + + add('/about', 'About::main'); + + + + +public **getModuleName** () + +Returns proccesed module name + + + +public **getTaskName** () + +Returns proccesed task name + + + +public **getActionName** () + +Returns proccesed action name + + + +public *array* **getParams** () + +Returns proccesed extra params + + + +public **getMatchedRoute** () + +Returns the route that matchs the handled URI + + + +public *array* **getMatches** () + +Returns the sub expressions in the regular expression matched + + + +public **wasMatched** () + +Checks if the router macthes any of the defined routes + + + +public **getRoutes** () + +Returns all the routes defined in the router + + + +public :doc:`Phalcon\\Cli\\Router\\Route ` **getRouteById** (*int* $id) + +Returns a route object by its id + + + +public **getRouteByName** (*unknown* $name) + +Returns a route object by its name + + + diff --git a/id/api/Phalcon_Cli_Router_Exception.rst b/id/api/Phalcon_Cli_Router_Exception.rst new file mode 100644 index 000000000000..c05a6ea1ecd7 --- /dev/null +++ b/id/api/Phalcon_Cli_Router_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Cli\\Router\\Exception** +========================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Cli_Router_Route.rst b/id/api/Phalcon_Cli_Router_Route.rst new file mode 100644 index 000000000000..077deac506dc --- /dev/null +++ b/id/api/Phalcon_Cli_Router_Route.rst @@ -0,0 +1,136 @@ +Class **Phalcon\\Cli\\Router\\Route** +===================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class represents every route added to the router + + +Constants +--------- + +*string* **DEFAULT_DELIMITER** + +Methods +------- + +public **__construct** (*string* $pattern, [*array* $paths]) + +Phalcon\\Cli\\Router\\Route constructor + + + +public **compilePattern** (*unknown* $pattern) + +Replaces placeholders from pattern returning a valid PCRE regular expression + + + +public *array|boolean* **extractNamedParams** (*string* $pattern) + +Extracts parameters from a string + + + +public **reConfigure** (*string* $pattern, [*array* $paths]) + +Reconfigure the route adding a new pattern and a set of paths + + + +public **getName** () + +Returns the route's name + + + +public **setName** (*unknown* $name) + +Sets the route's name + +.. code-block:: php + + add('/about', array( + 'controller' => 'about' + ))->setName('about'); + + + + +public :doc:`Phalcon\\Cli\\Router\\Route ` **beforeMatch** (*callback* $callback) + +Sets a callback that is called if the route is matched. The developer can implement any arbitrary conditions here If the callback returns false the route is treated as not matched + + + +public *mixed* **getBeforeMatch** () + +Returns the 'before match' callback if any + + + +public **getRouteId** () + +Returns the route's id + + + +public **getPattern** () + +Returns the route's pattern + + + +public **getCompiledPattern** () + +Returns the route's compiled pattern + + + +public **getPaths** () + +Returns the paths + + + +public **getReversedPaths** () + +Returns the paths using positions as keys and names as values + + + +public :doc:`Phalcon\\Cli\\Router\\Route ` **convert** (*string* $name, *callable* $converter) + +Adds a converter to perform an additional transformation for certain parameter + + + +public **getConverters** () + +Returns the router converter + + + +public static **reset** () + +Resets the internal route id generator + + + +public static **delimiter** ([*unknown* $delimiter]) + +Set the routing delimiter + + + +public static **getDelimiter** () + +Get routing delimiter + + + diff --git a/id/api/Phalcon_Cli_Task.rst b/id/api/Phalcon_Cli_Task.rst new file mode 100644 index 000000000000..1a8017f8cc0e --- /dev/null +++ b/id/api/Phalcon_Cli_Task.rst @@ -0,0 +1,75 @@ +Class **Phalcon\\Cli\\Task** +============================ + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Every command-line task should extend this class that encapsulates all the task functionality A task can be used to run "tasks" such as migrations, cronjobs, unit-tests, or anything that you want. The Task class should at least have a "mainAction" method + +.. code-block:: php + + ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Config.rst b/id/api/Phalcon_Config.rst new file mode 100644 index 000000000000..aabdb4b61e35 --- /dev/null +++ b/id/api/Phalcon_Config.rst @@ -0,0 +1,167 @@ +Class **Phalcon\\Config** +========================= + +*implements* ArrayAccess, Countable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Config is designed to simplify the access to, and the use of, configuration data within applications. It provides a nested object property based user interface for accessing this configuration data within application code. + +.. code-block:: php + + array( + "adapter" => "Mysql", + "host" => "localhost", + "username" => "scott", + "password" => "cheetah", + "dbname" => "test_db" + ), + "phalcon" => array( + "controllersDir" => "../app/controllers/", + "modelsDir" => "../app/models/", + "viewsDir" => "../app/views/" + ) + )); + + + +Methods +------- + +public **__construct** ([*array* $arrayConfig]) + +Phalcon\\Config constructor + + + +public **offsetExists** (*unknown* $index) + +Allows to check whether an attribute is defined using the array-syntax + +.. code-block:: php + + get('controllersDir', '../app/controllers/'); + + + + +public **offsetGet** (*unknown* $index) + +Gets an attribute using the array-syntax + +.. code-block:: php + + 'Sqlite'); + + + + +public **offsetUnset** (*unknown* $index) + +Unsets an attribute using the array-syntax + +.. code-block:: php + + ` $config) + +Merges a configuration into the current one + +.. code-block:: php + + array('host' => 'localhost'))); + $globalConfig->merge($config2); + + + + +public **toArray** () + +Converts recursively the object to an array + +.. code-block:: php + + toArray()); + + + + +public **count** () + +Returns the count of properties set in the config + +.. code-block:: php + + count(); + + + + +public static **__set_state** (*array* $data) + +Restores the state of a Phalcon\\Config object + + + +final protected *Config merged config* **_merge** (*Config* $config, [*unknown* $instance]) + +Helper method for merge configs (forwarding nested config instance) + + + diff --git a/id/api/Phalcon_Config_Adapter_Ini.rst b/id/api/Phalcon_Config_Adapter_Ini.rst new file mode 100644 index 000000000000..bdb2ff602d7b --- /dev/null +++ b/id/api/Phalcon_Config_Adapter_Ini.rst @@ -0,0 +1,198 @@ +Class **Phalcon\\Config\\Adapter\\Ini** +======================================= + +*extends* class :doc:`Phalcon\\Config ` + +*implements* Countable, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Reads ini files and converts them to Phalcon\\Config objects. Given the next configuration file: + +.. code-block:: ini + + phalcon->controllersDir; + echo $config->database->username; + + + +Methods +------- + +public **__construct** (*unknown* $filePath) + +Phalcon\\Config\\Adapter\\Ini constructor + + + +protected **_parseIniString** (*unknown* $path, *unknown* $value) + +Build multidimensional array from string + +.. code-block:: php + + _parseIniString('path.hello.world', 'value for last key'); + + // result + [ + 'path' => [ + 'hello' => [ + 'world' => 'value for last key', + ], + ], + ]; + + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Config + +Allows to check whether an attribute is defined using the array-syntax + +.. code-block:: php + + get('controllersDir', '../app/controllers/'); + + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Config + +Gets an attribute using the array-syntax + +.. code-block:: php + + 'Sqlite'); + + + + +public **offsetUnset** (*unknown* $index) inherited from Phalcon\\Config + +Unsets an attribute using the array-syntax + +.. code-block:: php + + ` $config) inherited from Phalcon\\Config + +Merges a configuration into the current one + +.. code-block:: php + + array('host' => 'localhost'))); + $globalConfig->merge($config2); + + + + +public **toArray** () inherited from Phalcon\\Config + +Converts recursively the object to an array + +.. code-block:: php + + toArray()); + + + + +public **count** () inherited from Phalcon\\Config + +Returns the count of properties set in the config + +.. code-block:: php + + count(); + + + + +public static **__set_state** (*array* $data) inherited from Phalcon\\Config + +Restores the state of a Phalcon\\Config object + + + +final protected *Config merged config* **_merge** (*Config* $config, [*unknown* $instance]) inherited from Phalcon\\Config + +Helper method for merge configs (forwarding nested config instance) + + + diff --git a/id/api/Phalcon_Config_Adapter_Json.rst b/id/api/Phalcon_Config_Adapter_Json.rst new file mode 100644 index 000000000000..465935cf2e47 --- /dev/null +++ b/id/api/Phalcon_Config_Adapter_Json.rst @@ -0,0 +1,166 @@ +Class **Phalcon\\Config\\Adapter\\Json** +======================================== + +*extends* class :doc:`Phalcon\\Config ` + +*implements* Countable, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Reads JSON files and converts them to Phalcon\\Config objects. Given the following configuration file: + +.. code-block:: php + + phalcon->baseuri; + echo $config->models->metadata; + + + +Methods +------- + +public **__construct** (*unknown* $filePath) + +Phalcon\\Config\\Adapter\\Json constructor + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Config + +Allows to check whether an attribute is defined using the array-syntax + +.. code-block:: php + + get('controllersDir', '../app/controllers/'); + + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Config + +Gets an attribute using the array-syntax + +.. code-block:: php + + 'Sqlite'); + + + + +public **offsetUnset** (*unknown* $index) inherited from Phalcon\\Config + +Unsets an attribute using the array-syntax + +.. code-block:: php + + ` $config) inherited from Phalcon\\Config + +Merges a configuration into the current one + +.. code-block:: php + + array('host' => 'localhost'))); + $globalConfig->merge($config2); + + + + +public **toArray** () inherited from Phalcon\\Config + +Converts recursively the object to an array + +.. code-block:: php + + toArray()); + + + + +public **count** () inherited from Phalcon\\Config + +Returns the count of properties set in the config + +.. code-block:: php + + count(); + + + + +public static **__set_state** (*array* $data) inherited from Phalcon\\Config + +Restores the state of a Phalcon\\Config object + + + +final protected *Config merged config* **_merge** (*Config* $config, [*unknown* $instance]) inherited from Phalcon\\Config + +Helper method for merge configs (forwarding nested config instance) + + + diff --git a/id/api/Phalcon_Config_Adapter_Php.rst b/id/api/Phalcon_Config_Adapter_Php.rst new file mode 100644 index 000000000000..c5c03297ac0d --- /dev/null +++ b/id/api/Phalcon_Config_Adapter_Php.rst @@ -0,0 +1,180 @@ +Class **Phalcon\\Config\\Adapter\\Php** +======================================= + +*extends* class :doc:`Phalcon\\Config ` + +*implements* Countable, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Reads php files and converts them to Phalcon\\Config objects. Given the next configuration file: + +.. code-block:: php + + array( + 'adapter' => 'Mysql', + 'host' => 'localhost', + 'username' => 'scott', + 'password' => 'cheetah', + 'dbname' => 'test_db' + ), + + 'phalcon' => array( + 'controllersDir' => '../app/controllers/', + 'modelsDir' => '../app/models/', + 'viewsDir' => '../app/views/' + )); + + You can read it as follows: + +.. code-block:: php + + phalcon->controllersDir; + echo $config->database->username; + + + +Methods +------- + +public **__construct** (*unknown* $filePath) + +Phalcon\\Config\\Adapter\\Php constructor + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Config + +Allows to check whether an attribute is defined using the array-syntax + +.. code-block:: php + + get('controllersDir', '../app/controllers/'); + + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Config + +Gets an attribute using the array-syntax + +.. code-block:: php + + 'Sqlite'); + + + + +public **offsetUnset** (*unknown* $index) inherited from Phalcon\\Config + +Unsets an attribute using the array-syntax + +.. code-block:: php + + ` $config) inherited from Phalcon\\Config + +Merges a configuration into the current one + +.. code-block:: php + + array('host' => 'localhost'))); + $globalConfig->merge($config2); + + + + +public **toArray** () inherited from Phalcon\\Config + +Converts recursively the object to an array + +.. code-block:: php + + toArray()); + + + + +public **count** () inherited from Phalcon\\Config + +Returns the count of properties set in the config + +.. code-block:: php + + count(); + + + + +public static **__set_state** (*array* $data) inherited from Phalcon\\Config + +Restores the state of a Phalcon\\Config object + + + +final protected *Config merged config* **_merge** (*Config* $config, [*unknown* $instance]) inherited from Phalcon\\Config + +Helper method for merge configs (forwarding nested config instance) + + + diff --git a/id/api/Phalcon_Config_Adapter_Yaml.rst b/id/api/Phalcon_Config_Adapter_Yaml.rst new file mode 100644 index 000000000000..a61647559b01 --- /dev/null +++ b/id/api/Phalcon_Config_Adapter_Yaml.rst @@ -0,0 +1,178 @@ +Class **Phalcon\\Config\\Adapter\\Yaml** +======================================== + +*extends* class :doc:`Phalcon\\Config ` + +*implements* Countable, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Reads YAML files and converts them to Phalcon\\Config objects. Given the following configuration file: + +.. code-block:: php + + function($value) { + return APPROOT . $value; + } + ]); + + echo $config->phalcon->controllersDir; + echo $config->phalcon->baseuri; + echo $config->models->metadata; + + + +Methods +------- + +public **__construct** (*unknown* $filePath, [*array* $callbacks]) + +Phalcon\\Config\\Adapter\\Yaml constructor + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Config + +Allows to check whether an attribute is defined using the array-syntax + +.. code-block:: php + + get('controllersDir', '../app/controllers/'); + + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Config + +Gets an attribute using the array-syntax + +.. code-block:: php + + 'Sqlite'); + + + + +public **offsetUnset** (*unknown* $index) inherited from Phalcon\\Config + +Unsets an attribute using the array-syntax + +.. code-block:: php + + ` $config) inherited from Phalcon\\Config + +Merges a configuration into the current one + +.. code-block:: php + + array('host' => 'localhost'))); + $globalConfig->merge($config2); + + + + +public **toArray** () inherited from Phalcon\\Config + +Converts recursively the object to an array + +.. code-block:: php + + toArray()); + + + + +public **count** () inherited from Phalcon\\Config + +Returns the count of properties set in the config + +.. code-block:: php + + count(); + + + + +public static **__set_state** (*array* $data) inherited from Phalcon\\Config + +Restores the state of a Phalcon\\Config object + + + +final protected *Config merged config* **_merge** (*Config* $config, [*unknown* $instance]) inherited from Phalcon\\Config + +Helper method for merge configs (forwarding nested config instance) + + + diff --git a/id/api/Phalcon_Config_Exception.rst b/id/api/Phalcon_Config_Exception.rst new file mode 100644 index 000000000000..415441cd9387 --- /dev/null +++ b/id/api/Phalcon_Config_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Config\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Crypt.rst b/id/api/Phalcon_Crypt.rst new file mode 100644 index 000000000000..db33b9d92f3e --- /dev/null +++ b/id/api/Phalcon_Crypt.rst @@ -0,0 +1,151 @@ +Class **Phalcon\\Crypt** +======================== + +*implements* :doc:`Phalcon\\CryptInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Provides encryption facilities to phalcon applications + +.. code-block:: php + + encrypt($text, $key); + + echo $crypt->decrypt($encrypted, $key); + + + +Constants +--------- + +*integer* **PADDING_DEFAULT** + +*integer* **PADDING_ANSI_X_923** + +*integer* **PADDING_PKCS7** + +*integer* **PADDING_ISO_10126** + +*integer* **PADDING_ISO_IEC_7816_4** + +*integer* **PADDING_ZERO** + +*integer* **PADDING_SPACE** + +Methods +------- + +public **setPadding** (*int* $scheme) + +Changes the padding scheme used + + + +public **setCipher** (*unknown* $cipher) + +Sets the cipher algorithm + + + +public **getCipher** () + +Returns the current cipher + + + +public **setMode** (*unknown* $mode) + +Sets the encrypt/decrypt mode + + + +public **getMode** () + +Returns the current encryption mode + + + +public **setKey** (*unknown* $key) + +Sets the encryption key + + + +public **getKey** () + +Returns the encryption key + + + +protected **_cryptPadText** (*unknown* $text, *unknown* $mode, *unknown* $blockSize, *unknown* $paddingType) + +Pads texts before encryption + + + +protected **_cryptUnpadText** (*unknown* $text, *unknown* $mode, *unknown* $blockSize, *unknown* $paddingType) + +If the function detects that the text was not padded, it will return it unmodified + + + +public **encrypt** (*unknown* $text, [*unknown* $key]) + +Encrypts a text + +.. code-block:: php + + encrypt("Ultra-secret text", "encrypt password"); + + + + +public **decrypt** (*unknown* $text, [*unknown* $key]) + +Decrypts an encrypted text + +.. code-block:: php + + decrypt($encrypted, "decrypt password"); + + + + +public **encryptBase64** (*unknown* $text, [*unknown* $key], [*unknown* $safe]) + +Encrypts a text returning the result as a base64 string + + + +public **decryptBase64** (*unknown* $text, [*unknown* $key], [*unknown* $safe]) + +Decrypt a text that is coded as a base64 string + + + +public **getAvailableCiphers** () + +Returns a list of available cyphers + + + +public **getAvailableModes** () + +Returns a list of available modes + + + diff --git a/id/api/Phalcon_CryptInterface.rst b/id/api/Phalcon_CryptInterface.rst new file mode 100644 index 000000000000..d53c07b7ad2a --- /dev/null +++ b/id/api/Phalcon_CryptInterface.rst @@ -0,0 +1,71 @@ +Interface **Phalcon\\CryptInterface** +===================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setCipher** (*unknown* $cipher) + +... + + +abstract public **getCipher** () + +... + + +abstract public **setMode** (*unknown* $mode) + +... + + +abstract public **getMode** () + +... + + +abstract public **setKey** (*unknown* $key) + +... + + +abstract public **getKey** () + +... + + +abstract public **encrypt** (*unknown* $text, [*unknown* $key]) + +... + + +abstract public **decrypt** (*unknown* $text, [*unknown* $key]) + +... + + +abstract public **encryptBase64** (*unknown* $text, [*unknown* $key]) + +... + + +abstract public **decryptBase64** (*unknown* $text, [*unknown* $key]) + +... + + +abstract public **getAvailableCiphers** () + +... + + +abstract public **getAvailableModes** () + +... + + diff --git a/id/api/Phalcon_Crypt_Exception.rst b/id/api/Phalcon_Crypt_Exception.rst new file mode 100644 index 000000000000..17c72ad74aee --- /dev/null +++ b/id/api/Phalcon_Crypt_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Crypt\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Db.rst b/id/api/Phalcon_Db.rst new file mode 100644 index 000000000000..0863e6299ce0 --- /dev/null +++ b/id/api/Phalcon_Db.rst @@ -0,0 +1,86 @@ +Abstract class **Phalcon\\Db** +============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Db and its related classes provide a simple SQL database interface for Phalcon Framework. The Phalcon\\Db is the basic class you use to connect your PHP application to an RDBMS. There is a different adapter class for each brand of RDBMS. This component is intended to lower level database operations. If you want to interact with databases using higher level of abstraction use Phalcon\\Mvc\\Model. Phalcon\\Db is an abstract class. You only can use it with a database adapter like Phalcon\\Db\\Adapter\\Pdo + +.. code-block:: php + + '192.168.0.11', + 'username' => 'sigma', + 'password' => 'secret', + 'dbname' => 'blog', + 'port' => '3306', + )); + + $result = $connection->query("SELECT * FROM robots LIMIT 5"); + $result->setFetchMode(Db::FETCH_NUM); + while ($robot = $result->fetch()) { + print_r($robot); + } + + } catch (Exception $e) { + echo $e->getMessage(), PHP_EOL; + } + + + +Constants +--------- + +*integer* **FETCH_LAZY** + +*integer* **FETCH_ASSOC** + +*integer* **FETCH_NAMED** + +*integer* **FETCH_NUM** + +*integer* **FETCH_BOTH** + +*integer* **FETCH_OBJ** + +*integer* **FETCH_BOUND** + +*integer* **FETCH_COLUMN** + +*integer* **FETCH_CLASS** + +*integer* **FETCH_INTO** + +*integer* **FETCH_FUNC** + +*integer* **FETCH_GROUP** + +*integer* **FETCH_UNIQUE** + +*integer* **FETCH_KEY_PAIR** + +*integer* **FETCH_CLASSTYPE** + +*integer* **FETCH_SERIALIZE** + +*integer* **FETCH_PROPS_LATE** + +Methods +------- + +public static **setup** (*array* $options) + +Enables/disables options in the Database component + + + diff --git a/id/api/Phalcon_Db_Adapter.rst b/id/api/Phalcon_Db_Adapter.rst new file mode 100644 index 000000000000..e22b14766f43 --- /dev/null +++ b/id/api/Phalcon_Db_Adapter.rst @@ -0,0 +1,571 @@ +Abstract class **Phalcon\\Db\\Adapter** +======================================= + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Base class for Phalcon\\Db adapters + + +Methods +------- + +public **getDialectType** () + +Name of the dialect used + + + +public **getType** () + +Type of database system the adapter is used for + + + +public **getSqlVariables** () + +Active SQL bound parameter variables + + + +public **__construct** (*array* $descriptor) + +Phalcon\\Db\\Adapter constructor + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the event manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) + +Sets the dialect used to produce the SQL + + + +public **getDialect** () + +Returns internal dialect instance + + + +public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) + +Returns the first row in a SQL query result + +.. code-block:: php + + fetchOne("SELECT * FROM robots"); + print_r($robot); + + //Getting first robot with associative indexes only + $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); + print_r($robot); + + + + +public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) + +Dumps the complete result of a query into an array + +.. code-block:: php + + fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); + foreach ($robots as $robot) { + print_r($robot); + } + + //Getting all robots that contains word "robot" withing the name + $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", + Phalcon\Db::FETCH_ASSOC, + array('name' => '%robot%') + ); + foreach($robots as $robot){ + print_r($robot); + } + + + + +public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) + +Returns the n'th field of first row in a SQL query result + +.. code-block:: php + + fetchColumn("SELECT count(*) FROM robots"); + print_r($robotsCount); + + //Getting name of last edited robot + $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); + print_r($robot); + + + + +public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) + +Inserts data into a table using custom RBDM SQL syntax + +.. code-block:: php + + insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + // Next SQL sentence is sent to the database system + INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); + + + + +public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) + +Inserts data into a table using custom RBDM SQL syntax + +.. code-block:: php + + insertAsDict( + "robots", + array( + "name" => "Astro Boy", + "year" => 1952 + ) + ); + + //Next SQL sentence is sent to the database system + INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); + + + + +public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) + +Updates data on a table using custom RBDM SQL syntax + +.. code-block:: php + + update( + "robots", + array("name"), + array("New Astro Boy"), + "id = 101" + ); + + //Next SQL sentence is sent to the database system + UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 + + //Updating existing robot with array condition and $dataTypes + $success = $connection->update( + "robots", + array("name"), + array("New Astro Boy"), + array( + 'conditions' => "id = ?", + 'bind' => array($some_unsafe_id), + 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param + ), + array(PDO::PARAM_STR) + ); + +Warning! If $whereCondition is string it not escaped. + + + +public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) + +Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax + +.. code-block:: php + + update( + "robots", + array( + "name" => "New Astro Boy" + ), + "id = 101" + ); + + //Next SQL sentence is sent to the database system + UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 + + + + +public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) + +Deletes data from a table using custom RBDM SQL syntax + +.. code-block:: php + + delete( + "robots", + "id = 101" + ); + + //Next SQL sentence is generated + DELETE FROM `robots` WHERE `id` = 101 + + + + +public *string* **getColumnList** (*array* $columnList) + +Gets a list of columns + + + +public **limit** (*unknown* $sqlQuery, *unknown* $number) + +Appends a LIMIT clause to $sqlQuery argument + +.. code-block:: php + + limit("SELECT * FROM robots", 5); + + + + +public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) + +Generates SQL checking for the existence of a schema.table + +.. code-block:: php + + tableExists("blog", "posts")); + + + + +public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +Generates SQL checking for the existence of a schema.view + +.. code-block:: php + + viewExists("active_users", "posts")); + + + + +public **forUpdate** (*unknown* $sqlQuery) + +Returns a SQL modified with a FOR UPDATE clause + + + +public **sharedLock** (*unknown* $sqlQuery) + +Returns a SQL modified with a LOCK IN SHARE MODE clause + + + +public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) + +Creates a table + + + +public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) + +Drops a table from a schema/database + + + +public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) + +Creates a view + + + +public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) + +Drops a view + + + +public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) + +Adds a column to a table + + + +public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) + +Modifies a table column based on a definition + + + +public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) + +Drops a column from a table + + + +public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +Adds an index to a table + + + +public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) + +Drop an index from a table + + + +public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +Adds a primary key to a table + + + +public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) + +Drops a table's primary key + + + +public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) + +Adds a foreign key to a table + + + +public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) + +Drops a foreign key from a table + + + +public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) + +Returns the SQL column definition from a column + + + +public **listTables** ([*unknown* $schemaName]) + +List all tables on a database + +.. code-block:: php + + listTables("blog")); + + + + +public **listViews** ([*unknown* $schemaName]) + +List all views on a database + +.. code-block:: php + + listViews("blog")); + + + + +public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) + +Lists table indexes + +.. code-block:: php + + describeIndexes('robots_parts')); + + + + +public **describeReferences** (*unknown* $table, [*unknown* $schema]) + +Lists table references + +.. code-block:: php + + describeReferences('robots_parts')); + + + + +public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) + +Gets creation options from a table + +.. code-block:: php + + tableOptions('robots')); + + + + +public **createSavepoint** (*unknown* $name) + +Creates a new savepoint + + + +public **releaseSavepoint** (*unknown* $name) + +Releases given savepoint + + + +public **rollbackSavepoint** (*unknown* $name) + +Rollbacks given savepoint + + + +public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) + +Set if nested transactions should use savepoints + + + +public **isNestedTransactionsWithSavepoints** () + +Returns if nested transactions should use savepoints + + + +public **getNestedTransactionSavepointName** () + +Returns the savepoint name to use for nested transactions + + + +public **getDefaultIdValue** () + +Returns the default identity value to be inserted in an identity column + +.. code-block:: php + + insert( + "robots", + array($connection->getDefaultIdValue(), "Astro Boy", 1952), + array("id", "name", "year") + ); + + + + +public **getDefaultValue** () + +Returns the default value to make the RBDM use the default value declared in the table definition + +.. code-block:: php + + insert( + "robots", + array("Astro Boy", $connection->getDefaultValue()), + array("name", "year") + ); + + + + +public **supportSequences** () + +Check whether the database system requires a sequence to produce auto-numeric values + + + +public **useExplicitIdValue** () + +Check whether the database system requires an explicit value for identity columns + + + +public *array* **getDescriptor** () + +Return descriptor used to connect to the active database + + + +public *string* **getConnectionId** () + +Gets the active connection unique identifier + + + +public **getSQLStatement** () + +Active SQL statement in the object + + + +public **getRealSQLStatement** () + +Active SQL statement in the object without replace bound paramters + + + +public *array* **getSQLBindTypes** () + +Active SQL statement in the object + + + diff --git a/id/api/Phalcon_Db_AdapterInterface.rst b/id/api/Phalcon_Db_AdapterInterface.rst new file mode 100644 index 000000000000..ef3ab2806bc4 --- /dev/null +++ b/id/api/Phalcon_Db_AdapterInterface.rst @@ -0,0 +1,326 @@ +Interface **Phalcon\\Db\\AdapterInterface** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*array* $descriptor) + +... + + +abstract public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $placeholders]) + +... + + +abstract public **fetchAll** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $placeholders]) + +... + + +abstract public **insert** (*unknown* $table, *array* $values, [*unknown* $fields], [*unknown* $dataTypes]) + +... + + +abstract public **update** (*unknown* $table, *unknown* $fields, *unknown* $values, [*unknown* $whereCondition], [*unknown* $dataTypes]) + +... + + +abstract public **delete** (*unknown* $table, [*unknown* $whereCondition], [*unknown* $placeholders], [*unknown* $dataTypes]) + +... + + +abstract public **getColumnList** (*unknown* $columnList) + +... + + +abstract public **limit** (*unknown* $sqlQuery, *unknown* $number) + +... + + +abstract public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) + +... + + +abstract public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +... + + +abstract public **forUpdate** (*unknown* $sqlQuery) + +... + + +abstract public **sharedLock** (*unknown* $sqlQuery) + +... + + +abstract public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) + +... + + +abstract public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) + +... + + +abstract public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) + +... + + +abstract public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) + +... + + +abstract public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) + +... + + +abstract public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) + +... + + +abstract public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) + +... + + +abstract public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +... + + +abstract public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) + +... + + +abstract public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +... + + +abstract public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) + +... + + +abstract public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) + +... + + +abstract public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) + +... + + +abstract public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) + +... + + +abstract public **listTables** ([*unknown* $schemaName]) + +... + + +abstract public **listViews** ([*unknown* $schemaName]) + +... + + +abstract public **getDescriptor** () + +... + + +abstract public **getConnectionId** () + +... + + +abstract public **getSQLStatement** () + +... + + +abstract public **getRealSQLStatement** () + +... + + +abstract public **getSQLVariables** () + +... + + +abstract public **getSQLBindTypes** () + +... + + +abstract public **getType** () + +... + + +abstract public **getDialectType** () + +... + + +abstract public **getDialect** () + +... + + +abstract public **connect** ([*unknown* $descriptor]) + +... + + +abstract public **query** (*unknown* $sqlStatement, [*unknown* $placeholders], [*unknown* $dataTypes]) + +... + + +abstract public **execute** (*unknown* $sqlStatement, [*unknown* $placeholders], [*unknown* $dataTypes]) + +... + + +abstract public **affectedRows** () + +... + + +abstract public **close** () + +... + + +abstract public **escapeIdentifier** (*unknown* $identifier) + +... + + +abstract public **escapeString** (*unknown* $str) + +... + + +abstract public **lastInsertId** ([*unknown* $sequenceName]) + +... + + +abstract public **begin** ([*unknown* $nesting]) + +... + + +abstract public **rollback** ([*unknown* $nesting]) + +... + + +abstract public **commit** ([*unknown* $nesting]) + +... + + +abstract public **isUnderTransaction** () + +... + + +abstract public **getInternalHandler** () + +... + + +abstract public **describeIndexes** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **describeReferences** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) + +... + + +abstract public **useExplicitIdValue** () + +... + + +abstract public **getDefaultIdValue** () + +... + + +abstract public **supportSequences** () + +... + + +abstract public **createSavepoint** (*unknown* $name) + +... + + +abstract public **releaseSavepoint** (*unknown* $name) + +... + + +abstract public **rollbackSavepoint** (*unknown* $name) + +... + + +abstract public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) + +... + + +abstract public **isNestedTransactionsWithSavepoints** () + +... + + +abstract public **getNestedTransactionSavepointName** () + +... + + +abstract public **describeColumns** (*unknown* $table, [*unknown* $schema]) + +... + + diff --git a/ja/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/id/api/Phalcon_Db_Adapter_Pdo.rst similarity index 87% rename from ja/api/Phalcon_Db_Adapter_Pdo_Oracle.rst rename to id/api/Phalcon_Db_Adapter_Pdo.rst index 1ed2fd825010..2dd7c1c2d8bd 100644 --- a/ja/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ b/id/api/Phalcon_Db_Adapter_Pdo.rst @@ -1,92 +1,63 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== +Abstract class **Phalcon\\Db\\Adapter\\Pdo** +============================================ -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` +*extends* abstract class :doc:`Phalcon\\Db\\Adapter ` -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface ` .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Specific functions for the Oracle database system +Phalcon\\Db\\Adapter\\Pdo is the Phalcon\\Db that internally uses PDO to connect to a database .. code-block:: php "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); + $connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array( + 'host' => '192.168.0.11', + 'username' => 'sigma', + 'password' => 'secret', + 'dbname' => 'blog', + 'port' => '3306' + )); Methods ------- -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - +public **__construct** (*array* $descriptor) - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> +Constructor for Phalcon\\Db\\Adapter\\Pdo -public **lastInsertId** ([*unknown* $sequenceName]) +public *boolean* **connect** ([*array* $descriptor]) -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement +This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection .. code-block:: php insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); + //Make a connection + $connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array( + 'host' => '192.168.0.11', + 'username' => 'sigma', + 'password' => 'secret', + 'dbname' => 'blog', + )); - //Getting the generated id - $id = $connection->lastInsertId(); - - + //Reconnect + $connection->connect(); -public **useExplicitIdValue** () -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo +public **prepare** (*unknown* $sqlStatement) Returns a PDO prepared statement to be executed with 'executePrepared' @@ -100,7 +71,7 @@ Returns a PDO prepared statement to be executed with 'executePrepared' -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo +public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) Executes a prepared statement binding. This function uses integer indexes starting from zero @@ -114,7 +85,7 @@ Executes a prepared statement binding. This function uses integer indexes starti -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo +public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows @@ -129,7 +100,7 @@ Sends SQL statements to the database server returning the success state. Use thi -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo +public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows @@ -144,7 +115,7 @@ Sends SQL statements to the database server returning the success state. Use thi -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo +public **affectedRows** () Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system @@ -158,13 +129,13 @@ Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo +public **close** () Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo +public *string* **escapeIdentifier** (*string* $identifier) Escapes a column/table/schema name @@ -178,7 +149,7 @@ Escapes a column/table/schema name -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo +public **escapeString** (*unknown* $str) Escapes a value to avoid SQL injections according to the active charset in the connection @@ -191,7 +162,7 @@ Escapes a value to avoid SQL injections according to the active charset in the c -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo +public **convertBoundParams** (*unknown* $sql, [*array* $params]) Converts bound parameters such as :name: or ?1 into PDO bind params ? @@ -204,31 +175,52 @@ Converts bound parameters such as :name: or ?1 into PDO bind params ? -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo +public *int|boolean* **lastInsertId** ([*string* $sequenceName]) + +Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement + +.. code-block:: php + + insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + //Getting the generated id + $id = $connection->lastInsertId(); + + + + +public **begin** ([*unknown* $nesting]) Starts a transaction in the connection -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo +public **rollback** ([*unknown* $nesting]) Rollbacks the active transaction in the connection -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo +public **commit** ([*unknown* $nesting]) Commits the active transaction in the connection -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo +public **getTransactionLevel** () Returns the current transaction nesting level -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo +public **isUnderTransaction** () Checks whether the connection is under a transaction @@ -242,13 +234,13 @@ Checks whether the connection is under a transaction -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo +public **getInternalHandler** () Return internal PDO handler -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo +public *array* **getErrorInfo** () Return the error info, if any @@ -725,6 +717,24 @@ Returns the savepoint name to use for nested transactions +public **getDefaultIdValue** () inherited from Phalcon\\Db\\Adapter + +Returns the default identity value to be inserted in an identity column + +.. code-block:: php + + insert( + "robots", + array($connection->getDefaultIdValue(), "Astro Boy", 1952), + array("id", "name", "year") + ); + + + + public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter Returns the default value to make the RBDM use the default value declared in the table definition @@ -743,6 +753,18 @@ Returns the default value to make the RBDM use the default value declared in the +public **supportSequences** () inherited from Phalcon\\Db\\Adapter + +Check whether the database system requires a sequence to produce auto-numeric values + + + +public **useExplicitIdValue** () inherited from Phalcon\\Db\\Adapter + +Check whether the database system requires an explicit value for identity columns + + + public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter Return descriptor used to connect to the active database diff --git a/es/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/id/api/Phalcon_Db_Adapter_Pdo_Mysql.rst similarity index 91% rename from es/api/Phalcon_Db_Adapter_Pdo_Oracle.rst rename to id/api/Phalcon_Db_Adapter_Pdo_Mysql.rst index 1ed2fd825010..12ae8e66e187 100644 --- a/es/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ b/id/api/Phalcon_Db_Adapter_Pdo_Mysql.rst @@ -1,5 +1,5 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== +Class **Phalcon\\Db\\Adapter\\Pdo\\Mysql** +========================================== *extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` @@ -8,81 +8,73 @@ Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Specific functions for the Oracle database system +Specific functions for the Mysql database system .. code-block:: php "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); + $config = array( + "host" => "192.168.0.11", + "dbname" => "blog", + "port" => 3306, + "username" => "sigma", + "password" => "secret" + ); - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); + $connection = new \Phalcon\Db\Adapter\Pdo\Mysql($config); Methods ------- -public *boolean* **connect** ([*array* $descriptor]) +public *string* **escapeIdentifier** (*string|array* $identifier) -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. +Escapes a column/table/schema name public **describeColumns** (*unknown* $table, [*unknown* $schema]) -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement +Returns an array of Phalcon\\Db\\Column objects describing a table .. code-block:: php insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); + print_r($connection->describeColumns("posts")); -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - +public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo -public **getDefaultIdValue** () +Constructor for Phalcon\\Db\\Adapter\\Pdo -Return the default identity value to insert in an identity column +public *boolean* **connect** ([*array* $descriptor]) inherited from Phalcon\\Db\\Adapter\\Pdo -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values +This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection +.. code-block:: php + '192.168.0.11', + 'username' => 'sigma', + 'password' => 'secret', + 'dbname' => 'blog', + )); + + //Reconnect + $connection->connect(); -Constructor for Phalcon\\Db\\Adapter\\Pdo @@ -164,42 +156,49 @@ Closes the active connection returning success. Phalcon automatically closes and -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo +public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo -Escapes a column/table/schema name +Escapes a value to avoid SQL injections according to the active charset in the connection .. code-block:: php escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); + $escapedStr = $connection->escapeString('some dangerous value'); -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo +public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo -Escapes a value to avoid SQL injections according to the active charset in the connection +Converts bound parameters such as :name: or ?1 into PDO bind params ? .. code-block:: php escapeString('some dangerous value'); + print_r($connection->convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo +public *int|boolean* **lastInsertId** ([*string* $sequenceName]) inherited from Phalcon\\Db\\Adapter\\Pdo -Converts bound parameters such as :name: or ?1 into PDO bind params ? +Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement .. code-block:: php convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); + //Inserting a new robot + $success = $connection->insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + //Getting the generated id + $id = $connection->lastInsertId(); @@ -725,6 +724,24 @@ Returns the savepoint name to use for nested transactions +public **getDefaultIdValue** () inherited from Phalcon\\Db\\Adapter + +Returns the default identity value to be inserted in an identity column + +.. code-block:: php + + insert( + "robots", + array($connection->getDefaultIdValue(), "Astro Boy", 1952), + array("id", "name", "year") + ); + + + + public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter Returns the default value to make the RBDM use the default value declared in the table definition @@ -743,6 +760,18 @@ Returns the default value to make the RBDM use the default value declared in the +public **supportSequences** () inherited from Phalcon\\Db\\Adapter + +Check whether the database system requires a sequence to produce auto-numeric values + + + +public **useExplicitIdValue** () inherited from Phalcon\\Db\\Adapter + +Check whether the database system requires an explicit value for identity columns + + + public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter Return descriptor used to connect to the active database diff --git a/en/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/id/api/Phalcon_Db_Adapter_Pdo_Postgresql.rst similarity index 94% rename from en/api/Phalcon_Db_Adapter_Pdo_Oracle.rst rename to id/api/Phalcon_Db_Adapter_Pdo_Postgresql.rst index 1ed2fd825010..5dd4b3c184e0 100644 --- a/en/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ b/id/api/Phalcon_Db_Adapter_Pdo_Postgresql.rst @@ -1,5 +1,5 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== +Class **Phalcon\\Db\\Adapter\\Pdo\\Postgresql** +=============================================== *extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` @@ -8,21 +8,22 @@ Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Specific functions for the Oracle database system +Specific functions for the Postgresql database system .. code-block:: php "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" + "host" => "192.168.0.11", + "dbname" => "blog", + "username" => "postgres", + "password" => "" ); - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); + $connection = new \Phalcon\Db\Adapter\Pdo\Postgresql($config); @@ -37,28 +38,26 @@ This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Ca public **describeColumns** (*unknown* $table, [*unknown* $schema]) -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> +Returns an array of Phalcon\\Db\\Column objects describing a table +.. code-block:: php + describeColumns("posts")); -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement -.. code-block:: php - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); +public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) + +Creates a table + + + +public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) +Modifies a table column based on a definition @@ -70,7 +69,19 @@ Check whether the database system requires an explicit value for identity column public **getDefaultIdValue** () -Return the default identity value to insert in an identity column +Returns the default identity value to be inserted in an identity column + +.. code-block:: php + + insert( + "robots", + array($connection->getDefaultIdValue(), "Astro Boy", 1952), + array("id", "name", "year") + ); + @@ -204,6 +215,27 @@ Converts bound parameters such as :name: or ?1 into PDO bind params ? +public *int|boolean* **lastInsertId** ([*string* $sequenceName]) inherited from Phalcon\\Db\\Adapter\\Pdo + +Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement + +.. code-block:: php + + insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + //Getting the generated id + $id = $connection->lastInsertId(); + + + + public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo Starts a transaction in the connection @@ -540,12 +572,6 @@ Returns a SQL modified with a LOCK IN SHARE MODE clause -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter Drops a table from a schema/database @@ -570,12 +596,6 @@ Adds a column to a table -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter Drops a column from a table diff --git a/fr/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/id/api/Phalcon_Db_Adapter_Pdo_Sqlite.rst similarity index 93% rename from fr/api/Phalcon_Db_Adapter_Pdo_Oracle.rst rename to id/api/Phalcon_Db_Adapter_Pdo_Sqlite.rst index 1ed2fd825010..47c230f006eb 100644 --- a/fr/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ b/id/api/Phalcon_Db_Adapter_Pdo_Sqlite.rst @@ -1,4 +1,4 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** +Class **Phalcon\\Db\\Adapter\\Pdo\\Sqlite** =========================================== *extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` @@ -8,21 +8,19 @@ Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Specific functions for the Oracle database system +Specific functions for the Sqlite database system .. code-block:: php "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" + "dbname" => "/tmp/test.sqlite" ); - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); + $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); @@ -37,30 +35,28 @@ This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Ca public **describeColumns** (*unknown* $table, [*unknown* $schema]) -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> +Returns an array of Phalcon\\Db\\Column objects describing a table +.. code-block:: php + describeColumns("posts")); -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement -.. code-block:: php - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); +public :doc:`Phalcon\\Db\\IndexInterface ` [] **describeIndexes** (*string* $table, [*string* $schema]) + +Lists table indexes +public :doc:`Phalcon\\Db\\ReferenceInterface ` [] **describeReferences** (*string* $table, [*string* $schema]) + +Lists table references + + public **useExplicitIdValue** () @@ -68,15 +64,21 @@ Check whether the database system requires an explicit value for identity column -public **getDefaultIdValue** () +public **getDefaultValue** () -Return the default identity value to insert in an identity column +Returns the default value to make the RBDM use the default value declared in the table definition +.. code-block:: php + insert( + "robots", + array("Astro Boy", $connection->getDefaultValue()), + array("name", "year") + ); -Check whether the database system requires a sequence to produce auto-numeric values @@ -204,6 +206,27 @@ Converts bound parameters such as :name: or ?1 into PDO bind params ? +public *int|boolean* **lastInsertId** ([*string* $sequenceName]) inherited from Phalcon\\Db\\Adapter\\Pdo + +Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement + +.. code-block:: php + + insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + //Getting the generated id + $id = $connection->lastInsertId(); + + + + public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo Starts a transaction in the connection @@ -650,32 +673,6 @@ List all views on a database -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter Gets creation options from a table @@ -725,24 +722,30 @@ Returns the savepoint name to use for nested transactions -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter +public **getDefaultIdValue** () inherited from Phalcon\\Db\\Adapter -Returns the default value to make the RBDM use the default value declared in the table definition +Returns the default identity value to be inserted in an identity column .. code-block:: php insert( "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") + array($connection->getDefaultIdValue(), "Astro Boy", 1952), + array("id", "name", "year") ); +public **supportSequences** () inherited from Phalcon\\Db\\Adapter + +Check whether the database system requires a sequence to produce auto-numeric values + + + public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter Return descriptor used to connect to the active database diff --git a/id/api/Phalcon_Db_Column.rst b/id/api/Phalcon_Db_Column.rst new file mode 100644 index 000000000000..01e7b63612ab --- /dev/null +++ b/id/api/Phalcon_Db_Column.rst @@ -0,0 +1,203 @@ +Class **Phalcon\\Db\\Column** +============================= + +*implements* :doc:`Phalcon\\Db\\ColumnInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to define columns to be used on create or alter table operations + +.. code-block:: php + + Column::TYPE_INTEGER, + "size" => 10, + "unsigned" => true, + "notNull" => true, + "autoIncrement" => true, + "first" => true + )); + + //add column to existing table + $connection->addColumn("robots", null, $column); + + + +Constants +--------- + +*integer* **TYPE_INTEGER** + +*integer* **TYPE_DATE** + +*integer* **TYPE_VARCHAR** + +*integer* **TYPE_DECIMAL** + +*integer* **TYPE_DATETIME** + +*integer* **TYPE_CHAR** + +*integer* **TYPE_TEXT** + +*integer* **TYPE_FLOAT** + +*integer* **TYPE_BOOLEAN** + +*integer* **TYPE_DOUBLE** + +*integer* **TYPE_TINYBLOB** + +*integer* **TYPE_BLOB** + +*integer* **TYPE_MEDIUMBLOB** + +*integer* **TYPE_LONGBLOB** + +*integer* **TYPE_BIGINTEGER** + +*integer* **TYPE_JSON** + +*integer* **TYPE_JSONB** + +*integer* **TYPE_TIMESTAMP** + +*integer* **BIND_PARAM_NULL** + +*integer* **BIND_PARAM_INT** + +*integer* **BIND_PARAM_STR** + +*integer* **BIND_PARAM_BLOB** + +*integer* **BIND_PARAM_BOOL** + +*integer* **BIND_PARAM_DECIMAL** + +*integer* **BIND_SKIP** + +Methods +------- + +public **getName** () + +Column's name + + + +public **getSchemaName** () + +Schema which table related is + + + +public **getType** () + +Column data type + + + +public **getTypeReference** () + +Column data type reference + + + +public **getTypeValues** () + +Column data type values + + + +public **getSize** () + +Integer column size + + + +public **getScale** () + +Integer column number scale + + + +public **getDefault** () + +Default column value + + + +public **__construct** (*unknown* $name, *array* $definition) + +Phalcon\\Db\\Column constructor + + + +public **isUnsigned** () + +Returns true if number column is unsigned + + + +public **isNotNull** () + +Not null + + + +public **isPrimary** () + +Column is part of the primary key? + + + +public **isAutoIncrement** () + +Auto-Increment + + + +public **isNumeric** () + +Check whether column have an numeric type + + + +public **isFirst** () + +Check whether column have first position in table + + + +public *string* **getAfterPosition** () + +Check whether field absolute to position in table + + + +public **getBindType** () + +Returns the type of bind handling + + + +public static **__set_state** (*array* $data) + +Restores the internal state of a Phalcon\\Db\\Column object + + + +public **hasDefault** () + +Check whether column has default value + + + diff --git a/id/api/Phalcon_Db_ColumnInterface.rst b/id/api/Phalcon_Db_ColumnInterface.rst new file mode 100644 index 000000000000..9a4e0fad0338 --- /dev/null +++ b/id/api/Phalcon_Db_ColumnInterface.rst @@ -0,0 +1,106 @@ +Interface **Phalcon\\Db\\ColumnInterface** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $columnName, *array* $definition) + +... + + +abstract public **getSchemaName** () + +... + + +abstract public **getName** () + +... + + +abstract public **getType** () + +... + + +abstract public **getTypeReference** () + +... + + +abstract public **getTypeValues** () + +... + + +abstract public **getSize** () + +... + + +abstract public **getScale** () + +... + + +abstract public **isUnsigned** () + +... + + +abstract public **isNotNull** () + +... + + +abstract public **isPrimary** () + +... + + +abstract public **isAutoIncrement** () + +... + + +abstract public **isNumeric** () + +... + + +abstract public **isFirst** () + +... + + +abstract public **getAfterPosition** () + +... + + +abstract public **getBindType** () + +... + + +abstract public **getDefault** () + +... + + +abstract public **hasDefault** () + +... + + +abstract public static **__set_state** (*array* $data) + +... + + diff --git a/id/api/Phalcon_Db_Dialect.rst b/id/api/Phalcon_Db_Dialect.rst new file mode 100644 index 000000000000..934cadd1f704 --- /dev/null +++ b/id/api/Phalcon_Db_Dialect.rst @@ -0,0 +1,377 @@ +Abstract class **Phalcon\\Db\\Dialect** +======================================= + +*implements* :doc:`Phalcon\\Db\\DialectInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is the base class to each database dialect. This implements common methods to transform intermediate code into its RDBMS related syntax + + +Methods +------- + +public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) + +Registers custom SQL functions + + + +public **getCustomFunctions** () + +Returns registered functions + + + +final public **escape** (*unknown* $str, [*unknown* $escapeChar]) + +Escape identifiers + + + +public **limit** (*unknown* $sqlQuery, *unknown* $number) + +Generates the SQL for LIMIT clause + +.. code-block:: php + + limit('SELECT * FROM robots', 10); + echo $sql; // SELECT * FROM robots LIMIT 10 + + $sql = $dialect->limit('SELECT * FROM robots', [10, 50]); + echo $sql; // SELECT * FROM robots LIMIT 10 OFFSET 50 + + + + +public **forUpdate** (*unknown* $sqlQuery) + +Returns a SQL modified with a FOR UPDATE clause + +.. code-block:: php + + forUpdate('SELECT * FROM robots'); + echo $sql; // SELECT * FROM robots FOR UPDATE + + + + +public **sharedLock** (*unknown* $sqlQuery) + +Returns a SQL modified with a LOCK IN SHARE MODE clause + +.. code-block:: php + + sharedLock('SELECT * FROM robots'); + echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE + + + + +final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Gets a list of columns with escaped identifiers + +.. code-block:: php + + getColumnList(array('column1', 'column')); + + + + +final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve Column expressions + + + +public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Transforms an intermediate representation for a expression into a database system valid expression + + + +final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) + +Transform an intermediate representation of a schema/table into a database system valid expression + + + +public **select** (*array* $definition) + +Builds a SELECT statement + + + +public **supportsSavepoints** () + +Checks whether the platform supports savepoints + + + +public **supportsReleaseSavepoints** () + +Checks whether the platform supports releasing savepoints. + + + +public **createSavepoint** (*unknown* $name) + +Generate SQL to create a new savepoint + + + +public **releaseSavepoint** (*unknown* $name) + +Generate SQL to release a savepoint + + + +public **rollbackSavepoint** (*unknown* $name) + +Generate SQL to rollback a savepoint + + + +final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve Column expressions + + + +final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve object expressions + + + +final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) + +Resolve qualified expressions + + + +final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve binary operations expressions + + + +final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve unary operations expressions + + + +final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) + +Resolve function calls + + + +final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve Lists + + + +final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) + +Resolve * + + + +final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve CAST of values + + + +final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve CONVERT of values encodings + + + +final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve CASE expressions + + + +final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) + +Resolve a FROM clause + + + +final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a JOINs clause + + + +final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a WHERE clause + + + +final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a GROUP BY clause + + + +final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a HAVING clause + + + +final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a ORDER BY clause + + + +final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) + +Resolve a LIMIT clause + + + +protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) + +Prepares column for this RDBMS + + + +protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) + +Prepares table for this RDBMS + + + +protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) + +Prepares qualified for this RDBMS + + + +abstract public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropTable** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **describeColumns** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **describeIndexes** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\DialectInterface + +... + + +abstract public **tableOptions** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\DialectInterface + +... + + diff --git a/id/api/Phalcon_Db_DialectInterface.rst b/id/api/Phalcon_Db_DialectInterface.rst new file mode 100644 index 000000000000..8a173b19f7dd --- /dev/null +++ b/id/api/Phalcon_Db_DialectInterface.rst @@ -0,0 +1,166 @@ +Interface **Phalcon\\Db\\DialectInterface** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **limit** (*unknown* $sqlQuery, *unknown* $number) + +... + + +abstract public **forUpdate** (*unknown* $sqlQuery) + +... + + +abstract public **sharedLock** (*unknown* $sqlQuery) + +... + + +abstract public **select** (*array* $definition) + +... + + +abstract public **getColumnList** (*array* $columnList) + +... + + +abstract public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) + +... + + +abstract public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) + +... + + +abstract public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) + +... + + +abstract public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) + +... + + +abstract public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +... + + +abstract public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) + +... + + +abstract public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) + +... + + +abstract public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) + +... + + +abstract public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) + +... + + +abstract public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) + +... + + +abstract public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) + +... + + +abstract public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) + +... + + +abstract public **dropTable** (*unknown* $tableName, *unknown* $schemaName) + +... + + +abstract public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) + +... + + +abstract public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) + +... + + +abstract public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +... + + +abstract public **describeColumns** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **listTables** ([*unknown* $schemaName]) + +... + + +abstract public **describeIndexes** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **describeReferences** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **tableOptions** (*unknown* $table, [*unknown* $schema]) + +... + + +abstract public **supportsSavepoints** () + +... + + +abstract public **supportsReleaseSavepoints** () + +... + + +abstract public **createSavepoint** (*unknown* $name) + +... + + +abstract public **releaseSavepoint** (*unknown* $name) + +... + + +abstract public **rollbackSavepoint** (*unknown* $name) + +... + + diff --git a/en/api/Phalcon_Db_Dialect_Oracle.rst b/id/api/Phalcon_Db_Dialect_MySQL.rst similarity index 88% rename from en/api/Phalcon_Db_Dialect_Oracle.rst rename to id/api/Phalcon_Db_Dialect_MySQL.rst index 48db9b95213d..5efb59320387 100644 --- a/en/api/Phalcon_Db_Dialect_Oracle.rst +++ b/id/api/Phalcon_Db_Dialect_MySQL.rst @@ -1,5 +1,5 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== +Class **Phalcon\\Db\\Dialect\\MySQL** +===================================== *extends* abstract class :doc:`Phalcon\\Db\\Dialect ` @@ -8,23 +8,17 @@ Class **Phalcon\\Db\\Dialect\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Generates database specific SQL for the Oracle RDBMS +Phalcon\\Db\\Dialect\\Mysql Generates database specific SQL for the MySQL RDBMS Methods ------- -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) -Gets the column name in Oracle +Gets the column name in MySQL @@ -54,7 +48,7 @@ Generates SQL to add an index to a table public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) -/** /** Generates SQL to delete an index from a table +Generates SQL to delete an index from a table @@ -84,11 +78,11 @@ Generates SQL to delete a foreign key from a table public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) -Generates SQL to create a table in Oracle +Generates SQL to create a table -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) +public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) Generates SQL to drop a table @@ -106,18 +100,6 @@ Generates SQL to drop a view -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) Generates SQL checking for the existence of a schema.table @@ -132,6 +114,12 @@ Generates SQL checking for the existence of a schema.table +public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +Generates SQL checking for the existence of a schema.view + + + public **describeColumns** (*unknown* $table, [*unknown* $schema]) Generates SQL describing a table @@ -153,11 +141,17 @@ List all tables in database listTables("blog")) + print_r($dialect->listTables("blog")) +public **listViews** ([*unknown* $schemaName]) + +Generates the SQL to list all views of a schema or user + + + public **describeIndexes** (*unknown* $table, [*unknown* $schema]) Generates SQL to query indexes on a table @@ -176,39 +170,44 @@ Generates the SQL to describe the table creation options -public **supportsSavepoints** () +protected **_getTableOptions** (*array* $definition) -Checks whether the platform supports savepoints +Generates SQL to add the table creation options -public **supportsReleaseSavepoints** () +public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect -Checks whether the platform supports releasing savepoints. +Registers custom SQL functions -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) +public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect -Prepares table for this RDBMS +Returns registered functions -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect +final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect -Registers custom SQL functions +Escape identifiers -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect +public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Dialect -Returns registered functions +Generates the SQL for LIMIT clause +.. code-block:: php + limit('SELECT * FROM robots', 10); + echo $sql; // SELECT * FROM robots LIMIT 10 + + $sql = $dialect->limit('SELECT * FROM robots', [10, 50]); + echo $sql; // SELECT * FROM robots LIMIT 10 OFFSET 50 -Escape identifiers @@ -277,6 +276,18 @@ Builds a SELECT statement +public **supportsSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports savepoints + + + +public **supportsReleaseSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports releasing savepoints. + + + public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect Generate SQL to create a new savepoint @@ -409,6 +420,12 @@ Prepares column for this RDBMS +protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect + +Prepares table for this RDBMS + + + protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect Prepares qualified for this RDBMS diff --git a/ja/api/Phalcon_Db_Dialect_Oracle.rst b/id/api/Phalcon_Db_Dialect_Postgresql.rst similarity index 88% rename from ja/api/Phalcon_Db_Dialect_Oracle.rst rename to id/api/Phalcon_Db_Dialect_Postgresql.rst index 48db9b95213d..39b12758582b 100644 --- a/ja/api/Phalcon_Db_Dialect_Oracle.rst +++ b/id/api/Phalcon_Db_Dialect_Postgresql.rst @@ -1,5 +1,5 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== +Class **Phalcon\\Db\\Dialect\\Postgresql** +========================================== *extends* abstract class :doc:`Phalcon\\Db\\Dialect ` @@ -8,23 +8,17 @@ Class **Phalcon\\Db\\Dialect\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Generates database specific SQL for the Oracle RDBMS +Generates database specific SQL for the PostgreSQL RDBMS Methods ------- -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) -Gets the column name in Oracle +Gets the column name in PostgreSQL @@ -54,7 +48,7 @@ Generates SQL to add an index to a table public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) -/** /** Generates SQL to delete an index from a table +Generates SQL to delete an index from a table @@ -84,13 +78,13 @@ Generates SQL to delete a foreign key from a table public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) -Generates SQL to create a table in Oracle +Generates SQL to create a table -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) +public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) -Generates SQL to drop a table +Generates SQL to drop a view @@ -106,18 +100,6 @@ Generates SQL to drop a view -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) Generates SQL checking for the existence of a schema.table @@ -132,6 +114,12 @@ Generates SQL checking for the existence of a schema.table +public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +Generates SQL checking for the existence of a schema.view + + + public **describeColumns** (*unknown* $table, [*unknown* $schema]) Generates SQL describing a table @@ -153,10 +141,16 @@ List all tables in database listTables("blog")) + print_r($dialect->listTables("blog")) + +public *string* **listViews** ([*string* $schemaName]) + +Generates the SQL to list all views of a schema or user + + public **describeIndexes** (*unknown* $table, [*unknown* $schema]) @@ -176,39 +170,43 @@ Generates the SQL to describe the table creation options -public **supportsSavepoints** () - -Checks whether the platform supports savepoints +protected **_getTableOptions** (*array* $definition) +... -public **supportsReleaseSavepoints** () +public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect -Checks whether the platform supports releasing savepoints. +Registers custom SQL functions -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) +public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect -Prepares table for this RDBMS +Returns registered functions -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect +final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect -Registers custom SQL functions +Escape identifiers -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect +public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Dialect -Returns registered functions +Generates the SQL for LIMIT clause +.. code-block:: php + limit('SELECT * FROM robots', 10); + echo $sql; // SELECT * FROM robots LIMIT 10 + + $sql = $dialect->limit('SELECT * FROM robots', [10, 50]); + echo $sql; // SELECT * FROM robots LIMIT 10 OFFSET 50 -Escape identifiers @@ -277,6 +275,18 @@ Builds a SELECT statement +public **supportsSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports savepoints + + + +public **supportsReleaseSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports releasing savepoints. + + + public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect Generate SQL to create a new savepoint @@ -409,6 +419,12 @@ Prepares column for this RDBMS +protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect + +Prepares table for this RDBMS + + + protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect Prepares qualified for this RDBMS diff --git a/fr/api/Phalcon_Db_Dialect_Oracle.rst b/id/api/Phalcon_Db_Dialect_Sqlite.rst similarity index 89% rename from fr/api/Phalcon_Db_Dialect_Oracle.rst rename to id/api/Phalcon_Db_Dialect_Sqlite.rst index 48db9b95213d..f3ac3062fea8 100644 --- a/fr/api/Phalcon_Db_Dialect_Oracle.rst +++ b/id/api/Phalcon_Db_Dialect_Sqlite.rst @@ -1,4 +1,4 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** +Class **Phalcon\\Db\\Dialect\\Sqlite** ====================================== *extends* abstract class :doc:`Phalcon\\Db\\Dialect ` @@ -8,23 +8,17 @@ Class **Phalcon\\Db\\Dialect\\Oracle** .. role:: raw-html(raw) :format: html -:raw-html:`Source on GitHub` +:raw-html:`Source on GitHub` -Generates database specific SQL for the Oracle RDBMS +Generates database specific SQL for the Sqlite RDBMS Methods ------- -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) -Gets the column name in Oracle +Gets the column name in SQLite @@ -54,7 +48,7 @@ Generates SQL to add an index to a table public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) -/** /** Generates SQL to delete an index from a table +Generates SQL to delete an index from a table @@ -84,11 +78,11 @@ Generates SQL to delete a foreign key from a table public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) -Generates SQL to create a table in Oracle +Generates SQL to create a table -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) +public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) Generates SQL to drop a table @@ -106,18 +100,6 @@ Generates SQL to drop a view -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) Generates SQL checking for the existence of a schema.table @@ -132,6 +114,12 @@ Generates SQL checking for the existence of a schema.table +public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) + +Generates SQL checking for the existence of a schema.view + + + public **describeColumns** (*unknown* $table, [*unknown* $schema]) Generates SQL describing a table @@ -153,44 +141,38 @@ List all tables in database listTables("blog")) + print_r($dialect->listTables("blog")) -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) +public **listViews** ([*unknown* $schemaName]) -Generates SQL to query foreign keys on a table +Generates the SQL to list all views of a schema or user -public **tableOptions** (*unknown* $table, [*unknown* $schema]) +public **describeIndexes** (*unknown* $table, [*unknown* $schema]) -Generates the SQL to describe the table creation options +Generates SQL to query indexes on a table -public **supportsSavepoints** () +public **describeIndex** (*unknown* $index) -Checks whether the platform supports savepoints +Generates SQL to query indexes detail on a table -public **supportsReleaseSavepoints** () +public **describeReferences** (*unknown* $table, [*unknown* $schema]) -Checks whether the platform supports releasing savepoints. +Generates SQL to query foreign keys on a table -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) +public **tableOptions** (*unknown* $table, [*unknown* $schema]) -Prepares table for this RDBMS +Generates the SQL to describe the table creation options @@ -212,6 +194,23 @@ Escape identifiers +public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Dialect + +Generates the SQL for LIMIT clause + +.. code-block:: php + + limit('SELECT * FROM robots', 10); + echo $sql; // SELECT * FROM robots LIMIT 10 + + $sql = $dialect->limit('SELECT * FROM robots', [10, 50]); + echo $sql; // SELECT * FROM robots LIMIT 10 OFFSET 50 + + + + public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect Returns a SQL modified with a FOR UPDATE clause @@ -277,6 +276,18 @@ Builds a SELECT statement +public **supportsSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports savepoints + + + +public **supportsReleaseSavepoints** () inherited from Phalcon\\Db\\Dialect + +Checks whether the platform supports releasing savepoints. + + + public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect Generate SQL to create a new savepoint @@ -409,6 +420,12 @@ Prepares column for this RDBMS +protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect + +Prepares table for this RDBMS + + + protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect Prepares qualified for this RDBMS diff --git a/id/api/Phalcon_Db_Exception.rst b/id/api/Phalcon_Db_Exception.rst new file mode 100644 index 000000000000..51e1fc9944ee --- /dev/null +++ b/id/api/Phalcon_Db_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Db\\Exception** +================================ + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Db_Index.rst b/id/api/Phalcon_Db_Index.rst new file mode 100644 index 000000000000..be81b1052fc2 --- /dev/null +++ b/id/api/Phalcon_Db_Index.rst @@ -0,0 +1,46 @@ +Class **Phalcon\\Db\\Index** +============================ + +*implements* :doc:`Phalcon\\Db\\IndexInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to define indexes to be used on tables. Indexes are a common way to enhance database performance. An index allows the database server to find and retrieve specific rows much faster than it could do without an index + + +Methods +------- + +public **getName** () + +Index name + + + +public **getColumns** () + +Index columns + + + +public **getType** () + +Index type + + + +public **__construct** (*unknown* $name, *array* $columns, [*unknown* $type]) + +Phalcon\\Db\\Index constructor + + + +public static **__set_state** (*array* $data) + +Restore a Phalcon\\Db\\Index object from export + + + diff --git a/id/api/Phalcon_Db_IndexInterface.rst b/id/api/Phalcon_Db_IndexInterface.rst new file mode 100644 index 000000000000..81c2980f5468 --- /dev/null +++ b/id/api/Phalcon_Db_IndexInterface.rst @@ -0,0 +1,36 @@ +Interface **Phalcon\\Db\\IndexInterface** +========================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $indexName, *array* $columns, [*unknown* $type]) + +... + + +abstract public **getName** () + +... + + +abstract public **getColumns** () + +... + + +abstract public **getType** () + +... + + +abstract public static **__set_state** (*array* $data) + +... + + diff --git a/id/api/Phalcon_Db_Profiler.rst b/id/api/Phalcon_Db_Profiler.rst new file mode 100644 index 000000000000..c8fa6d29a021 --- /dev/null +++ b/id/api/Phalcon_Db_Profiler.rst @@ -0,0 +1,81 @@ +Class **Phalcon\\Db\\Profiler** +=============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Instances of Phalcon\\Db can generate execution profiles on SQL statements sent to the relational database. Profiled information includes execution time in miliseconds. This helps you to identify bottlenecks in your applications. + +.. code-block:: php + + setProfiler($profiler); + + $sql = "SELECT buyer_name, quantity, product_name + FROM buyers LEFT JOIN products ON + buyers.pid=products.id"; + + //Execute a SQL statement + $connection->query($sql); + + //Get the last profile in the profiler + $profile = $profiler->getLastProfile(); + + echo "SQL Statement: ", $profile->getSQLStatement(), "\n"; + echo "Start Time: ", $profile->getInitialTime(), "\n"; + echo "Final Time: ", $profile->getFinalTime(), "\n"; + echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "\n"; + + + +Methods +------- + +public :doc:`Phalcon\\Db\\Profiler ` **startProfile** (*string* $sqlStatement, [*unknown* $sqlVariables], [*unknown* $sqlBindTypes]) + +Starts the profile of a SQL sentence + + + +public **stopProfile** () + +Stops the active profile + + + +public **getNumberTotalStatements** () + +Returns the total number of SQL statements processed + + + +public **getTotalElapsedSeconds** () + +Returns the total time in seconds spent by the profiles + + + +public **getProfiles** () + +Returns all the processed profiles + + + +public **reset** () + +Resets the profiler, cleaning up all the profiles + + + +public **getLastProfile** () + +Returns the last profile executed in the profiler + + + diff --git a/id/api/Phalcon_Db_Profiler_Item.rst b/id/api/Phalcon_Db_Profiler_Item.rst new file mode 100644 index 000000000000..7a38fa1d6f90 --- /dev/null +++ b/id/api/Phalcon_Db_Profiler_Item.rst @@ -0,0 +1,80 @@ +Class **Phalcon\\Db\\Profiler\\Item** +===================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class identifies each profile in a Phalcon\\Db\\Profiler + + +Methods +------- + +public **setSqlStatement** (*unknown* $sqlStatement) + +SQL statement related to the profile + + + +public **getSqlStatement** () + +SQL statement related to the profile + + + +public **setSqlVariables** (*unknown* $sqlVariables) + +SQL variables related to the profile + + + +public **getSqlVariables** () + +SQL variables related to the profile + + + +public **setSqlBindTypes** (*unknown* $sqlBindTypes) + +SQL bind types related to the profile + + + +public **getSqlBindTypes** () + +SQL bind types related to the profile + + + +public **setInitialTime** (*unknown* $initialTime) + +Timestamp when the profile started + + + +public **getInitialTime** () + +Timestamp when the profile started + + + +public **setFinalTime** (*unknown* $finalTime) + +Timestamp when the profile ended + + + +public **getFinalTime** () + +Timestamp when the profile ended + + + +public **getTotalElapsedSeconds** () + +Returns the total time in seconds spent by the profile + + + diff --git a/id/api/Phalcon_Db_RawValue.rst b/id/api/Phalcon_Db_RawValue.rst new file mode 100644 index 000000000000..e8b04a2399c7 --- /dev/null +++ b/id/api/Phalcon_Db_RawValue.rst @@ -0,0 +1,42 @@ +Class **Phalcon\\Db\\RawValue** +=============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class allows to insert/update raw data without quoting or formating. The next example shows how to use the MySQL now() function as a field value. + +.. code-block:: php + + email = 'andres@phalconphp.com'; + $subscriber->createdAt = new \Phalcon\Db\RawValue('now()'); + $subscriber->save(); + + + +Methods +------- + +public **getValue** () + +Raw value without quoting or formating + + + +public **__toString** () + +Raw value without quoting or formating + + + +public **__construct** (*unknown* $value) + +Phalcon\\Db\\RawValue constructor + + + diff --git a/id/api/Phalcon_Db_Reference.rst b/id/api/Phalcon_Db_Reference.rst new file mode 100644 index 000000000000..956aa397818f --- /dev/null +++ b/id/api/Phalcon_Db_Reference.rst @@ -0,0 +1,86 @@ +Class **Phalcon\\Db\\Reference** +================================ + +*implements* :doc:`Phalcon\\Db\\ReferenceInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to define reference constraints on tables + +.. code-block:: php + + "invoicing", + 'referencedTable' => "products", + 'columns' => array("product_type", "product_code"), + 'referencedColumns' => array("type", "code") + )); + + + +Methods +------- + +public **getName** () + +Constraint name + + + +public **getSchemaName** () + +... + + +public **getReferencedSchema** () + +... + + +public **getReferencedTable** () + +Referenced Table + + + +public **getColumns** () + +Local reference columns + + + +public **getReferencedColumns** () + +Referenced Columns + + + +public **getOnDelete** () + +ON DELETE + + + +public **getOnUpdate** () + +ON UPDATE + + + +public **__construct** (*unknown* $name, *array* $definition) + +Phalcon\\Db\\Reference constructor + + + +public static **__set_state** (*array* $data) + +Restore a Phalcon\\Db\\Reference object from export + + + diff --git a/id/api/Phalcon_Db_ReferenceInterface.rst b/id/api/Phalcon_Db_ReferenceInterface.rst new file mode 100644 index 000000000000..0a3d90bb85c6 --- /dev/null +++ b/id/api/Phalcon_Db_ReferenceInterface.rst @@ -0,0 +1,61 @@ +Interface **Phalcon\\Db\\ReferenceInterface** +============================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $referenceName, *array* $definition) + +... + + +abstract public **getName** () + +... + + +abstract public **getSchemaName** () + +... + + +abstract public **getReferencedSchema** () + +... + + +abstract public **getColumns** () + +... + + +abstract public **getReferencedTable** () + +... + + +abstract public **getReferencedColumns** () + +... + + +abstract public **getOnDelete** () + +... + + +abstract public **getOnUpdate** () + +... + + +abstract public static **__set_state** (*array* $data) + +... + + diff --git a/id/api/Phalcon_Db_ResultInterface.rst b/id/api/Phalcon_Db_ResultInterface.rst new file mode 100644 index 000000000000..63cf5485a60b --- /dev/null +++ b/id/api/Phalcon_Db_ResultInterface.rst @@ -0,0 +1,56 @@ +Interface **Phalcon\\Db\\ResultInterface** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (:doc:`Phalcon\\Db\\AdapterInterface ` $connection, *PDOStatement* $result, [*unknown* $sqlStatement], [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **execute** () + +... + + +abstract public **fetch** () + +... + + +abstract public **fetchArray** () + +... + + +abstract public **fetchAll** () + +... + + +abstract public **numRows** () + +... + + +abstract public **dataSeek** (*unknown* $number) + +... + + +abstract public **setFetchMode** (*unknown* $fetchMode) + +... + + +abstract public **getInternalResult** () + +... + + diff --git a/id/api/Phalcon_Db_Result_Pdo.rst b/id/api/Phalcon_Db_Result_Pdo.rst new file mode 100644 index 000000000000..7d57e1f075f7 --- /dev/null +++ b/id/api/Phalcon_Db_Result_Pdo.rst @@ -0,0 +1,145 @@ +Class **Phalcon\\Db\\Result\\Pdo** +================================== + +*implements* :doc:`Phalcon\\Db\\ResultInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Encapsulates the resultset internals + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + $result->setFetchMode(Phalcon\Db::FETCH_NUM); + while ($robot = $result->fetchArray()) { + print_r($robot); + } + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Db\\AdapterInterface ` $connection, *\PDOStatement* $result, [*string* $sqlStatement], [*array* $bindParams], [*array* $bindTypes]) + +Phalcon\\Db\\Result\\Pdo constructor + + + +public **execute** () + +Allows to execute the statement again. Some database systems don't support scrollable cursors, So, as cursors are forward only, we need to execute the cursor again to fetch rows from the begining + + + +public **fetch** ([*unknown* $fetchStyle], [*unknown* $cursorOrientation], [*unknown* $cursorOffset]) + +Fetches an array/object of strings that corresponds to the fetched row, or FALSE if there are no more rows. This method is affected by the active fetch flag set using Phalcon\\Db\\Result\\Pdo::setFetchMode + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + $result->setFetchMode(Phalcon\Db::FETCH_OBJ); + while ($robot = $result->fetch()) { + echo $robot->name; + } + + + + +public **fetchArray** () + +Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows. This method is affected by the active fetch flag set using Phalcon\\Db\\Result\\Pdo::setFetchMode + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + $result->setFetchMode(Phalcon\Db::FETCH_NUM); + while ($robot = result->fetchArray()) { + print_r($robot); + } + + + + +public **fetchAll** ([*unknown* $fetchStyle], [*unknown* $fetchArgument], [*unknown* $ctorArgs]) + +Returns an array of arrays containing all the records in the result This method is affected by the active fetch flag set using Phalcon\\Db\\Result\\Pdo::setFetchMode + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + $robots = $result->fetchAll(); + + + + +public **numRows** () + +Gets number of rows returned by a resultset + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + echo 'There are ', $result->numRows(), ' rows in the resultset'; + + + + +public **dataSeek** (*unknown* $number) + +Moves internal resultset cursor to another position letting us to fetch a certain row + +.. code-block:: php + + query("SELECT * FROM robots ORDER BY name"); + $result->dataSeek(2); // Move to third row on result + $row = $result->fetch(); // Fetch third row + + + + +public **setFetchMode** (*unknown* $fetchMode, [*unknown* $colNoOrClassNameOrObject], [*unknown* $ctorargs]) + +Changes the fetching mode affecting Phalcon\\Db\\Result\\Pdo::fetch() + +.. code-block:: php + + setFetchMode(\Phalcon\Db::FETCH_NUM); + + //Return associative array without integer indexes + $result->setFetchMode(\Phalcon\Db::FETCH_ASSOC); + + //Return associative array together with integer indexes + $result->setFetchMode(\Phalcon\Db::FETCH_BOTH); + + //Return an object + $result->setFetchMode(\Phalcon\Db::FETCH_OBJ); + + + + +public **getInternalResult** () + +Gets the internal PDO result object + + + diff --git a/id/api/Phalcon_Debug.rst b/id/api/Phalcon_Debug.rst new file mode 100644 index 000000000000..303386b31a95 --- /dev/null +++ b/id/api/Phalcon_Debug.rst @@ -0,0 +1,134 @@ +Class **Phalcon\\Debug** +======================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Provides debug capabilities to Phalcon applications + + +Methods +------- + +public **setUri** (*unknown* $uri) + +Change the base URI for static resources + + + +public **setShowBackTrace** (*unknown* $showBackTrace) + +Sets if files the exception's backtrace must be showed + + + +public **setShowFiles** (*unknown* $showFiles) + +Set if files part of the backtrace must be shown in the output + + + +public **setShowFileFragment** (*unknown* $showFileFragment) + +Sets if files must be completely opened and showed in the output or just the fragment related to the exception + + + +public **listen** ([*unknown* $exceptions], [*unknown* $lowSeverity]) + +Listen for uncaught exceptions and unsilent notices or warnings + + + +public **listenExceptions** () + +Listen for uncaught exceptions + + + +public **listenLowSeverity** () + +Listen for unsilent notices or warnings + + + +public **halt** () + +Halts the request showing a backtrace + + + +public **debugVar** (*unknown* $varz, [*unknown* $key]) + +Adds a variable to the debug output + + + +public **clearVars** () + +Clears are variables added previously + + + +protected **_escapeString** (*unknown* $value) + +Escapes a string with htmlentities + + + +protected **_getArrayDump** (*array* $argument, [*unknown* $n]) + +Produces a recursive representation of an array + + + +protected **_getVarDump** (*unknown* $variable) + +Produces an string representation of a variable + + + +public **getMajorVersion** () + +Returns the major framework's version + + + +public **getVersion** () + +Generates a link to the current version documentation + + + +public **getCssSources** () + +Returns the css sources + + + +public **getJsSources** () + +Returns the javascript sources + + + +final protected **showTraceItem** (*unknown* $n, *array* $trace) + +Shows a backtrace item + + + +public **onUncaughtLowSeverity** (*unknown* $severity, *unknown* $message, *unknown* $file, *unknown* $line) + +Throws an exception when a notice or warning is raised + + + +public **onUncaughtException** (*Exception* $exception) + +Handles uncaught exceptions + + + diff --git a/id/api/Phalcon_Debug_Dump.rst b/id/api/Phalcon_Debug_Dump.rst new file mode 100644 index 000000000000..2996b9b7bae2 --- /dev/null +++ b/id/api/Phalcon_Debug_Dump.rst @@ -0,0 +1,123 @@ +Class **Phalcon\\Debug\\Dump** +============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Dumps information about a variable(s) + +.. code-block:: php + + variable($foo, "foo"); + +.. code-block:: php + + "value"]; + $baz = new stdClass(); + echo (new \Phalcon\Debug\Dump())->variables($foo, $bar, $baz); + + + +Methods +------- + +public **getDetailed** () + +... + + +public **setDetailed** (*unknown* $detailed) + +... + + +public **__construct** ([*array* $styles], [*unknown* $detailed]) + +Phalcon\\Debug\\Dump constructor + + + +public **all** () + +Alias of variables() method + + + +protected **getStyle** (*unknown* $type) + +Get style for type + + + +public **setStyles** ([*unknown* $styles]) + +Set styles for vars type + + + +public **one** (*unknown* $variable, [*unknown* $name]) + +Alias of variable() method + + + +protected **output** (*unknown* $variable, [*unknown* $name], [*unknown* $tab]) + +Prepare an HTML string of information about a single variable. + + + +public **variable** (*unknown* $variable, [*unknown* $name]) + +Returns an HTML string of information about a single variable. + +.. code-block:: php + + variable($foo, "foo"); + + + + +public **variables** () + +Returns an HTML string of debugging information about any number of variables, each wrapped in a "pre" tag. + +.. code-block:: php + + "value"]; + $baz = new stdClass(); + echo (new \Phalcon\Debug\Dump())->variables($foo, $bar, $baz); + + + + +public **toJson** (*mixed* $variable) + +Returns an JSON string of information about a single variable. + +.. code-block:: php + + "value"]; + echo (new \Phalcon\Debug\Dump())->toJson($foo); + $foo = new stdClass(); + $foo->bar = 'buz'; + echo (new \Phalcon\Debug\Dump())->toJson($foo); + + + + diff --git a/id/api/Phalcon_Debug_Exception.rst b/id/api/Phalcon_Debug_Exception.rst new file mode 100644 index 000000000000..cc280204911c --- /dev/null +++ b/id/api/Phalcon_Debug_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Debug\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Di.rst b/id/api/Phalcon_Di.rst new file mode 100644 index 000000000000..567359c8d798 --- /dev/null +++ b/id/api/Phalcon_Di.rst @@ -0,0 +1,185 @@ +Class **Phalcon\\Di** +===================== + +*implements* :doc:`Phalcon\\DiInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Di is a component that implements Dependency Injection/Service Location of services and it's itself a container for them. Since Phalcon is highly decoupled, Phalcon\\Di is essential to integrate the different components of the framework. The developer can also use this component to inject dependencies and manage global instances of the different classes used in the application. Basically, this component implements the `Inversion of Control` pattern. Applying this, the objects do not receive their dependencies using setters or constructors, but requesting a service dependency injector. This reduces the overall complexity, since there is only one way to get the required dependencies within a component. Additionally, this pattern increases testability in the code, thus making it less prone to errors. + +.. code-block:: php + + set("request", "Phalcon\Http\Request", true); + + //Using an anonymous function + $di->set("request", function(){ + return new \Phalcon\Http\Request(); + }, true); + + $request = $di->getRequest(); + + + +Methods +------- + +public **__construct** () + +Phalcon\\Di constructor + + + +public **setInternalEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the internal event manager + + + +public **getInternalEventsManager** () + +Returns the internal event manager + + + +public **set** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) + +Registers a service in the services container + + + +public **setShared** (*unknown* $name, *unknown* $definition) + +Registers an "always shared" service in the services container + + + +public **remove** (*unknown* $name) + +Removes a service in the services container It also removes any shared instance created for the service + + + +public **attempt** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) + +Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name + + + +public **setRaw** (*unknown* $name, :doc:`Phalcon\\Di\\ServiceInterface ` $rawDefinition) + +Sets a service using a raw Phalcon\\Di\\Service definition + + + +public **getRaw** (*unknown* $name) + +Returns a service definition without resolving + + + +public **getService** (*unknown* $name) + +Returns a Phalcon\\Di\\Service instance + + + +public **get** (*unknown* $name, [*unknown* $parameters]) + +Resolves the service based on its configuration + + + +public *mixed* **getShared** (*string* $name, [*array* $parameters]) + +Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance + + + +public **has** (*unknown* $name) + +Check whether the DI contains a service by a name + + + +public **wasFreshInstance** () + +Check whether the last service obtained via getShared produced a fresh instance or an existing one + + + +public **getServices** () + +Return the services registered in the DI + + + +public **offsetExists** (*unknown* $name) + +Check if a service is registered using the array syntax + + + +public *boolean* **offsetSet** (*string* $name, *mixed* $definition) + +Allows to register a shared service using the array syntax + +.. code-block:: php + + ` $dependencyInjector) + +Set a default dependency injection container to be obtained into static methods + + + +public static **getDefault** () + +Return the lastest DI created + + + +public static **reset** () + +Resets the internal default DI + + + diff --git a/id/api/Phalcon_DiInterface.rst b/id/api/Phalcon_DiInterface.rst new file mode 100644 index 000000000000..996670a40473 --- /dev/null +++ b/id/api/Phalcon_DiInterface.rst @@ -0,0 +1,108 @@ +Interface **Phalcon\\DiInterface** +================================== + +*implements* ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **set** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) + +... + + +abstract public **setShared** (*unknown* $name, *unknown* $definition) + +... + + +abstract public **remove** (*unknown* $name) + +... + + +abstract public **attempt** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) + +... + + +abstract public **get** (*unknown* $name, [*unknown* $parameters]) + +... + + +abstract public **getShared** (*unknown* $name, [*unknown* $parameters]) + +... + + +abstract public **setRaw** (*unknown* $name, :doc:`Phalcon\\Di\\ServiceInterface ` $rawDefinition) + +... + + +abstract public **getRaw** (*unknown* $name) + +... + + +abstract public **getService** (*unknown* $name) + +... + + +abstract public **has** (*unknown* $name) + +... + + +abstract public **wasFreshInstance** () + +... + + +abstract public **getServices** () + +... + + +abstract public static **setDefault** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +... + + +abstract public static **getDefault** () + +... + + +abstract public static **reset** () + +... + + +abstract public **offsetExists** (*unknown* $offset) inherited from ArrayAccess + +... + + +abstract public **offsetGet** (*unknown* $offset) inherited from ArrayAccess + +... + + +abstract public **offsetSet** (*unknown* $offset, *unknown* $value) inherited from ArrayAccess + +... + + +abstract public **offsetUnset** (*unknown* $offset) inherited from ArrayAccess + +... + + diff --git a/id/api/Phalcon_Di_Exception.rst b/id/api/Phalcon_Di_Exception.rst new file mode 100644 index 000000000000..59195f6e053f --- /dev/null +++ b/id/api/Phalcon_Di_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Di\\Exception** +================================ + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Di_FactoryDefault.rst b/id/api/Phalcon_Di_FactoryDefault.rst new file mode 100644 index 000000000000..b5dbbcb25aa5 --- /dev/null +++ b/id/api/Phalcon_Di_FactoryDefault.rst @@ -0,0 +1,170 @@ +Class **Phalcon\\Di\\FactoryDefault** +===================================== + +*extends* class :doc:`Phalcon\\Di ` + +*implements* ArrayAccess, :doc:`Phalcon\\DiInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a variant of the standard Phalcon\\Di. By default it automatically registers all the services provided by the framework. Thanks to this, the developer does not need to register each service individually providing a full stack framework + + +Methods +------- + +public **__construct** () + +Phalcon\\Di\\FactoryDefault constructor + + + +public **setInternalEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di + +Sets the internal event manager + + + +public **getInternalEventsManager** () inherited from Phalcon\\Di + +Returns the internal event manager + + + +public **set** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) inherited from Phalcon\\Di + +Registers a service in the services container + + + +public **setShared** (*unknown* $name, *unknown* $definition) inherited from Phalcon\\Di + +Registers an "always shared" service in the services container + + + +public **remove** (*unknown* $name) inherited from Phalcon\\Di + +Removes a service in the services container It also removes any shared instance created for the service + + + +public **attempt** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) inherited from Phalcon\\Di + +Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name + + + +public **setRaw** (*unknown* $name, :doc:`Phalcon\\Di\\ServiceInterface ` $rawDefinition) inherited from Phalcon\\Di + +Sets a service using a raw Phalcon\\Di\\Service definition + + + +public **getRaw** (*unknown* $name) inherited from Phalcon\\Di + +Returns a service definition without resolving + + + +public **getService** (*unknown* $name) inherited from Phalcon\\Di + +Returns a Phalcon\\Di\\Service instance + + + +public **get** (*unknown* $name, [*unknown* $parameters]) inherited from Phalcon\\Di + +Resolves the service based on its configuration + + + +public *mixed* **getShared** (*string* $name, [*array* $parameters]) inherited from Phalcon\\Di + +Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance + + + +public **has** (*unknown* $name) inherited from Phalcon\\Di + +Check whether the DI contains a service by a name + + + +public **wasFreshInstance** () inherited from Phalcon\\Di + +Check whether the last service obtained via getShared produced a fresh instance or an existing one + + + +public **getServices** () inherited from Phalcon\\Di + +Return the services registered in the DI + + + +public **offsetExists** (*unknown* $name) inherited from Phalcon\\Di + +Check if a service is registered using the array syntax + + + +public *boolean* **offsetSet** (*string* $name, *mixed* $definition) inherited from Phalcon\\Di + +Allows to register a shared service using the array syntax + +.. code-block:: php + + ` $dependencyInjector) inherited from Phalcon\\Di + +Set a default dependency injection container to be obtained into static methods + + + +public static **getDefault** () inherited from Phalcon\\Di + +Return the lastest DI created + + + +public static **reset** () inherited from Phalcon\\Di + +Resets the internal default DI + + + diff --git a/id/api/Phalcon_Di_FactoryDefault_Cli.rst b/id/api/Phalcon_Di_FactoryDefault_Cli.rst new file mode 100644 index 000000000000..1244321e82c9 --- /dev/null +++ b/id/api/Phalcon_Di_FactoryDefault_Cli.rst @@ -0,0 +1,170 @@ +Class **Phalcon\\Di\\FactoryDefault\\Cli** +========================================== + +*extends* class :doc:`Phalcon\\Di\\FactoryDefault ` + +*implements* :doc:`Phalcon\\DiInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a variant of the standard Phalcon\\Di. By default it automatically registers all the services provided by the framework. Thanks to this, the developer does not need to register each service individually. This class is specially suitable for CLI applications + + +Methods +------- + +public **__construct** () + +Phalcon\\Di\\FactoryDefault\\Cli constructor + + + +public **setInternalEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di + +Sets the internal event manager + + + +public **getInternalEventsManager** () inherited from Phalcon\\Di + +Returns the internal event manager + + + +public **set** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) inherited from Phalcon\\Di + +Registers a service in the services container + + + +public **setShared** (*unknown* $name, *unknown* $definition) inherited from Phalcon\\Di + +Registers an "always shared" service in the services container + + + +public **remove** (*unknown* $name) inherited from Phalcon\\Di + +Removes a service in the services container It also removes any shared instance created for the service + + + +public **attempt** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) inherited from Phalcon\\Di + +Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name + + + +public **setRaw** (*unknown* $name, :doc:`Phalcon\\Di\\ServiceInterface ` $rawDefinition) inherited from Phalcon\\Di + +Sets a service using a raw Phalcon\\Di\\Service definition + + + +public **getRaw** (*unknown* $name) inherited from Phalcon\\Di + +Returns a service definition without resolving + + + +public **getService** (*unknown* $name) inherited from Phalcon\\Di + +Returns a Phalcon\\Di\\Service instance + + + +public **get** (*unknown* $name, [*unknown* $parameters]) inherited from Phalcon\\Di + +Resolves the service based on its configuration + + + +public *mixed* **getShared** (*string* $name, [*array* $parameters]) inherited from Phalcon\\Di + +Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance + + + +public **has** (*unknown* $name) inherited from Phalcon\\Di + +Check whether the DI contains a service by a name + + + +public **wasFreshInstance** () inherited from Phalcon\\Di + +Check whether the last service obtained via getShared produced a fresh instance or an existing one + + + +public **getServices** () inherited from Phalcon\\Di + +Return the services registered in the DI + + + +public **offsetExists** (*unknown* $name) inherited from Phalcon\\Di + +Check if a service is registered using the array syntax + + + +public *boolean* **offsetSet** (*string* $name, *mixed* $definition) inherited from Phalcon\\Di + +Allows to register a shared service using the array syntax + +.. code-block:: php + + ` $dependencyInjector) inherited from Phalcon\\Di + +Set a default dependency injection container to be obtained into static methods + + + +public static **getDefault** () inherited from Phalcon\\Di + +Return the lastest DI created + + + +public static **reset** () inherited from Phalcon\\Di + +Resets the internal default DI + + + diff --git a/id/api/Phalcon_Di_Injectable.rst b/id/api/Phalcon_Di_Injectable.rst new file mode 100644 index 000000000000..9d651f78fdf5 --- /dev/null +++ b/id/api/Phalcon_Di_Injectable.rst @@ -0,0 +1,46 @@ +Abstract class **Phalcon\\Di\\Injectable** +========================================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class allows to access services in the services container by just only accessing a public property with the same name of a registered service + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the event manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) + +Magic method __get + + + diff --git a/id/api/Phalcon_Di_InjectionAwareInterface.rst b/id/api/Phalcon_Di_InjectionAwareInterface.rst new file mode 100644 index 000000000000..3aceb2dbf6be --- /dev/null +++ b/id/api/Phalcon_Di_InjectionAwareInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Di\\InjectionAwareInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +... + + +abstract public **getDI** () + +... + + diff --git a/id/api/Phalcon_Di_Service.rst b/id/api/Phalcon_Di_Service.rst new file mode 100644 index 000000000000..9f3cc12dc9da --- /dev/null +++ b/id/api/Phalcon_Di_Service.rst @@ -0,0 +1,100 @@ +Class **Phalcon\\Di\\Service** +============================== + +*implements* :doc:`Phalcon\\Di\\ServiceInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents individually a service in the services container + +.. code-block:: php + + resolve(); + +.. code-block:: php + + ` $dependencyInjector]) + +Resolves the service + + + +public **setParameter** (*unknown* $position, *array* $parameter) + +Changes a parameter in the definition without resolve the service + + + +public *array* **getParameter** (*int* $position) + +Returns a parameter in a specific position + + + +public **isResolved** () + +Returns true if the service was resolved + + + +public static **__set_state** (*array* $attributes) + +Restore the internal state of a service + + + diff --git a/id/api/Phalcon_Di_ServiceInterface.rst b/id/api/Phalcon_Di_ServiceInterface.rst new file mode 100644 index 000000000000..bbe17a684426 --- /dev/null +++ b/id/api/Phalcon_Di_ServiceInterface.rst @@ -0,0 +1,56 @@ +Interface **Phalcon\\Di\\ServiceInterface** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $name, *unknown* $definition, [*unknown* $shared]) + +... + + +abstract public **getName** () + +... + + +abstract public **setShared** (*unknown* $shared) + +... + + +abstract public **isShared** () + +... + + +abstract public **setDefinition** (*unknown* $definition) + +... + + +abstract public **getDefinition** () + +... + + +abstract public **resolve** ([*unknown* $parameters], [:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +... + + +abstract public **setParameter** (*unknown* $position, *array* $parameter) + +... + + +abstract public static **__set_state** (*array* $attributes) + +... + + diff --git a/id/api/Phalcon_Di_Service_Builder.rst b/id/api/Phalcon_Di_Service_Builder.rst new file mode 100644 index 000000000000..bd1cf0561a92 --- /dev/null +++ b/id/api/Phalcon_Di_Service_Builder.rst @@ -0,0 +1,32 @@ +Class **Phalcon\\Di\\Service\\Builder** +======================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class builds instances based on complex definitions + + +Methods +------- + +private *mixed* **_buildParameter** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, *int* $position, *array* $argument) + +Resolves a constructor/call parameter + + + +private **_buildParameters** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, *array* $arguments) + +Resolves an array of parameters + + + +public *mixed* **build** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, *array* $definition, [*array* $parameters]) + +Builds a service using a complex service definition + + + diff --git a/id/api/Phalcon_Dispatcher.rst b/id/api/Phalcon_Dispatcher.rst new file mode 100644 index 000000000000..d79eed6d4bc9 --- /dev/null +++ b/id/api/Phalcon_Dispatcher.rst @@ -0,0 +1,206 @@ +Abstract class **Phalcon\\Dispatcher** +====================================== + +*implements* :doc:`Phalcon\\DispatcherInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is the base class for Phalcon\\Mvc\\Dispatcher and Phalcon\\Cli\\Dispatcher. This class can't be instantiated directly, you can use it to create your own dispatchers. + + +Constants +--------- + +*integer* **EXCEPTION_NO_DI** + +*integer* **EXCEPTION_CYCLIC_ROUTING** + +*integer* **EXCEPTION_HANDLER_NOT_FOUND** + +*integer* **EXCEPTION_INVALID_HANDLER** + +*integer* **EXCEPTION_INVALID_PARAMS** + +*integer* **EXCEPTION_ACTION_NOT_FOUND** + +Methods +------- + +public **__construct** () + +Phalcon\\Dispatcher constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setActionSuffix** (*unknown* $actionSuffix) + +Sets the default action suffix + + + +public **setModuleName** (*unknown* $moduleName) + +Sets the module where the controller is (only informative) + + + +public **getModuleName** () + +Gets the module where the controller class is + + + +public **setNamespaceName** (*unknown* $namespaceName) + +Sets the namespace where the controller class is + + + +public **getNamespaceName** () + +Gets a namespace to be prepended to the current handler name + + + +public **setDefaultNamespace** (*unknown* $namespaceName) + +Sets the default namespace + + + +public **getDefaultNamespace** () + +Returns the default namespace + + + +public **setDefaultAction** (*unknown* $actionName) + +Sets the default action name + + + +public **setActionName** (*unknown* $actionName) + +Sets the action name to be dispatched + + + +public **getActionName** () + +Gets the latest dispatched action name + + + +public **setParams** (*array* $params) + +Sets action params to be dispatched + + + +public **getParams** () + +Gets action params + + + +public **setParam** (*mixed* $param, *mixed* $value) + +Set a param by its name or numeric index + + + +public *mixed* **getParam** (*mixed* $param, [*string|array* $filters], [*mixed* $defaultValue]) + +Gets a param by its name or numeric index + + + +public **getActiveMethod** () + +Returns the current method to be/executed in the dispatcher + + + +public **isFinished** () + +Checks if the dispatch loop is finished or has more pendent controllers/tasks to dispatch + + + +public **setReturnedValue** (*mixed* $value) + +Sets the latest returned value by an action manually + + + +public *mixed* **getReturnedValue** () + +Returns value returned by the lastest dispatched action + + + +public *object* **dispatch** () + +Dispatches a handle action taking into account the routing parameters + + + +public **forward** (*array* $forward) + +Forwards the execution flow to another controller/action Dispatchers are unique per module. Forwarding between modules is not allowed + +.. code-block:: php + + dispatcher->forward(array("controller" => "posts", "action" => "index")); + + + + +public **wasForwarded** () + +Check if the current executed action was forwarded by another one + + + +public **getHandlerClass** () + +Possible class name that will be located to dispatch the request + + + +protected **_resolveEmptyProperties** () + +Set empty properties to their defaults (where defaults are available) + + + diff --git a/id/api/Phalcon_DispatcherInterface.rst b/id/api/Phalcon_DispatcherInterface.rst new file mode 100644 index 000000000000..84cde3b7a211 --- /dev/null +++ b/id/api/Phalcon_DispatcherInterface.rst @@ -0,0 +1,86 @@ +Interface **Phalcon\\DispatcherInterface** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setActionSuffix** (*unknown* $actionSuffix) + +... + + +abstract public **setDefaultNamespace** (*unknown* $defaultNamespace) + +... + + +abstract public **setDefaultAction** (*unknown* $actionName) + +... + + +abstract public **setNamespaceName** (*unknown* $namespaceName) + +... + + +abstract public **setModuleName** (*unknown* $moduleName) + +... + + +abstract public **setActionName** (*unknown* $actionName) + +... + + +abstract public **getActionName** () + +... + + +abstract public **setParams** (*unknown* $params) + +... + + +abstract public **getParams** () + +... + + +abstract public **setParam** (*unknown* $param, *unknown* $value) + +... + + +abstract public **getParam** (*unknown* $param, [*unknown* $filters]) + +... + + +abstract public **isFinished** () + +... + + +abstract public **getReturnedValue** () + +... + + +abstract public **dispatch** () + +... + + +abstract public **forward** (*unknown* $forward) + +... + + diff --git a/id/api/Phalcon_Escaper.rst b/id/api/Phalcon_Escaper.rst new file mode 100644 index 000000000000..421ee2a8deee --- /dev/null +++ b/id/api/Phalcon_Escaper.rst @@ -0,0 +1,99 @@ +Class **Phalcon\\Escaper** +========================== + +*implements* :doc:`Phalcon\\EscaperInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Escapes different kinds of text securing them. By using this component you may prevent XSS attacks. This component only works with UTF-8. The PREG extension needs to be compiled with UTF-8 support. + +.. code-block:: php + + escapeCss("font-family: "); + echo $escaped; // font\2D family\3A \20 \3C Verdana\3E + + + +Methods +------- + +public **setEncoding** (*unknown* $encoding) + +Sets the encoding to be used by the escaper + +.. code-block:: php + + setEncoding('utf-8'); + + + + +public **getEncoding** () + +Returns the internal encoding used by the escaper + + + +public **setHtmlQuoteType** (*unknown* $quoteType) + +Sets the HTML quoting type for htmlspecialchars + +.. code-block:: php + + setHtmlQuoteType(ENT_XHTML); + + + + +final public **detectEncoding** (*unknown* $str) + +Detect the character encoding of a string to be handled by an encoder Special-handling for chr(172) and chr(128) to chr(159) which fail to be detected by mb_detect_encoding() + + + +final public **normalizeEncoding** (*unknown* $str) + +Utility to normalize a string's encoding to UTF-32. + + + +public **escapeHtml** (*unknown* $text) + +Escapes a HTML string. Internally uses htmlspecialchars + + + +public **escapeHtmlAttr** (*unknown* $attribute) + +Escapes a HTML attribute string + + + +public **escapeCss** (*unknown* $css) + +Escape CSS strings by replacing non-alphanumeric chars by their hexadecimal escaped representation + + + +public **escapeJs** (*unknown* $js) + +Escape javascript strings by replacing non-alphanumeric chars by their hexadecimal escaped representation + + + +public **escapeUrl** (*unknown* $url) + +Escapes a URL. Internally uses rawurlencode + + + diff --git a/id/api/Phalcon_EscaperInterface.rst b/id/api/Phalcon_EscaperInterface.rst new file mode 100644 index 000000000000..4a169bb1ac8c --- /dev/null +++ b/id/api/Phalcon_EscaperInterface.rst @@ -0,0 +1,51 @@ +Interface **Phalcon\\EscaperInterface** +======================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setEncoding** (*unknown* $encoding) + +... + + +abstract public **getEncoding** () + +... + + +abstract public **setHtmlQuoteType** (*unknown* $quoteType) + +... + + +abstract public **escapeHtml** (*unknown* $text) + +... + + +abstract public **escapeHtmlAttr** (*unknown* $text) + +... + + +abstract public **escapeCss** (*unknown* $css) + +... + + +abstract public **escapeJs** (*unknown* $js) + +... + + +abstract public **escapeUrl** (*unknown* $url) + +... + + diff --git a/id/api/Phalcon_Escaper_Exception.rst b/id/api/Phalcon_Escaper_Exception.rst new file mode 100644 index 000000000000..945b428db962 --- /dev/null +++ b/id/api/Phalcon_Escaper_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Escaper\\Exception** +===================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Events_Event.rst b/id/api/Phalcon_Events_Event.rst new file mode 100644 index 000000000000..02062fcd9e3d --- /dev/null +++ b/id/api/Phalcon_Events_Event.rst @@ -0,0 +1,68 @@ +Class **Phalcon\\Events\\Event** +================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class offers contextual information of a fired event in the EventsManager + + +Methods +------- + +public **setType** (*unknown* $type) + +Event type + + + +public **getType** () + +Event type + + + +public **getSource** () + +Event source + + + +public **setData** (*unknown* $data) + +Event data + + + +public **getData** () + +Event data + + + +public **getCancelable** () + +Is event cancelable? + + + +public **__construct** (*string* $type, *object* $source, [*mixed* $data], [*boolean* $cancelable]) + +Phalcon\\Events\\Event constructor + + + +public **stop** () + +Stops the event preventing propagation + + + +public **isStopped** () + +Check whether the event is currently stopped + + + diff --git a/id/api/Phalcon_Events_EventsAwareInterface.rst b/id/api/Phalcon_Events_EventsAwareInterface.rst new file mode 100644 index 000000000000..6a5bb1e69091 --- /dev/null +++ b/id/api/Phalcon_Events_EventsAwareInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Events\\EventsAwareInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +... + + +abstract public **getEventsManager** () + +... + + diff --git a/id/api/Phalcon_Events_Exception.rst b/id/api/Phalcon_Events_Exception.rst new file mode 100644 index 000000000000..ce908944ee92 --- /dev/null +++ b/id/api/Phalcon_Events_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Events\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Events_Manager.rst b/id/api/Phalcon_Events_Manager.rst new file mode 100644 index 000000000000..d07d241565de --- /dev/null +++ b/id/api/Phalcon_Events_Manager.rst @@ -0,0 +1,101 @@ +Class **Phalcon\\Events\\Manager** +================================== + +*implements* :doc:`Phalcon\\Events\\ManagerInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon Events Manager, offers an easy way to intercept and manipulate, if needed, the normal flow of operation. With the EventsManager the developer can create hooks or plugins that will offer monitoring of data, manipulation, conditional execution and much more. + + +Methods +------- + +public **attach** (*string* $eventType, *object|callable* $handler, [*int* $priority]) + +Attach a listener to the events manager + + + +public **detach** (*string* $eventType, *object* $handler) + +Detach the listener from the events manager + + + +public **enablePriorities** (*unknown* $enablePriorities) + +Set if priorities are enabled in the EventsManager + + + +public **arePrioritiesEnabled** () + +Returns if priorities are enabled + + + +public **collectResponses** (*unknown* $collect) + +Tells the event manager if it needs to collect all the responses returned by every registered listener in a single fire + + + +public **isCollecting** () + +Check if the events manager is collecting all all the responses returned by every registered listener in a single fire + + + +public *array* **getResponses** () + +Returns all the responses returned by every handler executed by the last 'fire' executed + + + +public **detachAll** ([*unknown* $type]) + +Removes all events from the EventsManager + + + +public **dettachAll** ([*unknown* $type]) + +Alias of detachAll + + + +final public *mixed* **fireQueue** (*\SplPriorityQueue|array* $queue, :doc:`Phalcon\\Events\\Event ` $event) + +Internal handler to call a queue of events + + + +public *mixed* **fire** (*string* $eventType, *object* $source, [*mixed* $data], [*boolean* $cancelable]) + +Fires an event in the events manager causing the active listeners to be notified about it + +.. code-block:: php + + fire('db', $connection); + + + + +public **hasListeners** (*unknown* $type) + +Check whether certain type of event has listeners + + + +public *array* **getListeners** (*string* $type) + +Returns all the attached listeners of a certain type + + + diff --git a/id/api/Phalcon_Events_ManagerInterface.rst b/id/api/Phalcon_Events_ManagerInterface.rst new file mode 100644 index 000000000000..a9bd259a1554 --- /dev/null +++ b/id/api/Phalcon_Events_ManagerInterface.rst @@ -0,0 +1,36 @@ +Interface **Phalcon\\Events\\ManagerInterface** +=============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **attach** (*unknown* $eventType, *unknown* $handler) + +... + + +abstract public **detach** (*unknown* $eventType, *unknown* $handler) + +... + + +abstract public **detachAll** ([*unknown* $type]) + +... + + +abstract public **fire** (*unknown* $eventType, *unknown* $source, [*unknown* $data]) + +... + + +abstract public **getListeners** (*unknown* $type) + +... + + diff --git a/id/api/Phalcon_Exception.rst b/id/api/Phalcon_Exception.rst new file mode 100644 index 000000000000..36cccd72e900 --- /dev/null +++ b/id/api/Phalcon_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Exception** +============================ + +*extends* Exception + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Filter.rst b/id/api/Phalcon_Filter.rst new file mode 100644 index 000000000000..9b782f278943 --- /dev/null +++ b/id/api/Phalcon_Filter.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Filter** +========================= + +*implements* :doc:`Phalcon\\FilterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +The Phalcon\\Filter component provides a set of commonly needed data filters. It provides object oriented wrappers to the php filter extension. Also allows the developer to define his/her own filters + +.. code-block:: php + + sanitize("some(one)@exa\\mple.com", "email"); // returns "someone@example.com" + $filter->sanitize("hello<<", "string"); // returns "hello" + $filter->sanitize("!100a019", "int"); // returns "100019" + $filter->sanitize("!100a019.01a", "float"); // returns "100019.01" + + + +Constants +--------- + +*string* **FILTER_EMAIL** + +*string* **FILTER_ABSINT** + +*string* **FILTER_INT** + +*string* **FILTER_INT_CAST** + +*string* **FILTER_STRING** + +*string* **FILTER_FLOAT** + +*string* **FILTER_FLOAT_CAST** + +*string* **FILTER_ALPHANUM** + +*string* **FILTER_TRIM** + +*string* **FILTER_STRIPTAGS** + +*string* **FILTER_LOWER** + +*string* **FILTER_UPPER** + +Methods +------- + +public **add** (*unknown* $name, *unknown* $handler) + +Adds a user-defined filter + + + +public **sanitize** (*unknown* $value, *unknown* $filters, [*unknown* $noRecursive]) + +Sanitizes a value with a specified single or set of filters + + + +protected **_sanitize** (*unknown* $value, *unknown* $filter) + +Internal sanitize wrapper to filter_var + + + +public **getFilters** () + +Return the user-defined filters in the instance + + + diff --git a/id/api/Phalcon_FilterInterface.rst b/id/api/Phalcon_FilterInterface.rst new file mode 100644 index 000000000000..dadcd63b3c37 --- /dev/null +++ b/id/api/Phalcon_FilterInterface.rst @@ -0,0 +1,26 @@ +Interface **Phalcon\\FilterInterface** +====================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **add** (*unknown* $name, *unknown* $handler) + +... + + +abstract public **sanitize** (*unknown* $value, *unknown* $filters) + +... + + +abstract public **getFilters** () + +... + + diff --git a/id/api/Phalcon_Filter_Exception.rst b/id/api/Phalcon_Filter_Exception.rst new file mode 100644 index 000000000000..5e08ccda7249 --- /dev/null +++ b/id/api/Phalcon_Filter_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Filter\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Filter_UserFilterInterface.rst b/id/api/Phalcon_Filter_UserFilterInterface.rst new file mode 100644 index 000000000000..ffbcfc683329 --- /dev/null +++ b/id/api/Phalcon_Filter_UserFilterInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Filter\\UserFilterInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **filter** (*unknown* $value) + +... + + diff --git a/id/api/Phalcon_Flash.rst b/id/api/Phalcon_Flash.rst new file mode 100644 index 000000000000..843773b2b4c3 --- /dev/null +++ b/id/api/Phalcon_Flash.rst @@ -0,0 +1,117 @@ +Abstract class **Phalcon\\Flash** +================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Shows HTML notifications related to different circumstances. Classes can be stylized using CSS + +.. code-block:: php + + success("The record was successfully deleted"); + $flash->error("Cannot open the file"); + + + +Methods +------- + +public **__construct** ([*unknown* $cssClasses]) + +Phalcon\\Flash constructor + + + +public **setImplicitFlush** (*unknown* $implicitFlush) + +Set whether the output must be implicitly flushed to the output or returned as string + + + +public **setAutomaticHtml** (*unknown* $automaticHtml) + +Set if the output must be implicitly formatted with HTML + + + +public **setCssClasses** (*array* $cssClasses) + +Set an array with CSS classes to format the messages + + + +public **error** (*unknown* $message) + +Shows a HTML error message + +.. code-block:: php + + error('This is an error'); + + + + +public **notice** (*unknown* $message) + +Shows a HTML notice/information message + +.. code-block:: php + + notice('This is an information'); + + + + +public **success** (*unknown* $message) + +Shows a HTML success message + +.. code-block:: php + + success('The process was finished successfully'); + + + + +public **warning** (*unknown* $message) + +Shows a HTML warning message + +.. code-block:: php + + warning('Hey, this is important'); + + + + +public **outputMessage** (*unknown* $type, *string|array* $message) + +Outputs a message formatting it with HTML + +.. code-block:: php + + outputMessage('error', message); + + + + +public **clear** () + +Clears accumulated messages when implicit flush is disabled + + + diff --git a/id/api/Phalcon_FlashInterface.rst b/id/api/Phalcon_FlashInterface.rst new file mode 100644 index 000000000000..4171cd558774 --- /dev/null +++ b/id/api/Phalcon_FlashInterface.rst @@ -0,0 +1,36 @@ +Interface **Phalcon\\FlashInterface** +===================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **error** (*unknown* $message) + +... + + +abstract public **notice** (*unknown* $message) + +... + + +abstract public **success** (*unknown* $message) + +... + + +abstract public **warning** (*unknown* $message) + +... + + +abstract public **message** (*unknown* $type, *unknown* $message) + +... + + diff --git a/id/api/Phalcon_Flash_Direct.rst b/id/api/Phalcon_Flash_Direct.rst new file mode 100644 index 000000000000..0f7778ead47c --- /dev/null +++ b/id/api/Phalcon_Flash_Direct.rst @@ -0,0 +1,125 @@ +Class **Phalcon\\Flash\\Direct** +================================ + +*extends* abstract class :doc:`Phalcon\\Flash ` + +*implements* :doc:`Phalcon\\FlashInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a variant of the Phalcon\\Flash that inmediately outputs any message passed to it + + +Methods +------- + +public **message** (*unknown* $type, *unknown* $message) + +Outputs a message + + + +public **output** ([*unknown* $remove]) + +Prints the messages accumulated in the flasher + + + +public **__construct** ([*unknown* $cssClasses]) inherited from Phalcon\\Flash + +Phalcon\\Flash constructor + + + +public **setImplicitFlush** (*unknown* $implicitFlush) inherited from Phalcon\\Flash + +Set whether the output must be implicitly flushed to the output or returned as string + + + +public **setAutomaticHtml** (*unknown* $automaticHtml) inherited from Phalcon\\Flash + +Set if the output must be implicitly formatted with HTML + + + +public **setCssClasses** (*array* $cssClasses) inherited from Phalcon\\Flash + +Set an array with CSS classes to format the messages + + + +public **error** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML error message + +.. code-block:: php + + error('This is an error'); + + + + +public **notice** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML notice/information message + +.. code-block:: php + + notice('This is an information'); + + + + +public **success** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML success message + +.. code-block:: php + + success('The process was finished successfully'); + + + + +public **warning** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML warning message + +.. code-block:: php + + warning('Hey, this is important'); + + + + +public **outputMessage** (*unknown* $type, *string|array* $message) inherited from Phalcon\\Flash + +Outputs a message formatting it with HTML + +.. code-block:: php + + outputMessage('error', message); + + + + +public **clear** () inherited from Phalcon\\Flash + +Clears accumulated messages when implicit flush is disabled + + + diff --git a/id/api/Phalcon_Flash_Exception.rst b/id/api/Phalcon_Flash_Exception.rst new file mode 100644 index 000000000000..7b87b5b2db4f --- /dev/null +++ b/id/api/Phalcon_Flash_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Flash\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Flash_Session.rst b/id/api/Phalcon_Flash_Session.rst new file mode 100644 index 000000000000..32bb22cef76a --- /dev/null +++ b/id/api/Phalcon_Flash_Session.rst @@ -0,0 +1,161 @@ +Class **Phalcon\\Flash\\Session** +================================= + +*extends* abstract class :doc:`Phalcon\\Flash ` + +*implements* :doc:`Phalcon\\FlashInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Temporarily stores the messages in session, then messages can be printed in the next request + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +protected **_getSessionMessages** (*unknown* $remove) + +Returns the messages stored in session + + + +protected **_setSessionMessages** (*array* $messages) + +Stores the messages in session + + + +public **message** (*unknown* $type, *unknown* $message) + +Adds a message to the session flasher + + + +public **has** ([*unknown* $type]) + +Checks whether there are messages + + + +public **getMessages** ([*unknown* $type], [*unknown* $remove]) + +Returns the messages in the session flasher + + + +public **output** ([*unknown* $remove]) + +Prints the messages in the session flasher + + + +public **clear** () + +Clear messages in the session messenger + + + +public **__construct** ([*unknown* $cssClasses]) inherited from Phalcon\\Flash + +Phalcon\\Flash constructor + + + +public **setImplicitFlush** (*unknown* $implicitFlush) inherited from Phalcon\\Flash + +Set whether the output must be implicitly flushed to the output or returned as string + + + +public **setAutomaticHtml** (*unknown* $automaticHtml) inherited from Phalcon\\Flash + +Set if the output must be implicitly formatted with HTML + + + +public **setCssClasses** (*array* $cssClasses) inherited from Phalcon\\Flash + +Set an array with CSS classes to format the messages + + + +public **error** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML error message + +.. code-block:: php + + error('This is an error'); + + + + +public **notice** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML notice/information message + +.. code-block:: php + + notice('This is an information'); + + + + +public **success** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML success message + +.. code-block:: php + + success('The process was finished successfully'); + + + + +public **warning** (*unknown* $message) inherited from Phalcon\\Flash + +Shows a HTML warning message + +.. code-block:: php + + warning('Hey, this is important'); + + + + +public **outputMessage** (*unknown* $type, *string|array* $message) inherited from Phalcon\\Flash + +Outputs a message formatting it with HTML + +.. code-block:: php + + outputMessage('error', message); + + + + diff --git a/id/api/Phalcon_Forms_Element.rst b/id/api/Phalcon_Forms_Element.rst new file mode 100644 index 000000000000..1bed12ea0027 --- /dev/null +++ b/id/api/Phalcon_Forms_Element.rst @@ -0,0 +1,213 @@ +Abstract class **Phalcon\\Forms\\Element** +========================================== + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a base class for form elements + + +Methods +------- + +public **__construct** (*string* $name, [*array* $attributes]) + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) + +Sets the parent form to the element + + + +public **getForm** () + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) + +Sets the element name + + + +public **getName** () + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) + +Adds a validator to the element + + + +public **getValidators** () + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) + +Sets default attributes for the element + + + +public **getAttributes** () + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) + +Sets options for the element + + + +public *array* **getUserOptions** () + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) + +Sets the element label + + + +public **getLabel** () + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () + +Returns the element value + + + +public **getMessages** () + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) + +Appends a message to the internal message list + + + +public **clear** () + +Clears every element in the form to its default value + + + +public **__toString** () + +Magic method __toString renders the widget without atttributes + + + +abstract public **render** ([*unknown* $attributes]) inherited from Phalcon\\Forms\\ElementInterface + +... + + diff --git a/id/api/Phalcon_Forms_ElementInterface.rst b/id/api/Phalcon_Forms_ElementInterface.rst new file mode 100644 index 000000000000..45bae11cbd4a --- /dev/null +++ b/id/api/Phalcon_Forms_ElementInterface.rst @@ -0,0 +1,166 @@ +Interface **Phalcon\\Forms\\ElementInterface** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) + +... + + +abstract public **getForm** () + +... + + +abstract public **setName** (*unknown* $name) + +... + + +abstract public **getName** () + +... + + +abstract public **setFilters** (*unknown* $filters) + +... + + +abstract public **addFilter** (*unknown* $filter) + +... + + +abstract public **getFilters** () + +... + + +abstract public **addValidators** (*array* $validators, [*unknown* $merge]) + +... + + +abstract public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) + +... + + +abstract public **getValidators** () + +... + + +abstract public **prepareAttributes** ([*unknown* $attributes], [*unknown* $useChecked]) + +... + + +abstract public **setAttribute** (*unknown* $attribute, *unknown* $value) + +... + + +abstract public **getAttribute** (*unknown* $attribute, [*unknown* $defaultValue]) + +... + + +abstract public **setAttributes** (*array* $attributes) + +... + + +abstract public **getAttributes** () + +... + + +abstract public **setUserOption** (*unknown* $option, *unknown* $value) + +... + + +abstract public **getUserOption** (*unknown* $option, [*unknown* $defaultValue]) + +... + + +abstract public **setUserOptions** (*unknown* $options) + +... + + +abstract public **getUserOptions** () + +... + + +abstract public **setLabel** (*unknown* $label) + +... + + +abstract public **getLabel** () + +... + + +abstract public **label** () + +... + + +abstract public **setDefault** (*unknown* $value) + +... + + +abstract public **getDefault** () + +... + + +abstract public **getValue** () + +... + + +abstract public **getMessages** () + +... + + +abstract public **hasMessages** () + +... + + +abstract public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) + +... + + +abstract public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) + +... + + +abstract public **clear** () + +... + + +abstract public **render** ([*unknown* $attributes]) + +... + + diff --git a/id/api/Phalcon_Forms_Element_Check.rst b/id/api/Phalcon_Forms_Element_Check.rst new file mode 100644 index 000000000000..26e3e35689d9 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Check.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Check** +======================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=check] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Date.rst b/id/api/Phalcon_Forms_Element_Date.rst new file mode 100644 index 000000000000..3c0ae90b8c89 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Date.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Date** +======================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=date] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Email.rst b/id/api/Phalcon_Forms_Element_Email.rst new file mode 100644 index 000000000000..a61819592c36 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Email.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Email** +======================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=email] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_File.rst b/id/api/Phalcon_Forms_Element_File.rst new file mode 100644 index 000000000000..5912c17f55aa --- /dev/null +++ b/id/api/Phalcon_Forms_Element_File.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\File** +======================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=file] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Hidden.rst b/id/api/Phalcon_Forms_Element_Hidden.rst new file mode 100644 index 000000000000..c0f5c86bd3ab --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Hidden.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Hidden** +========================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=hidden] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Numeric.rst b/id/api/Phalcon_Forms_Element_Numeric.rst new file mode 100644 index 000000000000..34f7918a5b2c --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Numeric.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Numeric** +========================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=number] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Password.rst b/id/api/Phalcon_Forms_Element_Password.rst new file mode 100644 index 000000000000..3d4955ebd7b9 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Password.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Password** +=========================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=password] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Radio.rst b/id/api/Phalcon_Forms_Element_Radio.rst new file mode 100644 index 000000000000..a7e7a19f716a --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Radio.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Radio** +======================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=radio] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Select.rst b/id/api/Phalcon_Forms_Element_Select.rst new file mode 100644 index 000000000000..a03ac8852481 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Select.rst @@ -0,0 +1,234 @@ +Class **Phalcon\\Forms\\Element\\Select** +========================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component SELECT (choice) for forms + + +Methods +------- + +public **__construct** (*string* $name, [*object|array* $options], [*array* $attributes]) + +Phalcon\\Forms\\Element constructor + + + +public :doc:`Phalcon\\Forms\\Element ` **setOptions** (*array|object* $options) + +Set the choice's options + + + +public *array|object* **getOptions** () + +Returns the choices' options + + + +public *this* **addOption** (*array* $option) + +Adds an option to the current options + + + +public *string* **render** ([*array* $attributes]) + +Renders the element widget returning html + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Submit.rst b/id/api/Phalcon_Forms_Element_Submit.rst new file mode 100644 index 000000000000..65ef66ab25f0 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Submit.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Submit** +========================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=submit] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_Text.rst b/id/api/Phalcon_Forms_Element_Text.rst new file mode 100644 index 000000000000..77daea697cd4 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_Text.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\Text** +======================================= + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component INPUT[type=text] for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Element_TextArea.rst b/id/api/Phalcon_Forms_Element_TextArea.rst new file mode 100644 index 000000000000..744723fe5671 --- /dev/null +++ b/id/api/Phalcon_Forms_Element_TextArea.rst @@ -0,0 +1,216 @@ +Class **Phalcon\\Forms\\Element\\TextArea** +=========================================== + +*extends* abstract class :doc:`Phalcon\\Forms\\Element ` + +*implements* :doc:`Phalcon\\Forms\\ElementInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Component TEXTAREA for forms + + +Methods +------- + +public *string* **render** ([*array* $attributes]) + +Renders the element widget + + + +public **__construct** (*string* $name, [*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Phalcon\\Forms\\Element constructor + + + +public **setForm** (:doc:`Phalcon\\Forms\\Form ` $form) inherited from Phalcon\\Forms\\Element + +Sets the parent form to the element + + + +public **getForm** () inherited from Phalcon\\Forms\\Element + +Returns the parent form to the element + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Forms\\Element + +Sets the element name + + + +public **getName** () inherited from Phalcon\\Forms\\Element + +Returns the element name + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setFilters** (*array|string* $filters) inherited from Phalcon\\Forms\\Element + +Sets the element filters + + + +public **addFilter** (*unknown* $filter) inherited from Phalcon\\Forms\\Element + +Adds a filter to current list of filters + + + +public *mixed* **getFilters** () inherited from Phalcon\\Forms\\Element + +Returns the element filters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **addValidators** (*array* $validators, [*unknown* $merge]) inherited from Phalcon\\Forms\\Element + +Adds a group of validators + + + +public **addValidator** (:doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) inherited from Phalcon\\Forms\\Element + +Adds a validator to the element + + + +public **getValidators** () inherited from Phalcon\\Forms\\Element + +Returns the validators registered for the element + + + +public *array* **prepareAttributes** ([*array* $attributes], [*boolean* $useChecked]) inherited from Phalcon\\Forms\\Element + +Returns an array of prepared attributes for Phalcon\\Tag helpers according to the element parameters + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setAttribute** (*string* $attribute, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default attribute for the element + + + +public *mixed* **getAttribute** (*string* $attribute, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an attribute if present + + + +public **setAttributes** (*array* $attributes) inherited from Phalcon\\Forms\\Element + +Sets default attributes for the element + + + +public **getAttributes** () inherited from Phalcon\\Forms\\Element + +Returns the default attributes for the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOption** (*string* $option, *mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets an option for the element + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) inherited from Phalcon\\Forms\\Element + +Returns the value of an option if present + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setUserOptions** (*array* $options) inherited from Phalcon\\Forms\\Element + +Sets options for the element + + + +public *array* **getUserOptions** () inherited from Phalcon\\Forms\\Element + +Returns the options for the element + + + +public **setLabel** (*unknown* $label) inherited from Phalcon\\Forms\\Element + +Sets the element label + + + +public **getLabel** () inherited from Phalcon\\Forms\\Element + +Returns the element label + + + +public *string* **label** ([*array* $attributes]) inherited from Phalcon\\Forms\\Element + +Generate the HTML to label the element + + + +public :doc:`Phalcon\\Forms\\ElementInterface ` **setDefault** (*mixed* $value) inherited from Phalcon\\Forms\\Element + +Sets a default value in case the form does not use an entity or there is no value available for the element in _POST + + + +public *mixed* **getDefault** () inherited from Phalcon\\Forms\\Element + +Returns the default value assigned to the element + + + +public *mixed* **getValue** () inherited from Phalcon\\Forms\\Element + +Returns the element value + + + +public **getMessages** () inherited from Phalcon\\Forms\\Element + +Returns the messages that belongs to the element The element needs to be attached to a form + + + +public **hasMessages** () inherited from Phalcon\\Forms\\Element + +Checks whether there are messages attached to the element + + + +public **setMessages** (:doc:`Phalcon\\Validation\\Message\\Group ` $group) inherited from Phalcon\\Forms\\Element + +Sets the validation messages related to the element + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) inherited from Phalcon\\Forms\\Element + +Appends a message to the internal message list + + + +public **clear** () inherited from Phalcon\\Forms\\Element + +Clears every element in the form to its default value + + + +public **__toString** () inherited from Phalcon\\Forms\\Element + +Magic method __toString renders the widget without atttributes + + + diff --git a/id/api/Phalcon_Forms_Exception.rst b/id/api/Phalcon_Forms_Exception.rst new file mode 100644 index 000000000000..4b1add0c73e3 --- /dev/null +++ b/id/api/Phalcon_Forms_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Forms\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Forms_Form.rst b/id/api/Phalcon_Forms_Form.rst new file mode 100644 index 000000000000..f2f7f21eb664 --- /dev/null +++ b/id/api/Phalcon_Forms_Form.rst @@ -0,0 +1,238 @@ +Class **Phalcon\\Forms\\Form** +============================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, Countable, Iterator, Traversable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows to build forms using an object-oriented interface + + +Methods +------- + +public **setValidation** (*unknown* $validation) + +... + + +public **getValidation** () + +... + + +public **__construct** ([*object* $entity], [*array* $userOptions]) + +Phalcon\\Forms\\Form constructor + + + +public :doc:`Phalcon\\Forms\\Form ` **setAction** (*string* $action) + +Sets the form's action + + + +public **getAction** () + +Returns the form's action + + + +public :doc:`Phalcon\\Forms\\Form ` **setUserOption** (*string* $option, *mixed* $value) + +Sets an option for the form + + + +public *mixed* **getUserOption** (*string* $option, [*mixed* $defaultValue]) + +Returns the value of an option if present + + + +public **setUserOptions** (*array* $options) + +Sets options for the element + + + +public *array* **getUserOptions** () + +Returns the options for the element + + + +public :doc:`Phalcon\\Forms\\Form ` **setEntity** (*object* $entity) + +Sets the entity related to the model + + + +public *object* **getEntity** () + +Returns the entity related to the model + + + +public **getElements** () + +Returns the form elements added to the form + + + +public :doc:`Phalcon\\Forms\\Form ` **bind** (*array* $data, *object* $entity, [*array* $whitelist]) + +Binds data to the entity + + + +public *boolean* **isValid** ([*array* $data], [*object* $entity]) + +Validates the form + + + +public **getMessages** ([*unknown* $byItemName]) + +Returns the messages generated in the validation + + + +public :doc:`Phalcon\\Validation\\Message\\Group ` **getMessagesFor** (*string* $name) + +Returns the messages generated for a specific element + + + +public *boolean* **hasMessagesFor** (*string* $name) + +Check if messages were generated for a specific element + + + +public :doc:`Phalcon\\Forms\\Form ` **add** (:doc:`Phalcon\\Forms\\ElementInterface ` $element, [*string* $postion], [*unknown* $type]) + +Adds an element to the form + + + +public *string* **render** (*string* $name, [*array* $attributes]) + +Renders a specific item in the form + + + +public **get** (*unknown* $name) + +Returns an element added to the form by its name + + + +public **label** (*unknown* $name, [*array* $attributes]) + +Generate the label of a element added to the form including HTML + + + +public **getLabel** (*unknown* $name) + +Returns a label for an element + + + +public *mixed* **getValue** (*string* $name) + +Gets a value from the internal related entity or from the default value + + + +public **has** (*unknown* $name) + +Check if the form contains an element + + + +public **remove** (*unknown* $name) + +Removes an element from the form + + + +public :doc:`Phalcon\\Forms\\Form ` **clear** ([*array* $fields]) + +Clears every element in the form to its default value + + + +public **count** () + +Returns the number of elements in the form + + + +public **rewind** () + +Rewinds the internal iterator + + + +public **current** () + +Returns the current element in the iterator + + + +public **key** () + +Returns the current position/key in the iterator + + + +public **next** () + +Moves the internal iteration pointer to the next position + + + +public **valid** () + +Check if the current element in the iterator is valid + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Forms_Manager.rst b/id/api/Phalcon_Forms_Manager.rst new file mode 100644 index 000000000000..300b3dbd74ec --- /dev/null +++ b/id/api/Phalcon_Forms_Manager.rst @@ -0,0 +1,38 @@ +Class **Phalcon\\Forms\\Manager** +================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + + + + +Methods +------- + +public :doc:`Phalcon\\Forms\\Form ` **create** ([*string* $name], [*object* $entity]) + +Creates a form registering it in the forms manager + + + +public **get** (*unknown* $name) + +Returns a form by its name + + + +public **has** (*unknown* $name) + +Checks if a form is registered in the forms manager + + + +public **set** (*unknown* $name, :doc:`Phalcon\\Forms\\Form ` $form) + +Registers a form in the Forms Manager + + + diff --git a/id/api/Phalcon_Http_Cookie.rst b/id/api/Phalcon_Http_Cookie.rst new file mode 100644 index 000000000000..f2845fccf250 --- /dev/null +++ b/id/api/Phalcon_Http_Cookie.rst @@ -0,0 +1,148 @@ +Class **Phalcon\\Http\\Cookie** +=============================== + +*implements* :doc:`Phalcon\\Http\\CookieInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Provide OO wrappers to manage a HTTP cookie + + +Methods +------- + +public **__construct** (*string* $name, [*mixed* $value], [*int* $expire], [*string* $path], [*boolean* $secure], [*string* $domain], [*boolean* $httpOnly]) + +Phalcon\\Http\\Cookie constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public :doc:`Phalcon\\Http\\Cookie ` **setValue** (*string* $value) + +Sets the cookie's value + + + +public *mixed* **getValue** ([*string|array* $filters], [*string* $defaultValue]) + +Returns the cookie's value + + + +public **send** () + +Sends the cookie to the HTTP client Stores the cookie definition in session + + + +public **restore** () + +Reads the cookie-related info from the SESSION to restore the cookie as it was set This method is automatically called internally so normally you don't need to call it + + + +public **delete** () + +Deletes the cookie by setting an expire time in the past + + + +public **useEncryption** (*unknown* $useEncryption) + +Sets if the cookie must be encrypted/decrypted automatically + + + +public **isUsingEncryption** () + +Check if the cookie is using implicit encryption + + + +public **setExpiration** (*unknown* $expire) + +Sets the cookie's expiration time + + + +public **getExpiration** () + +Returns the current expiration time + + + +public **setPath** (*unknown* $path) + +Sets the cookie's expiration time + + + +public **getName** () + +Returns the current cookie's name + + + +public **getPath** () + +Returns the current cookie's path + + + +public **setDomain** (*unknown* $domain) + +Sets the domain that the cookie is available to + + + +public **getDomain** () + +Returns the domain that the cookie is available to + + + +public **setSecure** (*unknown* $secure) + +Sets if the cookie must only be sent when the connection is secure (HTTPS) + + + +public **getSecure** () + +Returns whether the cookie must only be sent when the connection is secure (HTTPS) + + + +public **setHttpOnly** (*unknown* $httpOnly) + +Sets if the cookie is accessible only through the HTTP protocol + + + +public **getHttpOnly** () + +Returns if the cookie is accessible only through the HTTP protocol + + + +public **__toString** () + +Magic __toString method converts the cookie's value to string + + + diff --git a/id/api/Phalcon_Http_CookieInterface.rst b/id/api/Phalcon_Http_CookieInterface.rst new file mode 100644 index 000000000000..5cee964cb95d --- /dev/null +++ b/id/api/Phalcon_Http_CookieInterface.rst @@ -0,0 +1,96 @@ +Interface **Phalcon\\Http\\CookieInterface** +============================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setValue** (*unknown* $value) + +... + + +abstract public **getValue** ([*unknown* $filters], [*unknown* $defaultValue]) + +... + + +abstract public **send** () + +... + + +abstract public **delete** () + +... + + +abstract public **useEncryption** (*unknown* $useEncryption) + +... + + +abstract public **isUsingEncryption** () + +... + + +abstract public **setExpiration** (*unknown* $expire) + +... + + +abstract public **getExpiration** () + +... + + +abstract public **setPath** (*unknown* $path) + +... + + +abstract public **getName** () + +... + + +abstract public **getPath** () + +... + + +abstract public **setDomain** (*unknown* $domain) + +... + + +abstract public **getDomain** () + +... + + +abstract public **setSecure** (*unknown* $secure) + +... + + +abstract public **getSecure** () + +... + + +abstract public **setHttpOnly** (*unknown* $httpOnly) + +... + + +abstract public **getHttpOnly** () + +... + + diff --git a/id/api/Phalcon_Http_Cookie_Exception.rst b/id/api/Phalcon_Http_Cookie_Exception.rst new file mode 100644 index 000000000000..cb2550be0a73 --- /dev/null +++ b/id/api/Phalcon_Http_Cookie_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Http\\Cookie\\Exception** +========================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Http_Request.rst b/id/api/Phalcon_Http_Request.rst new file mode 100644 index 000000000000..17179612a571 --- /dev/null +++ b/id/api/Phalcon_Http_Request.rst @@ -0,0 +1,393 @@ +Class **Phalcon\\Http\\Request** +================================ + +*implements* :doc:`Phalcon\\Http\\RequestInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Encapsulates request information for easy and secure access from application controllers. The request object is a simple value object that is passed between the dispatcher and controller classes. It packages the HTTP request environment. + +.. code-block:: php + + isPost() == true) { + if ($request->isAjax() == true) { + echo 'Request was made using POST and AJAX'; + } + } + + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **get** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue], [*unknown* $notAllowEmpty], [*unknown* $noRecursive]) + +Gets a variable from the $_REQUEST superglobal applying filters if needed. If no parameters are given the $_REQUEST superglobal is returned + +.. code-block:: php + + get("user_email"); + + //Returns value from $_REQUEST["user_email"] with sanitizing + $userEmail = $request->get("user_email", "email"); + + + + +public **getPost** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue], [*unknown* $notAllowEmpty], [*unknown* $noRecursive]) + +Gets a variable from the $_POST superglobal applying filters if needed If no parameters are given the $_POST superglobal is returned + +.. code-block:: php + + getPost("user_email"); + + //Returns value from $_POST["user_email"] with sanitizing + $userEmail = $request->getPost("user_email", "email"); + + + + +public **getPut** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue], [*unknown* $notAllowEmpty], [*unknown* $noRecursive]) + +Gets a variable from put request + +.. code-block:: php + + getPut("user_email"); + + //Returns value from $_PUT["user_email"] with sanitizing + $userEmail = $request->getPut("user_email", "email"); + + + + +public **getQuery** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue], [*unknown* $notAllowEmpty], [*unknown* $noRecursive]) + +Gets variable from $_GET superglobal applying filters if needed If no parameters are given the $_GET superglobal is returned + +.. code-block:: php + + getQuery("id"); + + //Returns value from $_GET["id"] with sanitizing + $id = $request->getQuery("id", "int"); + + //Returns value from $_GET["id"] with a default value + $id = $request->getQuery("id", null, 150); + + + + +final protected **getHelper** (*array* $source, [*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue], [*unknown* $notAllowEmpty], [*unknown* $noRecursive]) + +Helper to get data from superglobals, applying filters if needed. If no parameters are given the superglobal is returned. + + + +public **getServer** (*unknown* $name) + +Gets variable from $_SERVER superglobal + + + +public **has** (*unknown* $name) + +Checks whether $_REQUEST superglobal has certain index + + + +public **hasPost** (*unknown* $name) + +Checks whether $_POST superglobal has certain index + + + +public **hasPut** (*unknown* $name) + +Checks whether the PUT data has certain index + + + +public **hasQuery** (*unknown* $name) + +Checks whether $_GET superglobal has certain index + + + +final public **hasServer** (*unknown* $name) + +Checks whether $_SERVER superglobal has certain index + + + +final public **getHeader** (*unknown* $header) + +Gets HTTP header from request data + + + +public **getScheme** () + +Gets HTTP schema (http/https) + + + +public **isAjax** () + +Checks whether request has been made using ajax + + + +public **isSoapRequested** () + +Checks whether request has been made using SOAP + + + +public **isSecureRequest** () + +Checks whether request has been made using any secure layer + + + +public **getRawBody** () + +Gets HTTP raw request body + + + +public **getJsonRawBody** ([*unknown* $associative]) + +Gets decoded JSON HTTP raw request body + + + +public **getServerAddress** () + +Gets active server address IP + + + +public **getServerName** () + +Gets active server name + + + +public **getHttpHost** () + +Gets information about schema, host and port used by the request + + + +final public **getURI** () + +Gets HTTP URI which request has been made + + + +public **getClientAddress** ([*unknown* $trustForwardedHeader]) + +Gets most possible client IPv4 Address. This method search in _SERVER['REMOTE_ADDR'] and optionally in _SERVER['HTTP_X_FORWARDED_FOR'] + + + +final public **getMethod** () + +Gets HTTP method which request has been made + + + +public **getUserAgent** () + +Gets HTTP user agent used to made the request + + + +public **isValidHttpMethod** (*unknown* $method) + +Checks if a method is a valid HTTP method + + + +public **isMethod** (*unknown* $methods, [*unknown* $strict]) + +Check if HTTP method match any of the passed methods When strict is true it checks if validated methods are real HTTP methods + + + +public **isPost** () + +Checks whether HTTP method is POST. if _SERVER["REQUEST_METHOD"]==="POST" + + + +public **isGet** () + +Checks whether HTTP method is GET. if _SERVER["REQUEST_METHOD"]==="GET" + + + +public **isPut** () + +Checks whether HTTP method is PUT. if _SERVER["REQUEST_METHOD"]==="PUT" + + + +public **isPatch** () + +Checks whether HTTP method is PATCH. if _SERVER["REQUEST_METHOD"]==="PATCH" + + + +public **isHead** () + +Checks whether HTTP method is HEAD. if _SERVER["REQUEST_METHOD"]==="HEAD" + + + +public **isDelete** () + +Checks whether HTTP method is DELETE. if _SERVER["REQUEST_METHOD"]==="DELETE" + + + +public **isOptions** () + +Checks whether HTTP method is OPTIONS. if _SERVER["REQUEST_METHOD"]==="OPTIONS" + + + +public **hasFiles** ([*unknown* $onlySuccessful]) + +Checks whether request include attached files + + + +final protected **hasFileHelper** (*unknown* $data, *unknown* $onlySuccessful) + +Recursively counts file in an array of files + + + +public **getUploadedFiles** ([*unknown* $onlySuccessful]) + +Gets attached files as Phalcon\\Http\\Request\\File instances + + + +final protected **smoothFiles** (*array* $names, *array* $types, *array* $tmp_names, *array* $sizes, *array* $errors, *unknown* $prefix) + +Smooth out $_FILES to have plain array with all files uploaded + + + +public **getHeaders** () + +Returns the available headers in the request + + + +public **getHTTPReferer** () + +Gets web page that refers active request. ie: http://www.google.com + + + +final protected **_getQualityHeader** (*unknown* $serverIndex, *unknown* $name) + +Process a request header and return an array of values with their qualities + + + +final protected **_getBestQuality** (*array* $qualityParts, *unknown* $name) + +Process a request header and return the one with best quality + + + +public **getContentType** () + +Gets content type which request has been made + + + +public **getAcceptableContent** () + +Gets an array with mime/types and their quality accepted by the browser/client from _SERVER["HTTP_ACCEPT"] + + + +public **getBestAccept** () + +Gets best mime/type accepted by the browser/client from _SERVER["HTTP_ACCEPT"] + + + +public **getClientCharsets** () + +Gets a charsets array and their quality accepted by the browser/client from _SERVER["HTTP_ACCEPT_CHARSET"] + + + +public **getBestCharset** () + +Gets best charset accepted by the browser/client from _SERVER["HTTP_ACCEPT_CHARSET"] + + + +public **getLanguages** () + +Gets languages array and their quality accepted by the browser/client from _SERVER["HTTP_ACCEPT_LANGUAGE"] + + + +public **getBestLanguage** () + +Gets best language accepted by the browser/client from _SERVER["HTTP_ACCEPT_LANGUAGE"] + + + +public **getBasicAuth** () + +Gets auth info accepted by the browser/client from $_SERVER['PHP_AUTH_USER'] + + + +public **getDigestAuth** () + +Gets auth info accepted by the browser/client from $_SERVER['PHP_AUTH_DIGEST'] + + + diff --git a/id/api/Phalcon_Http_RequestInterface.rst b/id/api/Phalcon_Http_RequestInterface.rst new file mode 100644 index 000000000000..7f755f130c29 --- /dev/null +++ b/id/api/Phalcon_Http_RequestInterface.rst @@ -0,0 +1,206 @@ +Interface **Phalcon\\Http\\RequestInterface** +============================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **get** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue]) + +... + + +abstract public **getPost** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue]) + +... + + +abstract public **getQuery** ([*unknown* $name], [*unknown* $filters], [*unknown* $defaultValue]) + +... + + +abstract public **getServer** (*unknown* $name) + +... + + +abstract public **has** (*unknown* $name) + +... + + +abstract public **hasPost** (*unknown* $name) + +... + + +abstract public **hasPut** (*unknown* $name) + +... + + +abstract public **hasQuery** (*unknown* $name) + +... + + +abstract public **hasServer** (*unknown* $name) + +... + + +abstract public **getHeader** (*unknown* $header) + +... + + +abstract public **getScheme** () + +... + + +abstract public **isAjax** () + +... + + +abstract public **isSoapRequested** () + +... + + +abstract public **isSecureRequest** () + +... + + +abstract public **getRawBody** () + +... + + +abstract public **getServerAddress** () + +... + + +abstract public **getServerName** () + +... + + +abstract public **getHttpHost** () + +... + + +abstract public **getClientAddress** ([*unknown* $trustForwardedHeader]) + +... + + +abstract public **getMethod** () + +... + + +abstract public **getUserAgent** () + +... + + +abstract public **isMethod** (*unknown* $methods, [*unknown* $strict]) + +... + + +abstract public **isPost** () + +... + + +abstract public **isGet** () + +... + + +abstract public **isPut** () + +... + + +abstract public **isHead** () + +... + + +abstract public **isDelete** () + +... + + +abstract public **isOptions** () + +... + + +abstract public **hasFiles** ([*unknown* $onlySuccessful]) + +... + + +abstract public **getUploadedFiles** ([*unknown* $onlySuccessful]) + +... + + +abstract public **getHTTPReferer** () + +... + + +abstract public **getAcceptableContent** () + +... + + +abstract public **getBestAccept** () + +... + + +abstract public **getClientCharsets** () + +... + + +abstract public **getBestCharset** () + +... + + +abstract public **getLanguages** () + +... + + +abstract public **getBestLanguage** () + +... + + +abstract public **getBasicAuth** () + +... + + +abstract public **getDigestAuth** () + +... + + diff --git a/id/api/Phalcon_Http_Request_Exception.rst b/id/api/Phalcon_Http_Request_Exception.rst new file mode 100644 index 000000000000..caef13a95269 --- /dev/null +++ b/id/api/Phalcon_Http_Request_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Http\\Request\\Exception** +=========================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Http_Request_File.rst b/id/api/Phalcon_Http_Request_File.rst new file mode 100644 index 000000000000..f1047567be2d --- /dev/null +++ b/id/api/Phalcon_Http_Request_File.rst @@ -0,0 +1,103 @@ +Class **Phalcon\\Http\\Request\\File** +====================================== + +*implements* :doc:`Phalcon\\Http\\Request\\FileInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Provides OO wrappers to the $_FILES superglobal + +.. code-block:: php + + request->hasFiles() == true) { + //Print the real file names and their sizes + foreach ($this->request->getUploadedFiles() as $file){ + echo $file->getName(), " ", $file->getSize(), "\n"; + } + } + } + + } + + + +Methods +------- + +public **getError** () + + + + + +public **getKey** () + + + + + +public **getExtension** () + + + + + +public **__construct** (*array* $file, [*unknown* $key]) + +Phalcon\\Http\\Request\\File constructor + + + +public **getSize** () + +Returns the file size of the uploaded file + + + +public **getName** () + +Returns the real name of the uploaded file + + + +public **getTempName** () + +Returns the temporal name of the uploaded file + + + +public **getType** () + +Returns the mime type reported by the browser This mime type is not completely secure, use getRealType() instead + + + +public **getRealType** () + +Gets the real mime type of the upload file using finfo + + + +public **isUploadedFile** () + +Checks whether the file has been uploaded via Post. + + + +public **moveTo** (*unknown* $destination) + +Moves the temporary file to a destination within the application + + + diff --git a/id/api/Phalcon_Http_Request_FileInterface.rst b/id/api/Phalcon_Http_Request_FileInterface.rst new file mode 100644 index 000000000000..81a4ef5fec47 --- /dev/null +++ b/id/api/Phalcon_Http_Request_FileInterface.rst @@ -0,0 +1,46 @@ +Interface **Phalcon\\Http\\Request\\FileInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*array* $file, [*unknown* $key]) + +... + + +abstract public **getSize** () + +... + + +abstract public **getName** () + +... + + +abstract public **getTempName** () + +... + + +abstract public **getType** () + +... + + +abstract public **getRealType** () + +... + + +abstract public **moveTo** (*unknown* $destination) + +... + + diff --git a/id/api/Phalcon_Http_Response.rst b/id/api/Phalcon_Http_Response.rst new file mode 100644 index 000000000000..e81e9752b139 --- /dev/null +++ b/id/api/Phalcon_Http_Response.rst @@ -0,0 +1,276 @@ +Class **Phalcon\\Http\\Response** +================================= + +*implements* :doc:`Phalcon\\Http\\ResponseInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Part of the HTTP cycle is return responses to the clients. Phalcon\\HTTP\\Response is the Phalcon component responsible to achieve this task. HTTP responses are usually composed by headers and body. + +.. code-block:: php + + setStatusCode(200, "OK"); + $response->setContent("Hello"); + $response->send(); + + + +Methods +------- + +public **__construct** ([*string* $content], [*int* $code], [*string* $status]) + +Phalcon\\Http\\Response constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setStatusCode** (*unknown* $code, [*unknown* $message]) + +Sets the HTTP response code + +.. code-block:: php + + setStatusCode(404, "Not Found"); + + + + +public **getStatusCode** () + +Returns the status code + +.. code-block:: php + + getStatusCode()); + + + + +public **setHeaders** (:doc:`Phalcon\\Http\\Response\\HeadersInterface ` $headers) + +Sets a headers bag for the response externally + + + +public **getHeaders** () + +Returns headers set by the user + + + +public **setCookies** (:doc:`Phalcon\\Http\\Response\\CookiesInterface ` $cookies) + +Sets a cookies bag for the response externally + + + +public :doc:`Phalcon\\Http\\Response\\CookiesInterface ` **getCookies** () + +Returns coookies set by the user + + + +public :doc:`Phalcon\\Http\\Response ` **setHeader** (*string* $name, *string* $value) + +Overwrites a header in the response + +.. code-block:: php + + setHeader("Content-Type", "text/plain"); + + + + +public **setRawHeader** (*unknown* $header) + +Send a raw header to the response + +.. code-block:: php + + setRawHeader("HTTP/1.1 404 Not Found"); + + + + +public **resetHeaders** () + +Resets all the stablished headers + + + +public **setExpires** (*DateTime* $datetime) + +Sets a Expires header to use HTTP cache + +.. code-block:: php + + response->setExpires(new DateTime()); + + + + +public **setCache** (*unknown* $minutes) + +Sets Cache headers to use HTTP cache + +.. code-block:: php + + response->setCache(60); + + + + +public **setNotModified** () + +Sends a Not-Modified response + + + +public :doc:`Phalcon\\Http\\Response ` **setContentType** (*string* $contentType, [*string* $charset]) + +Sets the response content-type mime, optionally the charset + +.. code-block:: php + + setContentType('application/pdf'); + $response->setContentType('text/plain', 'UTF-8'); + + + + +public **setEtag** (*unknown* $etag) + +Set a custom ETag + +.. code-block:: php + + setEtag(md5(time())); + + + + +public :doc:`Phalcon\\Http\\Response ` **redirect** ([*string|array* $location], [*boolean* $externalRedirect], [*int* $statusCode]) + +Redirect by HTTP to another action or URL + +.. code-block:: php + + redirect("posts/index"); + $response->redirect("http://en.wikipedia.org", true); + $response->redirect("http://www.example.com/new-location", true, 301); + + //Making a redirection based on a named route + $response->redirect(array( + "for" => "index-lang", + "lang" => "jp", + "controller" => "index" + )); + + + + +public **setContent** (*unknown* $content) + +Sets HTTP response body + +.. code-block:: php + + setContent("

Hello!

"); + + + + +public :doc:`Phalcon\\Http\\Response ` **setJsonContent** (*mixed* $content, [*int* $jsonOptions], [*unknown* $depth]) + +Sets HTTP response body. The parameter is automatically converted to JSON + +.. code-block:: php + + setJsonContent(array("status" => "OK")); + + + + +public :doc:`Phalcon\\Http\\Response ` **appendContent** (*string* $content) + +Appends a string to the HTTP response body + + + +public **getContent** () + +Gets the HTTP response body + + + +public **isSent** () + +Check if the response is already sent + + + +public **sendHeaders** () + +Sends headers to the client + + + +public **sendCookies** () + +Sends cookies to the client + + + +public **send** () + +Prints out HTTP response to the client + + + +public :doc:`Phalcon\\Http\\Response ` **setFileToSend** (*string* $filePath, [*string* $attachmentName], [*unknown* $attachment]) + +Sets an attached file to be sent at the end of the request + + + diff --git a/id/api/Phalcon_Http_ResponseInterface.rst b/id/api/Phalcon_Http_ResponseInterface.rst new file mode 100644 index 000000000000..f0de43546694 --- /dev/null +++ b/id/api/Phalcon_Http_ResponseInterface.rst @@ -0,0 +1,96 @@ +Interface **Phalcon\\Http\\ResponseInterface** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setStatusCode** (*unknown* $code, [*unknown* $message]) + +... + + +abstract public **getHeaders** () + +... + + +abstract public **setHeader** (*unknown* $name, *unknown* $value) + +... + + +abstract public **setRawHeader** (*unknown* $header) + +... + + +abstract public **resetHeaders** () + +... + + +abstract public **setExpires** (*DateTime* $datetime) + +... + + +abstract public **setNotModified** () + +... + + +abstract public **setContentType** (*unknown* $contentType, [*unknown* $charset]) + +... + + +abstract public **redirect** ([*unknown* $location], [*unknown* $externalRedirect], [*unknown* $statusCode]) + +... + + +abstract public **setContent** (*unknown* $content) + +... + + +abstract public **setJsonContent** (*unknown* $content) + +... + + +abstract public **appendContent** (*unknown* $content) + +... + + +abstract public **getContent** () + +... + + +abstract public **sendHeaders** () + +... + + +abstract public **sendCookies** () + +... + + +abstract public **send** () + +... + + +abstract public **setFileToSend** (*unknown* $filePath, [*unknown* $attachmentName]) + +... + + diff --git a/id/api/Phalcon_Http_Response_Cookies.rst b/id/api/Phalcon_Http_Response_Cookies.rst new file mode 100644 index 000000000000..9740a479f68f --- /dev/null +++ b/id/api/Phalcon_Http_Response_Cookies.rst @@ -0,0 +1,76 @@ +Class **Phalcon\\Http\\Response\\Cookies** +========================================== + +*implements* :doc:`Phalcon\\Http\\Response\\CookiesInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class is a bag to manage the cookies A cookies bag is automatically registered as part of the 'response' service in the DI + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **useEncryption** (*unknown* $useEncryption) + +Set if cookies in the bag must be automatically encrypted/decrypted + + + +public **isUsingEncryption** () + +Returns if the bag is automatically encrypting/decrypting cookies + + + +public **set** (*unknown* $name, [*unknown* $value], [*unknown* $expire], [*unknown* $path], [*unknown* $secure], [*unknown* $domain], [*unknown* $httpOnly]) + +Sets a cookie to be sent at the end of the request This method overrides any cookie set before with the same name + + + +public **get** (*unknown* $name) + +Gets a cookie from the bag + + + +public **has** (*unknown* $name) + +Check if a cookie is defined in the bag or exists in the _COOKIE superglobal + + + +public **delete** (*unknown* $name) + +Deletes a cookie by its name This method does not removes cookies from the _COOKIE superglobal + + + +public **send** () + +Sends the cookies to the client Cookies aren't sent if headers are sent in the current request + + + +public **reset** () + +Reset set cookies + + + diff --git a/id/api/Phalcon_Http_Response_CookiesInterface.rst b/id/api/Phalcon_Http_Response_CookiesInterface.rst new file mode 100644 index 000000000000..fb0f520560cf --- /dev/null +++ b/id/api/Phalcon_Http_Response_CookiesInterface.rst @@ -0,0 +1,51 @@ +Interface **Phalcon\\Http\\Response\\CookiesInterface** +======================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **useEncryption** (*unknown* $useEncryption) + +... + + +abstract public **isUsingEncryption** () + +... + + +abstract public **set** (*unknown* $name, [*unknown* $value], [*unknown* $expire], [*unknown* $path], [*unknown* $secure], [*unknown* $domain], [*unknown* $httpOnly]) + +... + + +abstract public **get** (*unknown* $name) + +... + + +abstract public **has** (*unknown* $name) + +... + + +abstract public **delete** (*unknown* $name) + +... + + +abstract public **send** () + +... + + +abstract public **reset** () + +... + + diff --git a/id/api/Phalcon_Http_Response_Exception.rst b/id/api/Phalcon_Http_Response_Exception.rst new file mode 100644 index 000000000000..3f0da6c84e08 --- /dev/null +++ b/id/api/Phalcon_Http_Response_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Http\\Response\\Exception** +============================================ + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Http_Response_Headers.rst b/id/api/Phalcon_Http_Response_Headers.rst new file mode 100644 index 000000000000..39ecf6a1c118 --- /dev/null +++ b/id/api/Phalcon_Http_Response_Headers.rst @@ -0,0 +1,64 @@ +Class **Phalcon\\Http\\Response\\Headers** +========================================== + +*implements* :doc:`Phalcon\\Http\\Response\\HeadersInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class is a bag to manage the response headers + + +Methods +------- + +public **set** (*unknown* $name, *unknown* $value) + +Sets a header to be sent at the end of the request + + + +public **get** (*unknown* $name) + +Gets a header value from the internal bag + + + +public **setRaw** (*unknown* $header) + +Sets a raw header to be sent at the end of the request + + + +public **remove** (*unknown* $header) + +Removes a header to be sent at the end of the request + + + +public **send** () + +Sends the headers to the client + + + +public **reset** () + +Reset set headers + + + +public **toArray** () + +Returns the current headers as an array + + + +public static **__set_state** (*array* $data) + +Restore a \\Phalcon\\Http\\Response\\Headers object + + + diff --git a/id/api/Phalcon_Http_Response_HeadersInterface.rst b/id/api/Phalcon_Http_Response_HeadersInterface.rst new file mode 100644 index 000000000000..d7d345bb3f8c --- /dev/null +++ b/id/api/Phalcon_Http_Response_HeadersInterface.rst @@ -0,0 +1,41 @@ +Interface **Phalcon\\Http\\Response\\HeadersInterface** +======================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **set** (*unknown* $name, *unknown* $value) + +... + + +abstract public **get** (*unknown* $name) + +... + + +abstract public **setRaw** (*unknown* $header) + +... + + +abstract public **send** () + +... + + +abstract public **reset** () + +... + + +abstract public static **__set_state** (*array* $data) + +... + + diff --git a/id/api/Phalcon_Image.rst b/id/api/Phalcon_Image.rst new file mode 100644 index 000000000000..a459c90bb2c0 --- /dev/null +++ b/id/api/Phalcon_Image.rst @@ -0,0 +1,29 @@ +Class **Phalcon\\Image** +======================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Constants +--------- + +*integer* **NONE** + +*integer* **WIDTH** + +*integer* **HEIGHT** + +*integer* **AUTO** + +*integer* **INVERSE** + +*integer* **PRECISE** + +*integer* **TENSILE** + +*integer* **HORIZONTAL** + +*integer* **VERTICAL** + diff --git a/id/api/Phalcon_Image_Adapter.rst b/id/api/Phalcon_Image_Adapter.rst new file mode 100644 index 000000000000..bd72c409771b --- /dev/null +++ b/id/api/Phalcon_Image_Adapter.rst @@ -0,0 +1,138 @@ +Abstract class **Phalcon\\Image\\Adapter** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +All image adapters must use this class + + +Methods +------- + +public **getImage** () + +... + + +public **getRealpath** () + +... + + +public **getWidth** () + +Image width + + + +public **getHeight** () + +Image height + + + +public **getType** () + +Image type Driver dependent + + + +public **getMime** () + +Image mime type + + + +public **resize** ([*unknown* $width], [*unknown* $height], [*unknown* $master]) + +Resize the image to the given size + + + +public **liquidRescale** (*unknown* $width, *unknown* $height, [*unknown* $deltaX], [*unknown* $rigidity]) + +This method scales the images using liquid rescaling method. Only support Imagick + + + +public **crop** (*unknown* $width, *unknown* $height, [*unknown* $offsetX], [*unknown* $offsetY]) + +Crop an image to the given size + + + +public **rotate** (*unknown* $degrees) + +Rotate the image by a given amount + + + +public **flip** (*unknown* $direction) + +Flip the image along the horizontal or vertical axis + + + +public **sharpen** (*unknown* $amount) + +Sharpen the image by a given amount + + + +public **reflection** (*unknown* $height, [*unknown* $opacity], [*unknown* $fadeIn]) + +Add a reflection to an image + + + +public **watermark** (:doc:`Phalcon\\Image\\Adapter ` $watermark, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity]) + +Add a watermark to an image with the specified opacity + + + +public **text** (*unknown* $text, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity], [*unknown* $color], [*unknown* $size], [*unknown* $fontfile]) + +Add a text to an image with a specified opacity + + + +public **mask** (:doc:`Phalcon\\Image\\Adapter ` $watermark) + +Composite one image onto another + + + +public **background** (*unknown* $color, [*unknown* $opacity]) + +Set the background color of an image + + + +public **blur** (*unknown* $radius) + +Blur image + + + +public **pixelate** (*unknown* $amount) + +Pixelate image + + + +public **save** ([*unknown* $file], [*unknown* $quality]) + +Save the image + + + +public **render** ([*unknown* $ext], [*unknown* $quality]) + +Render the image and return the binary string + + + diff --git a/id/api/Phalcon_Image_AdapterInterface.rst b/id/api/Phalcon_Image_AdapterInterface.rst new file mode 100644 index 000000000000..d288b1c97561 --- /dev/null +++ b/id/api/Phalcon_Image_AdapterInterface.rst @@ -0,0 +1,81 @@ +Interface **Phalcon\\Image\\AdapterInterface** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **resize** ([*unknown* $width], [*unknown* $height], [*unknown* $master]) + +... + + +abstract public **crop** (*unknown* $width, *unknown* $height, [*unknown* $offsetX], [*unknown* $offsetY]) + +... + + +abstract public **rotate** (*unknown* $degrees) + +... + + +abstract public **flip** (*unknown* $direction) + +... + + +abstract public **sharpen** (*unknown* $amount) + +... + + +abstract public **reflection** (*unknown* $height, [*unknown* $opacity], [*unknown* $fadeIn]) + +... + + +abstract public **watermark** (:doc:`Phalcon\\Image\\Adapter ` $watermark, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity]) + +... + + +abstract public **text** (*unknown* $text, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity], [*unknown* $color], [*unknown* $size], [*unknown* $fontfile]) + +... + + +abstract public **mask** (:doc:`Phalcon\\Image\\Adapter ` $watermark) + +... + + +abstract public **background** (*unknown* $color, [*unknown* $opacity]) + +... + + +abstract public **blur** (*unknown* $radius) + +... + + +abstract public **pixelate** (*unknown* $amount) + +... + + +abstract public **save** ([*unknown* $file], [*unknown* $quality]) + +... + + +abstract public **render** ([*unknown* $ext], [*unknown* $quality]) + +... + + diff --git a/id/api/Phalcon_Image_Adapter_Gd.rst b/id/api/Phalcon_Image_Adapter_Gd.rst new file mode 100644 index 000000000000..618c6b535a87 --- /dev/null +++ b/id/api/Phalcon_Image_Adapter_Gd.rst @@ -0,0 +1,229 @@ +Class **Phalcon\\Image\\Adapter\\Gd** +===================================== + +*extends* abstract class :doc:`Phalcon\\Image\\Adapter ` + +*implements* :doc:`Phalcon\\Image\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public static **check** () + +... + + +public **__construct** (*unknown* $file, [*unknown* $width], [*unknown* $height]) + +... + + +protected **_resize** (*unknown* $width, *unknown* $height) + +... + + +protected **_crop** (*unknown* $width, *unknown* $height, *unknown* $offsetX, *unknown* $offsetY) + +... + + +protected **_rotate** (*unknown* $degrees) + +... + + +protected **_flip** (*unknown* $direction) + +... + + +protected **_sharpen** (*unknown* $amount) + +... + + +protected **_reflection** (*unknown* $height, *unknown* $opacity, *unknown* $fadeIn) + +... + + +protected **_watermark** (:doc:`Phalcon\\Image\\Adapter ` $watermark, *unknown* $offsetX, *unknown* $offsetY, *unknown* $opacity) + +... + + +protected **_text** (*unknown* $text, *unknown* $offsetX, *unknown* $offsetY, *unknown* $opacity, *unknown* $r, *unknown* $g, *unknown* $b, *unknown* $size, *unknown* $fontfile) + +... + + +protected **_mask** (:doc:`Phalcon\\Image\\Adapter ` $mask) + +... + + +protected **_background** (*unknown* $r, *unknown* $g, *unknown* $b, *unknown* $opacity) + +... + + +protected **_blur** (*unknown* $radius) + +... + + +protected **_pixelate** (*unknown* $amount) + +... + + +protected **_save** (*unknown* $file, *unknown* $quality) + +... + + +protected **_render** (*unknown* $ext, *unknown* $quality) + +... + + +protected **_create** (*unknown* $width, *unknown* $height) + +... + + +public **__destruct** () + +... + + +public **getImage** () inherited from Phalcon\\Image\\Adapter + +... + + +public **getRealpath** () inherited from Phalcon\\Image\\Adapter + +... + + +public **getWidth** () inherited from Phalcon\\Image\\Adapter + +Image width + + + +public **getHeight** () inherited from Phalcon\\Image\\Adapter + +Image height + + + +public **getType** () inherited from Phalcon\\Image\\Adapter + +Image type Driver dependent + + + +public **getMime** () inherited from Phalcon\\Image\\Adapter + +Image mime type + + + +public **resize** ([*unknown* $width], [*unknown* $height], [*unknown* $master]) inherited from Phalcon\\Image\\Adapter + +Resize the image to the given size + + + +public **liquidRescale** (*unknown* $width, *unknown* $height, [*unknown* $deltaX], [*unknown* $rigidity]) inherited from Phalcon\\Image\\Adapter + +This method scales the images using liquid rescaling method. Only support Imagick + + + +public **crop** (*unknown* $width, *unknown* $height, [*unknown* $offsetX], [*unknown* $offsetY]) inherited from Phalcon\\Image\\Adapter + +Crop an image to the given size + + + +public **rotate** (*unknown* $degrees) inherited from Phalcon\\Image\\Adapter + +Rotate the image by a given amount + + + +public **flip** (*unknown* $direction) inherited from Phalcon\\Image\\Adapter + +Flip the image along the horizontal or vertical axis + + + +public **sharpen** (*unknown* $amount) inherited from Phalcon\\Image\\Adapter + +Sharpen the image by a given amount + + + +public **reflection** (*unknown* $height, [*unknown* $opacity], [*unknown* $fadeIn]) inherited from Phalcon\\Image\\Adapter + +Add a reflection to an image + + + +public **watermark** (:doc:`Phalcon\\Image\\Adapter ` $watermark, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity]) inherited from Phalcon\\Image\\Adapter + +Add a watermark to an image with the specified opacity + + + +public **text** (*unknown* $text, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity], [*unknown* $color], [*unknown* $size], [*unknown* $fontfile]) inherited from Phalcon\\Image\\Adapter + +Add a text to an image with a specified opacity + + + +public **mask** (:doc:`Phalcon\\Image\\Adapter ` $watermark) inherited from Phalcon\\Image\\Adapter + +Composite one image onto another + + + +public **background** (*unknown* $color, [*unknown* $opacity]) inherited from Phalcon\\Image\\Adapter + +Set the background color of an image + + + +public **blur** (*unknown* $radius) inherited from Phalcon\\Image\\Adapter + +Blur image + + + +public **pixelate** (*unknown* $amount) inherited from Phalcon\\Image\\Adapter + +Pixelate image + + + +public **save** ([*unknown* $file], [*unknown* $quality]) inherited from Phalcon\\Image\\Adapter + +Save the image + + + +public **render** ([*unknown* $ext], [*unknown* $quality]) inherited from Phalcon\\Image\\Adapter + +Render the image and return the binary string + + + diff --git a/id/api/Phalcon_Image_Adapter_Imagick.rst b/id/api/Phalcon_Image_Adapter_Imagick.rst new file mode 100644 index 000000000000..7f767a71c82b --- /dev/null +++ b/id/api/Phalcon_Image_Adapter_Imagick.rst @@ -0,0 +1,273 @@ +Class **Phalcon\\Image\\Adapter\\Imagick** +========================================== + +*extends* abstract class :doc:`Phalcon\\Image\\Adapter ` + +*implements* :doc:`Phalcon\\Image\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Image manipulation support. Allows images to be resized, cropped, etc. + +.. code-block:: php + + resize(200, 200)->rotate(90)->crop(100, 100); + if ($image->save()) { + echo 'success'; + } + + + +Methods +------- + +public static **check** () + +Checks if Imagick is enabled + + + +public **__construct** (*unknown* $file, [*unknown* $width], [*unknown* $height]) + +\\Phalcon\\Image\\Adapter\\Imagick constructor + + + +protected **_resize** (*unknown* $width, *unknown* $height) + +Execute a resize. + + + +protected **_liquidRescale** (*unknown* $width, *unknown* $height, *unknown* $deltaX, *unknown* $rigidity) + +This method scales the images using liquid rescaling method. Only support Imagick + + + +protected **_crop** (*unknown* $width, *unknown* $height, *unknown* $offsetX, *unknown* $offsetY) + +Execute a crop. + + + +protected **_rotate** (*unknown* $degrees) + +Execute a rotation. + + + +protected **_flip** (*unknown* $direction) + +Execute a flip. + + + +protected **_sharpen** (*unknown* $amount) + +Execute a sharpen. + + + +protected **_reflection** (*unknown* $height, *unknown* $opacity, *unknown* $fadeIn) + +Execute a reflection. + + + +protected **_watermark** (:doc:`Phalcon\\Image\\Adapter ` $image, *unknown* $offsetX, *unknown* $offsetY, *unknown* $opacity) + +Execute a watermarking. + + + +protected **_text** (*unknown* $text, *unknown* $offsetX, *unknown* $offsetY, *unknown* $opacity, *unknown* $r, *unknown* $g, *unknown* $b, *unknown* $size, *unknown* $fontfile) + +Execute a text + + + +protected **_mask** (:doc:`Phalcon\\Image\\Adapter ` $image) + +Composite one image onto another + + + +protected **_background** (*unknown* $r, *unknown* $g, *unknown* $b, *unknown* $opacity) + +Execute a background. + + + +protected **_blur** (*unknown* $radius) + +Blur image + + + +protected **_pixelate** (*unknown* $amount) + +Pixelate image + + + +protected **_save** (*unknown* $file, *unknown* $quality) + +Execute a save. + + + +protected **_render** (*unknown* $extension, *unknown* $quality) + +Execute a render. + + + +public **__destruct** () + +Destroys the loaded image to free up resources. + + + +public **getInternalImInstance** () + +Get instance + + + +public **setResourceLimit** (*unknown* $type, *unknown* $limit) + +Sets the limit for a particular resource in megabytes + + + +public **getImage** () inherited from Phalcon\\Image\\Adapter + +... + + +public **getRealpath** () inherited from Phalcon\\Image\\Adapter + +... + + +public **getWidth** () inherited from Phalcon\\Image\\Adapter + +Image width + + + +public **getHeight** () inherited from Phalcon\\Image\\Adapter + +Image height + + + +public **getType** () inherited from Phalcon\\Image\\Adapter + +Image type Driver dependent + + + +public **getMime** () inherited from Phalcon\\Image\\Adapter + +Image mime type + + + +public **resize** ([*unknown* $width], [*unknown* $height], [*unknown* $master]) inherited from Phalcon\\Image\\Adapter + +Resize the image to the given size + + + +public **liquidRescale** (*unknown* $width, *unknown* $height, [*unknown* $deltaX], [*unknown* $rigidity]) inherited from Phalcon\\Image\\Adapter + +This method scales the images using liquid rescaling method. Only support Imagick + + + +public **crop** (*unknown* $width, *unknown* $height, [*unknown* $offsetX], [*unknown* $offsetY]) inherited from Phalcon\\Image\\Adapter + +Crop an image to the given size + + + +public **rotate** (*unknown* $degrees) inherited from Phalcon\\Image\\Adapter + +Rotate the image by a given amount + + + +public **flip** (*unknown* $direction) inherited from Phalcon\\Image\\Adapter + +Flip the image along the horizontal or vertical axis + + + +public **sharpen** (*unknown* $amount) inherited from Phalcon\\Image\\Adapter + +Sharpen the image by a given amount + + + +public **reflection** (*unknown* $height, [*unknown* $opacity], [*unknown* $fadeIn]) inherited from Phalcon\\Image\\Adapter + +Add a reflection to an image + + + +public **watermark** (:doc:`Phalcon\\Image\\Adapter ` $watermark, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity]) inherited from Phalcon\\Image\\Adapter + +Add a watermark to an image with the specified opacity + + + +public **text** (*unknown* $text, [*unknown* $offsetX], [*unknown* $offsetY], [*unknown* $opacity], [*unknown* $color], [*unknown* $size], [*unknown* $fontfile]) inherited from Phalcon\\Image\\Adapter + +Add a text to an image with a specified opacity + + + +public **mask** (:doc:`Phalcon\\Image\\Adapter ` $watermark) inherited from Phalcon\\Image\\Adapter + +Composite one image onto another + + + +public **background** (*unknown* $color, [*unknown* $opacity]) inherited from Phalcon\\Image\\Adapter + +Set the background color of an image + + + +public **blur** (*unknown* $radius) inherited from Phalcon\\Image\\Adapter + +Blur image + + + +public **pixelate** (*unknown* $amount) inherited from Phalcon\\Image\\Adapter + +Pixelate image + + + +public **save** ([*unknown* $file], [*unknown* $quality]) inherited from Phalcon\\Image\\Adapter + +Save the image + + + +public **render** ([*unknown* $ext], [*unknown* $quality]) inherited from Phalcon\\Image\\Adapter + +Render the image and return the binary string + + + diff --git a/id/api/Phalcon_Image_Exception.rst b/id/api/Phalcon_Image_Exception.rst new file mode 100644 index 000000000000..5e24416727e7 --- /dev/null +++ b/id/api/Phalcon_Image_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Image\\Exception** +=================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Kernel.rst b/id/api/Phalcon_Kernel.rst new file mode 100644 index 000000000000..b3185a735227 --- /dev/null +++ b/id/api/Phalcon_Kernel.rst @@ -0,0 +1,16 @@ +Class **Phalcon\\Kernel** +========================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public static **preComputeHashKey** (*unknown* $key) + +... + + diff --git a/id/api/Phalcon_Loader.rst b/id/api/Phalcon_Loader.rst new file mode 100644 index 000000000000..f5f2db383c77 --- /dev/null +++ b/id/api/Phalcon_Loader.rst @@ -0,0 +1,145 @@ +Class **Phalcon\\Loader** +========================= + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component helps to load your project classes automatically based on some conventions + +.. code-block:: php + + registerNamespaces(array( + 'Example\Base' => 'vendor/example/base/', + 'Example\Adapter' => 'vendor/example/adapter/', + 'Example' => 'vendor/example/' + )); + + //register autoloader + $loader->register(); + + //Requiring this class will automatically include file vendor/example/adapter/Some.php + $adapter = Example\Adapter\Some(); + + + +Methods +------- + +public **__construct** () + +Phalcon\\Loader constructor + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setExtensions** (*array* $extensions) + +Sets an array of file extensions that the loader must try in each attempt to locate the file + + + +public **getExtensions** () + +Returns the file extensions registered in the loader + + + +public **registerNamespaces** (*array* $namespaces, [*unknown* $merge]) + +Register namespaces and their related directories + + + +public **getNamespaces** () + +Returns the namespaces currently registered in the autoloader + + + +public **registerPrefixes** (*array* $prefixes, [*unknown* $merge]) + +Register directories in which "not found" classes could be found + + + +public **getPrefixes** () + +Returns the prefixes currently registered in the autoloader + + + +public **registerDirs** (*array* $directories, [*unknown* $merge]) + +Register directories in which "not found" classes could be found + + + +public **getDirs** () + +Returns the directories currently registered in the autoloader + + + +public **registerClasses** (*array* $classes, [*unknown* $merge]) + +Register classes and their locations + + + +public **getClasses** () + +Returns the class-map currently registered in the autoloader + + + +public **register** () + +Register the autoload method + + + +public **unregister** () + +Unregister the autoload method + + + +public **autoLoad** (*unknown* $className) + +Autoloads the registered classes + + + +public **getFoundPath** () + +Get the path when a class was found + + + +public **getCheckedPath** () + +Get the path the loader is checking for a path + + + diff --git a/id/api/Phalcon_Loader_Exception.rst b/id/api/Phalcon_Loader_Exception.rst new file mode 100644 index 000000000000..45e48570140e --- /dev/null +++ b/id/api/Phalcon_Loader_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Loader\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Logger.rst b/id/api/Phalcon_Logger.rst new file mode 100644 index 000000000000..c6511057768b --- /dev/null +++ b/id/api/Phalcon_Logger.rst @@ -0,0 +1,33 @@ +Abstract class **Phalcon\\Logger** +================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Constants +--------- + +*integer* **SPECIAL** + +*integer* **CUSTOM** + +*integer* **DEBUG** + +*integer* **INFO** + +*integer* **NOTICE** + +*integer* **WARNING** + +*integer* **ERROR** + +*integer* **ALERT** + +*integer* **CRITICAL** + +*integer* **EMERGENCE** + +*integer* **EMERGENCY** + diff --git a/id/api/Phalcon_Logger_Adapter.rst b/id/api/Phalcon_Logger_Adapter.rst new file mode 100644 index 000000000000..804831a7f159 --- /dev/null +++ b/id/api/Phalcon_Logger_Adapter.rst @@ -0,0 +1,110 @@ +Abstract class **Phalcon\\Logger\\Adapter** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Base class for Phalcon\\Logger adapters + + +Methods +------- + +public **setLogLevel** (*unknown* $level) + +Filters the logs sent to the handlers that are less or equal than a specific level + + + +public **getLogLevel** () + +Returns the current log level + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) + +Sets the message formatter + + + +public **begin** () + +Starts a transaction + + + +public **commit** () + +Commits the internal transaction + + + +public **rollback** () + +Rollbacks the internal transaction + + + +public **isTransaction** () + +Returns the whether the logger is currently in an active transaction or not + + + +public **critical** (*unknown* $message, [*array* $context]) + +Sends/Writes a critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) + +Sends/Writes an alert message to the log + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) + +Logs messages to the internal logger. Appends logs to the logger + + + diff --git a/id/api/Phalcon_Logger_AdapterInterface.rst b/id/api/Phalcon_Logger_AdapterInterface.rst new file mode 100644 index 000000000000..4ebb1854301e --- /dev/null +++ b/id/api/Phalcon_Logger_AdapterInterface.rst @@ -0,0 +1,91 @@ +Interface **Phalcon\\Logger\\AdapterInterface** +=============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) + +... + + +abstract public **getFormatter** () + +... + + +abstract public **setLogLevel** (*unknown* $level) + +... + + +abstract public **getLogLevel** () + +... + + +abstract public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) + +... + + +abstract public **begin** () + +... + + +abstract public **commit** () + +... + + +abstract public **rollback** () + +... + + +abstract public **close** () + +... + + +abstract public **debug** (*unknown* $message, [*array* $context]) + +... + + +abstract public **error** (*unknown* $message, [*array* $context]) + +... + + +abstract public **info** (*unknown* $message, [*array* $context]) + +... + + +abstract public **notice** (*unknown* $message, [*array* $context]) + +... + + +abstract public **warning** (*unknown* $message, [*array* $context]) + +... + + +abstract public **alert** (*unknown* $message, [*array* $context]) + +... + + +abstract public **emergency** (*unknown* $message, [*array* $context]) + +... + + diff --git a/id/api/Phalcon_Logger_Adapter_File.rst b/id/api/Phalcon_Logger_Adapter_File.rst new file mode 100644 index 000000000000..ac943602b86b --- /dev/null +++ b/id/api/Phalcon_Logger_Adapter_File.rst @@ -0,0 +1,161 @@ +Class **Phalcon\\Logger\\Adapter\\File** +======================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Adapter ` + +*implements* :doc:`Phalcon\\Logger\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Adapter to store logs in plain text files + +.. code-block:: php + + log("This is a message"); + $logger->log("This is an error", \Phalcon\Logger::ERROR); + $logger->error("This is another error"); + $logger->close(); + + + +Methods +------- + +public **getPath** () + +File Path + + + +public **__construct** (*string* $name, [*array* $options]) + +Phalcon\\Logger\\Adapter\\File constructor + + + +public **getFormatter** () + +Returns the internal formatter + + + +public **logInternal** (*unknown* $message, *unknown* $type, *unknown* $time, *array* $context) + +Writes the log to the file itself + + + +public **close** () + +Closes the logger + + + +public **__wakeup** () + +Opens the internal file handler after unserialization + + + +public **setLogLevel** (*unknown* $level) inherited from Phalcon\\Logger\\Adapter + +Filters the logs sent to the handlers that are less or equal than a specific level + + + +public **getLogLevel** () inherited from Phalcon\\Logger\\Adapter + +Returns the current log level + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) inherited from Phalcon\\Logger\\Adapter + +Sets the message formatter + + + +public **begin** () inherited from Phalcon\\Logger\\Adapter + +Starts a transaction + + + +public **commit** () inherited from Phalcon\\Logger\\Adapter + +Commits the internal transaction + + + +public **rollback** () inherited from Phalcon\\Logger\\Adapter + +Rollbacks the internal transaction + + + +public **isTransaction** () inherited from Phalcon\\Logger\\Adapter + +Returns the whether the logger is currently in an active transaction or not + + + +public **critical** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an alert message to the log + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Logs messages to the internal logger. Appends logs to the logger + + + diff --git a/id/api/Phalcon_Logger_Adapter_Firephp.rst b/id/api/Phalcon_Logger_Adapter_Firephp.rst new file mode 100644 index 000000000000..303226349b09 --- /dev/null +++ b/id/api/Phalcon_Logger_Adapter_Firephp.rst @@ -0,0 +1,141 @@ +Class **Phalcon\\Logger\\Adapter\\Firephp** +=========================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Adapter ` + +*implements* :doc:`Phalcon\\Logger\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Sends logs to FirePHP + +.. code-block:: php + + log(\Phalcon\Logger::ERROR, "This is an error"); + $logger->error("This is another error"); + + + +Methods +------- + +public :doc:`Phalcon\\Logger\\FormatterInterface ` **getFormatter** () + +Returns the internal formatter + + + +public **logInternal** (*string* $message, *int* $type, *int* $time, *array* $context) + +Writes the log to the stream itself + + + +public **close** () + +Closes the logger + + + +public **setLogLevel** (*unknown* $level) inherited from Phalcon\\Logger\\Adapter + +Filters the logs sent to the handlers that are less or equal than a specific level + + + +public **getLogLevel** () inherited from Phalcon\\Logger\\Adapter + +Returns the current log level + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) inherited from Phalcon\\Logger\\Adapter + +Sets the message formatter + + + +public **begin** () inherited from Phalcon\\Logger\\Adapter + +Starts a transaction + + + +public **commit** () inherited from Phalcon\\Logger\\Adapter + +Commits the internal transaction + + + +public **rollback** () inherited from Phalcon\\Logger\\Adapter + +Rollbacks the internal transaction + + + +public **isTransaction** () inherited from Phalcon\\Logger\\Adapter + +Returns the whether the logger is currently in an active transaction or not + + + +public **critical** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an alert message to the log + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Logs messages to the internal logger. Appends logs to the logger + + + diff --git a/id/api/Phalcon_Logger_Adapter_Stream.rst b/id/api/Phalcon_Logger_Adapter_Stream.rst new file mode 100644 index 000000000000..0a654c04bcd6 --- /dev/null +++ b/id/api/Phalcon_Logger_Adapter_Stream.rst @@ -0,0 +1,148 @@ +Class **Phalcon\\Logger\\Adapter\\Stream** +========================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Adapter ` + +*implements* :doc:`Phalcon\\Logger\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Sends logs to a valid PHP stream + +.. code-block:: php + + log("This is a message"); + $logger->log("This is an error", \Phalcon\Logger::ERROR); + $logger->error("This is another error"); + + + +Methods +------- + +public **__construct** (*string* $name, [*array* $options]) + +Phalcon\\Logger\\Adapter\\Stream constructor + + + +public **getFormatter** () + +Returns the internal formatter + + + +public **logInternal** (*unknown* $message, *unknown* $type, *unknown* $time, *array* $context) + +Writes the log to the stream itself + + + +public **close** () + +Closes the logger + + + +public **setLogLevel** (*unknown* $level) inherited from Phalcon\\Logger\\Adapter + +Filters the logs sent to the handlers that are less or equal than a specific level + + + +public **getLogLevel** () inherited from Phalcon\\Logger\\Adapter + +Returns the current log level + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) inherited from Phalcon\\Logger\\Adapter + +Sets the message formatter + + + +public **begin** () inherited from Phalcon\\Logger\\Adapter + +Starts a transaction + + + +public **commit** () inherited from Phalcon\\Logger\\Adapter + +Commits the internal transaction + + + +public **rollback** () inherited from Phalcon\\Logger\\Adapter + +Rollbacks the internal transaction + + + +public **isTransaction** () inherited from Phalcon\\Logger\\Adapter + +Returns the whether the logger is currently in an active transaction or not + + + +public **critical** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an alert message to the log + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Logs messages to the internal logger. Appends logs to the logger + + + diff --git a/id/api/Phalcon_Logger_Adapter_Syslog.rst b/id/api/Phalcon_Logger_Adapter_Syslog.rst new file mode 100644 index 000000000000..9713e6855e17 --- /dev/null +++ b/id/api/Phalcon_Logger_Adapter_Syslog.rst @@ -0,0 +1,151 @@ +Class **Phalcon\\Logger\\Adapter\\Syslog** +========================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Adapter ` + +*implements* :doc:`Phalcon\\Logger\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Sends logs to the system logger + +.. code-block:: php + + LOG_NDELAY, + 'facility' => LOG_MAIL + )); + $logger->log("This is a message"); + $logger->log("This is an error", \Phalcon\Logger::ERROR); + $logger->error("This is another error"); + + + +Methods +------- + +public **__construct** (*string* $name, [*array* $options]) + +Phalcon\\Logger\\Adapter\\Syslog constructor + + + +public **getFormatter** () + +Returns the internal formatter + + + +public **logInternal** (*string* $message, *int* $type, *int* $time, *array* $context) + +Writes the log to the stream itself + + + +public *boolean* **close** () + +Closes the logger + + + +public **setLogLevel** (*unknown* $level) inherited from Phalcon\\Logger\\Adapter + +Filters the logs sent to the handlers that are less or equal than a specific level + + + +public **getLogLevel** () inherited from Phalcon\\Logger\\Adapter + +Returns the current log level + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) inherited from Phalcon\\Logger\\Adapter + +Sets the message formatter + + + +public **begin** () inherited from Phalcon\\Logger\\Adapter + +Starts a transaction + + + +public **commit** () inherited from Phalcon\\Logger\\Adapter + +Commits the internal transaction + + + +public **rollback** () inherited from Phalcon\\Logger\\Adapter + +Rollbacks the internal transaction + + + +public **isTransaction** () inherited from Phalcon\\Logger\\Adapter + +Returns the whether the logger is currently in an active transaction or not + + + +public **critical** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Sends/Writes an alert message to the log + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) inherited from Phalcon\\Logger\\Adapter + +Logs messages to the internal logger. Appends logs to the logger + + + diff --git a/id/api/Phalcon_Logger_Exception.rst b/id/api/Phalcon_Logger_Exception.rst new file mode 100644 index 000000000000..1593dc40f233 --- /dev/null +++ b/id/api/Phalcon_Logger_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Logger\\Exception** +==================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Logger_Formatter.rst b/id/api/Phalcon_Logger_Formatter.rst new file mode 100644 index 000000000000..6bac81ee42bb --- /dev/null +++ b/id/api/Phalcon_Logger_Formatter.rst @@ -0,0 +1,26 @@ +Abstract class **Phalcon\\Logger\\Formatter** +============================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a base class for logger formatters + + +Methods +------- + +public **getTypeString** (*unknown* $type) + +Returns the string meaning of a logger constant + + + +public **interpolate** (*string* $message, [*array* $context]) + +Interpolates context values into the message placeholders + + + diff --git a/id/api/Phalcon_Logger_FormatterInterface.rst b/id/api/Phalcon_Logger_FormatterInterface.rst new file mode 100644 index 000000000000..b1c752a9e80c --- /dev/null +++ b/id/api/Phalcon_Logger_FormatterInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Logger\\FormatterInterface** +================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **format** (*unknown* $message, *unknown* $type, *unknown* $timestamp, [*unknown* $context]) + +... + + diff --git a/id/api/Phalcon_Logger_Formatter_Firephp.rst b/id/api/Phalcon_Logger_Formatter_Firephp.rst new file mode 100644 index 000000000000..c89046d5355f --- /dev/null +++ b/id/api/Phalcon_Logger_Formatter_Firephp.rst @@ -0,0 +1,60 @@ +Class **Phalcon\\Logger\\Formatter\\Firephp** +============================================= + +*extends* abstract class :doc:`Phalcon\\Logger\\Formatter ` + +*implements* :doc:`Phalcon\\Logger\\FormatterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Formats messages so that they can be sent to FirePHP + + +Methods +------- + +public **getTypeString** (*unknown* $type) + +Returns the string meaning of a logger constant + + + +public **setShowBacktrace** ([*unknown* $isShow]) + +Returns the string meaning of a logger constant + + + +public **getShowBacktrace** () + +Returns the string meaning of a logger constant + + + +public **enableLabels** ([*unknown* $isEnable]) + +Returns the string meaning of a logger constant + + + +public **labelsEnabled** () + +Returns the labels enabled + + + +public *string* **format** (*string* $message, *int* $type, *int* $timestamp, [*array* $context]) + +Applies a format to a message before sending it to the log + + + +public **interpolate** (*string* $message, [*array* $context]) inherited from Phalcon\\Logger\\Formatter + +Interpolates context values into the message placeholders + + + diff --git a/id/api/Phalcon_Logger_Formatter_Json.rst b/id/api/Phalcon_Logger_Formatter_Json.rst new file mode 100644 index 000000000000..2632c153473c --- /dev/null +++ b/id/api/Phalcon_Logger_Formatter_Json.rst @@ -0,0 +1,36 @@ +Class **Phalcon\\Logger\\Formatter\\Json** +========================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Formatter ` + +*implements* :doc:`Phalcon\\Logger\\FormatterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Formats messages using JSON encoding + + +Methods +------- + +public *string* **format** (*string* $message, *int* $type, *int* $timestamp, [*array* $context]) + +Applies a format to a message before sent it to the internal log + + + +public **getTypeString** (*unknown* $type) inherited from Phalcon\\Logger\\Formatter + +Returns the string meaning of a logger constant + + + +public **interpolate** (*string* $message, [*array* $context]) inherited from Phalcon\\Logger\\Formatter + +Interpolates context values into the message placeholders + + + diff --git a/id/api/Phalcon_Logger_Formatter_Line.rst b/id/api/Phalcon_Logger_Formatter_Line.rst new file mode 100644 index 000000000000..8457a4f13591 --- /dev/null +++ b/id/api/Phalcon_Logger_Formatter_Line.rst @@ -0,0 +1,66 @@ +Class **Phalcon\\Logger\\Formatter\\Line** +========================================== + +*extends* abstract class :doc:`Phalcon\\Logger\\Formatter ` + +*implements* :doc:`Phalcon\\Logger\\FormatterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Formats messages using an one-line string + + +Methods +------- + +public **getDateFormat** () + +Default date format + + + +public **setDateFormat** (*unknown* $dateFormat) + +Default date format + + + +public **getFormat** () + +Format applied to each message + + + +public **setFormat** (*unknown* $format) + +Format applied to each message + + + +public **__construct** ([*string* $format], [*string* $dateFormat]) + +Phalcon\\Logger\\Formatter\\Line construct + + + +public *string* **format** (*string* $message, *int* $type, *int* $timestamp, [*array* $context]) + +Applies a format to a message before sent it to the internal log + + + +public **getTypeString** (*unknown* $type) inherited from Phalcon\\Logger\\Formatter + +Returns the string meaning of a logger constant + + + +public **interpolate** (*string* $message, [*array* $context]) inherited from Phalcon\\Logger\\Formatter + +Interpolates context values into the message placeholders + + + diff --git a/id/api/Phalcon_Logger_Formatter_Syslog.rst b/id/api/Phalcon_Logger_Formatter_Syslog.rst new file mode 100644 index 000000000000..d8ce0f20c98f --- /dev/null +++ b/id/api/Phalcon_Logger_Formatter_Syslog.rst @@ -0,0 +1,36 @@ +Class **Phalcon\\Logger\\Formatter\\Syslog** +============================================ + +*extends* abstract class :doc:`Phalcon\\Logger\\Formatter ` + +*implements* :doc:`Phalcon\\Logger\\FormatterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Prepares a message to be used in a Syslog backend + + +Methods +------- + +public *array* **format** (*string* $message, *int* $type, *int* $timestamp, [*array* $context]) + +Applies a format to a message before sent it to the internal log + + + +public **getTypeString** (*unknown* $type) inherited from Phalcon\\Logger\\Formatter + +Returns the string meaning of a logger constant + + + +public **interpolate** (*string* $message, [*array* $context]) inherited from Phalcon\\Logger\\Formatter + +Interpolates context values into the message placeholders + + + diff --git a/id/api/Phalcon_Logger_Item.rst b/id/api/Phalcon_Logger_Item.rst new file mode 100644 index 000000000000..82892ab06d19 --- /dev/null +++ b/id/api/Phalcon_Logger_Item.rst @@ -0,0 +1,43 @@ +Class **Phalcon\\Logger\\Item** +=============================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents each item in a logging transaction + + +Methods +------- + +public **getType** () + +Log type + + + +public **getMessage** () + +Log message + + + +public **getTime** () + +Log timestamp + + + +public **getContext** () + +... + + +public **__construct** (*string* $message, *integer* $type, [*integer* $time], [*array* $context]) + +Phalcon\\Logger\\Item constructor + + + diff --git a/id/api/Phalcon_Logger_Multiple.rst b/id/api/Phalcon_Logger_Multiple.rst new file mode 100644 index 000000000000..13ad0ebe4a20 --- /dev/null +++ b/id/api/Phalcon_Logger_Multiple.rst @@ -0,0 +1,90 @@ +Class **Phalcon\\Logger\\Multiple** +=================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Handles multiples logger handlers + + +Methods +------- + +public **getLoggers** () + +... + + +public **getFormatter** () + +... + + +public **push** (:doc:`Phalcon\\Logger\\AdapterInterface ` $logger) + +Pushes a logger to the logger tail + + + +public **setFormatter** (:doc:`Phalcon\\Logger\\FormatterInterface ` $formatter) + +Sets a global formatter + + + +public **log** (*unknown* $type, [*unknown* $message], [*array* $context]) + +Sends a message to each registered logger + + + +public **critical** (*unknown* $message, [*array* $context]) + +Sends/Writes an critical message to the log + + + +public **emergency** (*unknown* $message, [*array* $context]) + +Sends/Writes an emergency message to the log + + + +public **debug** (*unknown* $message, [*array* $context]) + +Sends/Writes a debug message to the log + + + +public **error** (*unknown* $message, [*array* $context]) + +Sends/Writes an error message to the log + + + +public **info** (*unknown* $message, [*array* $context]) + +Sends/Writes an info message to the log + + + +public **notice** (*unknown* $message, [*array* $context]) + +Sends/Writes a notice message to the log + + + +public **warning** (*unknown* $message, [*array* $context]) + +Sends/Writes a warning message to the log + + + +public **alert** (*unknown* $message, [*array* $context]) + +Sends/Writes an alert message to the log + + + diff --git a/id/api/Phalcon_Mvc_Application.rst b/id/api/Phalcon_Mvc_Application.rst new file mode 100644 index 000000000000..a0a889566479 --- /dev/null +++ b/id/api/Phalcon_Mvc_Application.rst @@ -0,0 +1,147 @@ +Class **Phalcon\\Mvc\\Application** +=================================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component encapsulates all the complex operations behind instantiating every component needed and integrating it with the rest to allow the MVC pattern to operate as desired. + +.. code-block:: php + + registerModules(array( + 'frontend' => array( + 'className' => 'Multiple\Frontend\Module', + 'path' => '../apps/frontend/Module.php' + ), + 'backend' => array( + 'className' => 'Multiple\Backend\Module', + 'path' => '../apps/backend/Module.php' + ) + )); + } + } + + $application = new Application(); + $application->main(); + + + +Methods +------- + +public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + + + + + +public **useImplicitView** (*unknown* $implicitView) + +By default. The view is implicitly buffering all the output You can full disable the view component using this method + + + +public **registerModules** (*array* $modules, [*unknown* $merge]) + +Register an array of modules present in the application + +.. code-block:: php + + registerModules(array( + 'frontend' => array( + 'className' => 'Multiple\Frontend\Module', + 'path' => '../apps/frontend/Module.php' + ), + 'backend' => array( + 'className' => 'Multiple\Backend\Module', + 'path' => '../apps/backend/Module.php' + ) + )); + + + + +public *array* **getModules** () + +Return the modules registered in the application + + + +public *array|object* **getModule** (*string* $name) + +Gets the module definition registered in the application via module name + + + +public **setDefaultModule** (*unknown* $defaultModule) + +Sets the module name to be used if the router doesn't return a valid module + + + +public **getDefaultModule** () + +Returns the default module name + + + +public :doc:`Phalcon\\Http\\ResponseInterface ` \|boolean **handle** ([*string* $uri]) + +Handles a MVC request + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get diff --git a/id/api/Phalcon_Mvc_Application_Exception.rst b/id/api/Phalcon_Mvc_Application_Exception.rst new file mode 100644 index 000000000000..c593fe91d8d9 --- /dev/null +++ b/id/api/Phalcon_Mvc_Application_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Application\\Exception** +============================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Collection.rst b/id/api/Phalcon_Mvc_Collection.rst new file mode 100644 index 000000000000..b97019326c48 --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection.rst @@ -0,0 +1,464 @@ +Abstract class **Phalcon\\Mvc\\Collection** +=========================================== + +*implements* :doc:`Phalcon\\Mvc\\EntityInterface `, :doc:`Phalcon\\Mvc\\CollectionInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, Serializable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component implements a high level abstraction for NoSQL databases which works with documents + + +Constants +--------- + +*integer* **OP_NONE** + +*integer* **OP_CREATE** + +*integer* **OP_UPDATE** + +*integer* **OP_DELETE** + +Methods +------- + +final public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector], [:doc:`Phalcon\\Mvc\\Collection\\ManagerInterface ` $modelsManager]) + +Phalcon\\Mvc\\Collection constructor + + + +public **setId** (*mixed* $id) + +Sets a value for the _id property, creates a MongoId object if needed + + + +public *\MongoId* **getId** () + +Returns the value of the _id property + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injection container + + + +public **getDI** () + +Returns the dependency injection container + + + +protected **setEventsManager** (:doc:`Phalcon\\Mvc\\Collection\\ManagerInterface ` $eventsManager) + +Sets a custom events manager + + + +protected **getEventsManager** () + +Returns the custom events manager + + + +public **getCollectionManager** () + +Returns the models manager related to the entity instance + + + +public **getReservedAttributes** () + +Returns an array with reserved properties that cannot be part of the insert/update + + + +protected **useImplicitObjectIds** (*unknown* $useImplicitObjectIds) + +Sets if a model must use implicit objects ids + + + +protected **setSource** (*unknown* $source) + +Sets collection name which model should be mapped + + + +public **getSource** () + +Returns collection name mapped in the model + + + +public **setConnectionService** (*unknown* $connectionService) + +Sets the DependencyInjection connection service name + + + +public **getConnectionService** () + +Returns DependencyInjection connection service + + + +public *\MongoDb* **getConnection** () + +Retrieves a database connection + + + +public *mixed* **readAttribute** (*string* $attribute) + +Reads an attribute value by its name + +.. code-block:: php + + readAttribute('name'); + + + + +public **writeAttribute** (*string* $attribute, *mixed* $value) + +Writes an attribute value by its name + +.. code-block:: php + + writeAttribute('name', 'Rosey'); + + + + +public static **cloneResult** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $collection, *array* $document) + +Returns a cloned collection + + + +protected static *array* **_getResultset** (*array* $params, :doc:`Phalcon\\Mvc\\Collection ` $collection, *\MongoDb* $connection, *boolean* $unique) + +Returns a collection resultset + + + +protected static *int* **_getGroupResultset** (*array* $params, :doc:`Phalcon\\Mvc\\Collection ` $collection, *\MongoDb* $connection) + +Perform a count over a resultset + + + +final protected *boolean* **_preSave** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, *boolean* $disableEvents, *boolean* $exists) + +Executes internal hooks before save a document + + + +final protected **_postSave** (*unknown* $disableEvents, *unknown* $success, *unknown* $exists) + +Executes internal events after save a document + + + +protected **validate** (:doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` $validator) + +Executes validators on every validation call + +.. code-block:: php + + validate(new ExclusionIn(array( + 'field' => 'status', + 'domain' => array('A', 'I') + ))); + if (this->validationHasFailed() == true) { + return false; + } + } + + } + + + + +public **validationHasFailed** () + +Check whether validation process has generated any messages + +.. code-block:: php + + validate(new ExclusionIn(array( + 'field' => 'status', + 'domain' => array('A', 'I') + ))); + if (this->validationHasFailed() == true) { + return false; + } + } + + } + + + + +public **fireEvent** (*unknown* $eventName) + +Fires an internal event + + + +public **fireEventCancel** (*unknown* $eventName) + +Fires an internal event that cancels the operation + + + +protected **_cancelOperation** (*unknown* $disableEvents) + +Cancel the current operation + + + +protected *boolean* **_exists** (*\MongoCollection* $collection) + +Checks if the document exists in the collection + + + +public **getMessages** () + +Returns all the validation messages + +.. code-block:: php + + type = 'mechanical'; + $robot->name = 'Astro Boy'; + $robot->year = 1952; + if ($robot->save() == false) { + echo "Umh, We can't store robots right now "; + foreach ($robot->getMessages() as message) { + echo message; + } + } else { + echo "Great, a new robot was saved successfully!"; + } + + + + +public **appendMessage** (:doc:`Phalcon\\Mvc\\Model\\MessageInterface ` $message) + +Appends a customized message on the validation process + +.. code-block:: php + + name == 'Peter') { + message = new Message("Sorry, but a robot cannot be named Peter"); + $this->appendMessage(message); + } + } + } + + + + +public **save** () + +Creates/Updates a collection based on the values in the attributes + + + +public static :doc:`Phalcon\\Mvc\\Collection ` **findById** (*string|\MongoId* $id) + +Find a document by its id (_id) + + + +public static **findFirst** ([*array* $parameters]) + +Allows to query the first record that match the specified conditions + +.. code-block:: php + + name, "\n"; + + //What's the first mechanical robot in robots table? + $robot = Robots::findFirst(array( + array("type" => "mechanical") + )); + echo "The first mechanical robot name is ", $robot->name, "\n"; + + //Get first virtual robot ordered by name + $robot = Robots::findFirst(array( + array("type" => "mechanical"), + "order" => array("name" => 1) + )); + echo "The first virtual robot name is ", $robot->name, "\n"; + + + + +public static **find** ([*array* $parameters]) + +Allows to query a set of records that match the specified conditions + +.. code-block:: php + + "mechanical") + )); + echo "There are ", count(robots), "\n"; + + //Get and print virtual robots ordered by name + $robots = Robots::findFirst(array( + array("type" => "virtual"), + "order" => array("name" => 1) + )); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + //Get first 100 virtual robots ordered by name + $robots = Robots::find(array( + array("type" => "virtual"), + "order" => array("name" => 1), + "limit" => 100 + )); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + + + +public static **count** ([*array* $parameters]) + +Perform a count over a collection + +.. code-block:: php + + delete(); + + foreach (Robots::find() as $robot) { + $robot->delete(); + } + + + + +protected **addBehavior** (:doc:`Phalcon\\Mvc\\Collection\\BehaviorInterface ` $behavior) + +Sets up a behavior in a collection + + + +public **skipOperation** (*unknown* $skip) + +Skips the current operation forcing a success state + + + +public **toArray** () + +Returns the instance as an array representation + +.. code-block:: php + + toArray()); + + + + +public **serialize** () + +Serializes the object ignoring connections or protected properties + + + +public **unserialize** (*unknown* $data) + +Unserializes the object from a serialized string + + + diff --git a/id/api/Phalcon_Mvc_CollectionInterface.rst b/id/api/Phalcon_Mvc_CollectionInterface.rst new file mode 100644 index 000000000000..1e8df63a5f5e --- /dev/null +++ b/id/api/Phalcon_Mvc_CollectionInterface.rst @@ -0,0 +1,101 @@ +Interface **Phalcon\\Mvc\\CollectionInterface** +=============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setId** (*unknown* $id) + +... + + +abstract public **getId** () + +... + + +abstract public **getReservedAttributes** () + +... + + +abstract public **getSource** () + +... + + +abstract public **setConnectionService** (*unknown* $connectionService) + +... + + +abstract public **getConnection** () + +... + + +abstract public static **cloneResult** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $collection, *array* $document) + +... + + +abstract public **fireEvent** (*unknown* $eventName) + +... + + +abstract public **fireEventCancel** (*unknown* $eventName) + +... + + +abstract public **validationHasFailed** () + +... + + +abstract public **getMessages** () + +... + + +abstract public **appendMessage** (:doc:`Phalcon\\Mvc\\Model\\MessageInterface ` $message) + +... + + +abstract public **save** () + +... + + +abstract public static **findById** (*unknown* $id) + +... + + +abstract public static **findFirst** ([*array* $parameters]) + +... + + +abstract public static **find** ([*array* $parameters]) + +... + + +abstract public static **count** ([*array* $parameters]) + +... + + +abstract public **delete** () + +... + + diff --git a/id/api/Phalcon_Mvc_Collection_Behavior.rst b/id/api/Phalcon_Mvc_Collection_Behavior.rst new file mode 100644 index 000000000000..7c56c1083306 --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Behavior.rst @@ -0,0 +1,44 @@ +Abstract class **Phalcon\\Mvc\\Collection\\Behavior** +===================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is an optional base class for ORM behaviors + + +Methods +------- + +public **__construct** ([*array* $options]) + + + + + +protected **mustTakeAction** (*unknown* $eventName) + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) + +Returns the behavior options related to an event + + + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +This method receives the notifications from the EventsManager + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $method, [*unknown* $arguments]) + +Acts as fallbacks when a missing method is called on the collection + + + diff --git a/id/api/Phalcon_Mvc_Collection_BehaviorInterface.rst b/id/api/Phalcon_Mvc_Collection_BehaviorInterface.rst new file mode 100644 index 000000000000..21ffdd9cdbef --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_BehaviorInterface.rst @@ -0,0 +1,26 @@ +Interface **Phalcon\\Mvc\\Collection\\BehaviorInterface** +========================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** ([*unknown* $options]) + +... + + +abstract public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\CollectionInterface ` $collection) + +... + + +abstract public **missingMethod** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $collection, *unknown* $method, [*unknown* $arguments]) + +... + + diff --git a/id/api/Phalcon_Mvc_Collection_Behavior_SoftDelete.rst b/id/api/Phalcon_Mvc_Collection_Behavior_SoftDelete.rst new file mode 100644 index 000000000000..4c552cdbd52f --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Behavior_SoftDelete.rst @@ -0,0 +1,48 @@ +Class **Phalcon\\Mvc\\Collection\\Behavior\\SoftDelete** +======================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Collection\\Behavior ` + +*implements* :doc:`Phalcon\\Mvc\\Collection\\BehaviorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Instead of permanently delete a record it marks the record as deleted changing the value of a flag column + + +Methods +------- + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Listens for notifications from the models manager + + + +public **__construct** ([*array* $options]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Phalcon\\Mvc\\Collection\\Behavior + + + +protected **mustTakeAction** (*unknown* $eventName) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Returns the behavior options related to an event + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $method, [*unknown* $arguments]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Acts as fallbacks when a missing method is called on the collection + + + diff --git a/id/api/Phalcon_Mvc_Collection_Behavior_Timestampable.rst b/id/api/Phalcon_Mvc_Collection_Behavior_Timestampable.rst new file mode 100644 index 000000000000..01671d8cf17f --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Behavior_Timestampable.rst @@ -0,0 +1,48 @@ +Class **Phalcon\\Mvc\\Collection\\Behavior\\Timestampable** +=========================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Collection\\Behavior ` + +*implements* :doc:`Phalcon\\Mvc\\Collection\\BehaviorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to automatically update a model’s attribute saving the datetime when a record is created or updated + + +Methods +------- + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Listens for notifications from the models manager + + + +public **__construct** ([*array* $options]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Phalcon\\Mvc\\Collection\\Behavior + + + +protected **mustTakeAction** (*unknown* $eventName) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Returns the behavior options related to an event + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $method, [*unknown* $arguments]) inherited from Phalcon\\Mvc\\Collection\\Behavior + +Acts as fallbacks when a missing method is called on the collection + + + diff --git a/id/api/Phalcon_Mvc_Collection_Document.rst b/id/api/Phalcon_Mvc_Collection_Document.rst new file mode 100644 index 000000000000..a5aa606bd787 --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Document.rst @@ -0,0 +1,72 @@ +Class **Phalcon\\Mvc\\Collection\\Document** +============================================ + +*implements* :doc:`Phalcon\\Mvc\\EntityInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows Phalcon\\Mvc\\Collection to return rows without an associated entity. This objects implements the ArrayAccess interface to allow access the object as object->x or array[x]. + + +Methods +------- + +public *boolean* **offsetExists** (*int* $index) + +Checks whether an offset exists in the document + + + +public **offsetGet** (*unknown* $index) + +Returns the value of a field using the ArrayAccess interfase + + + +public **offsetSet** (*unknown* $index, *unknown* $value) + +Change a value using the ArrayAccess interface + + + +public **offsetUnset** (*string* $offset) + +Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public *mixed* **readAttribute** (*string* $attribute) + +Reads an attribute value by its name + +.. code-block:: php + + readAttribute('name'); + + + + +public **writeAttribute** (*string* $attribute, *mixed* $value) + +Writes an attribute value by its name + +.. code-block:: php + + writeAttribute('name', 'Rosey'); + + + + +public *array* **toArray** () + +Returns the instance as an array representation + + + diff --git a/id/api/Phalcon_Mvc_Collection_Exception.rst b/id/api/Phalcon_Mvc_Collection_Exception.rst new file mode 100644 index 000000000000..062baa57a02f --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Collection\\Exception** +============================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Collection_Manager.rst b/id/api/Phalcon_Mvc_Collection_Manager.rst new file mode 100644 index 000000000000..2cdd53993096 --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_Manager.rst @@ -0,0 +1,125 @@ +Class **Phalcon\\Mvc\\Collection\\Manager** +=========================================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This components controls the initialization of models, keeping record of relations between the different models of the application. A CollectionManager is injected to a model via a Dependency Injector Container such as Phalcon\\Di. + +.. code-block:: php + + set('collectionManager', function(){ + return new \Phalcon\Mvc\Collection\Manager(); + }); + + $robot = new Robots($di); + + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the event manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setCustomEventsManager** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, :doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets a custom events manager for a specific model + + + +public :doc:`Phalcon\\Events\\ManagerInterface ` **getCustomEventsManager** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Returns a custom events manager related to a model + + + +public **initialize** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Initializes a model in the models manager + + + +public **isInitialized** (*unknown* $modelName) + +Check whether a model is already initialized + + + +public **getLastInitialized** () + +Get the latest initialized model + + + +public **setConnectionService** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $connectionService) + +Sets a connection service for a specific model + + + +public **useImplicitObjectIds** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $useImplicitObjectIds) + +Sets whether a model must use implicit objects ids + + + +public **isUsingImplicitObjectIds** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Checks if a model is using implicit object ids + + + +public *\Mongo* **getConnection** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Returns the connection related to a model + + + +public **notifyEvent** (*unknown* $eventName, :doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +Receives events generated in the models and dispatches them to a events-manager if available Notify the behaviors that are listening in the model + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $eventName, *unknown* $data) + +Dispatch a event to the listeners and behaviors This method expects that the endpoint listeners/behaviors returns true meaning that a least one was implemented + + + +public **addBehavior** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, :doc:`Phalcon\\Mvc\\Collection\\BehaviorInterface ` $behavior) + +Binds a behavior to a model + + + diff --git a/id/api/Phalcon_Mvc_Collection_ManagerInterface.rst b/id/api/Phalcon_Mvc_Collection_ManagerInterface.rst new file mode 100644 index 000000000000..4b4cea93242b --- /dev/null +++ b/id/api/Phalcon_Mvc_Collection_ManagerInterface.rst @@ -0,0 +1,66 @@ +Interface **Phalcon\\Mvc\\Collection\\ManagerInterface** +======================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setCustomEventsManager** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, :doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +... + + +abstract public **getCustomEventsManager** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +... + + +abstract public **initialize** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +... + + +abstract public **isInitialized** (*unknown* $modelName) + +... + + +abstract public **getLastInitialized** () + +... + + +abstract public **setConnectionService** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $connectionService) + +... + + +abstract public **useImplicitObjectIds** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, *unknown* $useImplicitObjectIds) + +... + + +abstract public **isUsingImplicitObjectIds** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +... + + +abstract public **getConnection** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +... + + +abstract public **notifyEvent** (*unknown* $eventName, :doc:`Phalcon\\Mvc\\CollectionInterface ` $model) + +... + + +abstract public **addBehavior** (:doc:`Phalcon\\Mvc\\CollectionInterface ` $model, :doc:`Phalcon\\Mvc\\Collection\\BehaviorInterface ` $behavior) + +... + + diff --git a/id/api/Phalcon_Mvc_Controller.rst b/id/api/Phalcon_Mvc_Controller.rst new file mode 100644 index 000000000000..57af87fc7aff --- /dev/null +++ b/id/api/Phalcon_Mvc_Controller.rst @@ -0,0 +1,83 @@ +Abstract class **Phalcon\\Mvc\\Controller** +=========================================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\ControllerInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Every application controller should extend this class that encapsulates all the controller functionality The controllers provide the “flow” between models and views. Controllers are responsible for processing the incoming requests from the web browser, interrogating the models for data, and passing that data on to the views for presentation. + +.. code-block:: php + + dispatcher->forward(array('controller' => 'people', 'action' => 'index')); + } + + } + + + +Methods +------- + +final public **__construct** () + +Phalcon\\Mvc\\Controller constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_ControllerInterface.rst b/id/api/Phalcon_Mvc_ControllerInterface.rst new file mode 100644 index 000000000000..642a25751859 --- /dev/null +++ b/id/api/Phalcon_Mvc_ControllerInterface.rst @@ -0,0 +1,8 @@ +Interface **Phalcon\\Mvc\\ControllerInterface** +=============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + diff --git a/id/api/Phalcon_Mvc_Dispatcher.rst b/id/api/Phalcon_Mvc_Dispatcher.rst new file mode 100644 index 000000000000..07b0e07a5456 --- /dev/null +++ b/id/api/Phalcon_Mvc_Dispatcher.rst @@ -0,0 +1,291 @@ +Class **Phalcon\\Mvc\\Dispatcher** +================================== + +*extends* abstract class :doc:`Phalcon\\Dispatcher ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\DispatcherInterface `, :doc:`Phalcon\\Mvc\\DispatcherInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Dispatching is the process of taking the request object, extracting the module name, controller name, action name, and optional parameters contained in it, and then instantiating a controller and calling an action of that controller. + +.. code-block:: php + + setDI($di); + + $dispatcher->setControllerName('posts'); + $dispatcher->setActionName('index'); + $dispatcher->setParams(array()); + + $controller = $dispatcher->dispatch(); + + + +Constants +--------- + +*integer* **EXCEPTION_NO_DI** + +*integer* **EXCEPTION_CYCLIC_ROUTING** + +*integer* **EXCEPTION_HANDLER_NOT_FOUND** + +*integer* **EXCEPTION_INVALID_HANDLER** + +*integer* **EXCEPTION_INVALID_PARAMS** + +*integer* **EXCEPTION_ACTION_NOT_FOUND** + +Methods +------- + +public **setControllerSuffix** (*unknown* $controllerSuffix) + +Sets the default controller suffix + + + +public **setDefaultController** (*unknown* $controllerName) + +Sets the default controller name + + + +public **setControllerName** (*unknown* $controllerName) + +Sets the controller name to be dispatched + + + +public **getControllerName** () + +Gets last dispatched controller name + + + +public **getPreviousControllerName** () + +Gets previous dispatched controller name + + + +public **getPreviousActionName** () + +Gets previous dispatched action name + + + +protected **_throwDispatchException** (*unknown* $message, [*unknown* $exceptionCode]) + +Throws an internal exception + + + +protected **_handleException** (*Exception* $exception) + +Handles a user exception + + + +public **getControllerClass** () + +Possible controller class name that will be located to dispatch the request + + + +public **getLastController** () + +Returns the lastest dispatched controller + + + +public **getActiveController** () + +Returns the active controller in the dispatcher + + + +public **__construct** () inherited from Phalcon\\Dispatcher + +Phalcon\\Dispatcher constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Dispatcher + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Dispatcher + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Dispatcher + +Sets the events manager + + + +public **getEventsManager** () inherited from Phalcon\\Dispatcher + +Returns the internal event manager + + + +public **setActionSuffix** (*unknown* $actionSuffix) inherited from Phalcon\\Dispatcher + +Sets the default action suffix + + + +public **setModuleName** (*unknown* $moduleName) inherited from Phalcon\\Dispatcher + +Sets the module where the controller is (only informative) + + + +public **getModuleName** () inherited from Phalcon\\Dispatcher + +Gets the module where the controller class is + + + +public **setNamespaceName** (*unknown* $namespaceName) inherited from Phalcon\\Dispatcher + +Sets the namespace where the controller class is + + + +public **getNamespaceName** () inherited from Phalcon\\Dispatcher + +Gets a namespace to be prepended to the current handler name + + + +public **setDefaultNamespace** (*unknown* $namespaceName) inherited from Phalcon\\Dispatcher + +Sets the default namespace + + + +public **getDefaultNamespace** () inherited from Phalcon\\Dispatcher + +Returns the default namespace + + + +public **setDefaultAction** (*unknown* $actionName) inherited from Phalcon\\Dispatcher + +Sets the default action name + + + +public **setActionName** (*unknown* $actionName) inherited from Phalcon\\Dispatcher + +Sets the action name to be dispatched + + + +public **getActionName** () inherited from Phalcon\\Dispatcher + +Gets the latest dispatched action name + + + +public **setParams** (*array* $params) inherited from Phalcon\\Dispatcher + +Sets action params to be dispatched + + + +public **getParams** () inherited from Phalcon\\Dispatcher + +Gets action params + + + +public **setParam** (*mixed* $param, *mixed* $value) inherited from Phalcon\\Dispatcher + +Set a param by its name or numeric index + + + +public *mixed* **getParam** (*mixed* $param, [*string|array* $filters], [*mixed* $defaultValue]) inherited from Phalcon\\Dispatcher + +Gets a param by its name or numeric index + + + +public **getActiveMethod** () inherited from Phalcon\\Dispatcher + +Returns the current method to be/executed in the dispatcher + + + +public **isFinished** () inherited from Phalcon\\Dispatcher + +Checks if the dispatch loop is finished or has more pendent controllers/tasks to dispatch + + + +public **setReturnedValue** (*mixed* $value) inherited from Phalcon\\Dispatcher + +Sets the latest returned value by an action manually + + + +public *mixed* **getReturnedValue** () inherited from Phalcon\\Dispatcher + +Returns value returned by the lastest dispatched action + + + +public *object* **dispatch** () inherited from Phalcon\\Dispatcher + +Dispatches a handle action taking into account the routing parameters + + + +public **forward** (*array* $forward) inherited from Phalcon\\Dispatcher + +Forwards the execution flow to another controller/action Dispatchers are unique per module. Forwarding between modules is not allowed + +.. code-block:: php + + dispatcher->forward(array("controller" => "posts", "action" => "index")); + + + + +public **wasForwarded** () inherited from Phalcon\\Dispatcher + +Check if the current executed action was forwarded by another one + + + +public **getHandlerClass** () inherited from Phalcon\\Dispatcher + +Possible class name that will be located to dispatch the request + + + +protected **_resolveEmptyProperties** () inherited from Phalcon\\Dispatcher + +Set empty properties to their defaults (where defaults are available) + + + diff --git a/id/api/Phalcon_Mvc_DispatcherInterface.rst b/id/api/Phalcon_Mvc_DispatcherInterface.rst new file mode 100644 index 000000000000..381b4979eb76 --- /dev/null +++ b/id/api/Phalcon_Mvc_DispatcherInterface.rst @@ -0,0 +1,118 @@ +Interface **Phalcon\\Mvc\\DispatcherInterface** +=============================================== + +*implements* :doc:`Phalcon\\DispatcherInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setControllerSuffix** (*unknown* $controllerSuffix) + +... + + +abstract public **setDefaultController** (*unknown* $controllerName) + +... + + +abstract public **setControllerName** (*unknown* $controllerName) + +... + + +abstract public **getControllerName** () + +... + + +abstract public **getLastController** () + +... + + +abstract public **getActiveController** () + +... + + +abstract public **setActionSuffix** (*unknown* $actionSuffix) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setDefaultNamespace** (*unknown* $defaultNamespace) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setDefaultAction** (*unknown* $actionName) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setNamespaceName** (*unknown* $namespaceName) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setModuleName** (*unknown* $moduleName) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setActionName** (*unknown* $actionName) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **getActionName** () inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setParams** (*unknown* $params) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **getParams** () inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **setParam** (*unknown* $param, *unknown* $value) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **getParam** (*unknown* $param, [*unknown* $filters]) inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **isFinished** () inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **getReturnedValue** () inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **dispatch** () inherited from Phalcon\\DispatcherInterface + +... + + +abstract public **forward** (*unknown* $forward) inherited from Phalcon\\DispatcherInterface + +... + + diff --git a/id/api/Phalcon_Mvc_Dispatcher_Exception.rst b/id/api/Phalcon_Mvc_Dispatcher_Exception.rst new file mode 100644 index 000000000000..fe7500f50a53 --- /dev/null +++ b/id/api/Phalcon_Mvc_Dispatcher_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Dispatcher\\Exception** +============================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_EntityInterface.rst b/id/api/Phalcon_Mvc_EntityInterface.rst new file mode 100644 index 000000000000..fd389983cdf9 --- /dev/null +++ b/id/api/Phalcon_Mvc_EntityInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Mvc\\EntityInterface** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **readAttribute** (*unknown* $attribute) + +... + + +abstract public **writeAttribute** (*unknown* $attribute, *unknown* $value) + +... + + diff --git a/id/api/Phalcon_Mvc_Micro.rst b/id/api/Phalcon_Mvc_Micro.rst new file mode 100644 index 000000000000..01c94829f7a4 --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro.rst @@ -0,0 +1,255 @@ +Class **Phalcon\\Mvc\\Micro** +============================= + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +With Phalcon you can create "Micro-Framework like" applications. By doing this, you only need to write a minimal amount of code to create a PHP application. Micro applications are suitable to small applications, APIs and prototypes in a practical way. + +.. code-block:: php + + get('/say/welcome/{name}', function ($name) { + echo "

Welcome $name!

"; + }); + + $app->handle(); + + + +Methods +------- + +public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Phalcon\\Mvc\\Micro constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **map** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler without any HTTP method constraint + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **get** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is GET + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **post** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is POST + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **put** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is PUT + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **patch** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is PATCH + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **head** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is HEAD + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **delete** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is DELETE + + + +public :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` **options** (*string* $routePattern, *callable* $handler) + +Maps a route to a handler that only matches if the HTTP method is OPTIONS + + + +public **mount** (:doc:`Phalcon\\Mvc\\Micro\\CollectionInterface ` $collection) + +Mounts a collection of handlers + + + +public :doc:`Phalcon\\Mvc\\Micro ` **notFound** (*callable* $handler) + +Sets a handler that will be called when the router doesn't match any of the defined routes + + + +public :doc:`Phalcon\\Mvc\\Micro ` **error** (*callable* $handler) + +Sets a handler that will be called when an exception is thrown handling the route + + + +public **getRouter** () + +Returns the internal router used by the application + + + +public :doc:`Phalcon\\Di\\ServiceInterface ` **setService** (*string* $serviceName, *mixed* $definition, [*boolean* $shared]) + +Sets a service from the DI + + + +public **hasService** (*unknown* $serviceName) + +Checks if a service is registered in the DI + + + +public *object* **getService** (*string* $serviceName) + +Obtains a service from the DI + + + +public *mixed* **getSharedService** (*string* $serviceName) + +Obtains a shared service from the DI + + + +public *mixed* **handle** ([*string* $uri]) + +Handle the whole request + + + +public **stop** () + +Stops the middleware execution avoiding than other middlewares be executed + + + +public **setActiveHandler** (*callable* $activeHandler) + +Sets externally the handler that must be called by the matched route + + + +public *callable* **getActiveHandler** () + +Return the handler that will be called for the matched route + + + +public *mixed* **getReturnedValue** () + +Returns the value returned by the executed handler + + + +public *boolean* **offsetExists** (*string* $alias) + +Check if a service is registered in the internal services container using the array syntax + + + +public **offsetSet** (*string* $alias, *mixed* $definition) + +Allows to register a shared service in the internal services container using the array syntax + +.. code-block:: php + + ` **before** (*callable* $handler) + +Appends a before middleware to be called before execute the route + + + +public :doc:`Phalcon\\Mvc\\Micro ` **after** (*callable* $handler) + +Appends an 'after' middleware to be called after execute the route + + + +public :doc:`Phalcon\\Mvc\\Micro ` **finish** (*callable* $handler) + +Appends a 'finish' middleware to be called when the request is finished + + + +public *array* **getHandlers** () + +Returns the internal handlers attached to the application + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_Micro_Collection.rst b/id/api/Phalcon_Mvc_Micro_Collection.rst new file mode 100644 index 000000000000..51272c4a82b1 --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro_Collection.rst @@ -0,0 +1,127 @@ +Class **Phalcon\\Mvc\\Micro\\Collection** +========================================= + +*implements* :doc:`Phalcon\\Mvc\\Micro\\CollectionInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Groups Micro-Mvc handlers as controllers + +.. code-block:: php + + setHandler(new PostsController()); + + $collection->get('/posts/edit/{id}', 'edit'); + + $app->mount($collection); + + + +Methods +------- + +protected **_addMap** (*string|array* $method, *string* $routePattern, *mixed* $handler, *string* $name) + +Internal function to add a handler to the group + + + +public **setPrefix** (*unknown* $prefix) + +Sets a prefix for all routes added to the collection + + + +public **getPrefix** () + +Returns the collection prefix if any + + + +public *array* **getHandlers** () + +Returns the registered handlers + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **setHandler** (*mixed* $handler, [*boolean* $lazy]) + +Sets the main handler + + + +public **setLazy** (*unknown* $lazy) + +Sets if the main handler must be lazy loaded + + + +public **isLazy** () + +Returns if the main handler must be lazy loaded + + + +public *mixed* **getHandler** () + +Returns the main handler + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **map** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **get** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is GET + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **post** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is POST + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **put** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is PUT + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **patch** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is PATCH + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **head** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is HEAD + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **delete** (*string* $routePattern, *callable* $handler, [*string* $name]) + +Maps a route to a handler that only matches if the HTTP method is DELETE + + + +public :doc:`Phalcon\\Mvc\\Micro\\Collection ` **options** (*string* $routePattern, *callable* $handler, [*unknown* $name]) + +Maps a route to a handler that only matches if the HTTP method is OPTIONS + + + diff --git a/id/api/Phalcon_Mvc_Micro_CollectionInterface.rst b/id/api/Phalcon_Mvc_Micro_CollectionInterface.rst new file mode 100644 index 000000000000..71e9f8c1404a --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro_CollectionInterface.rst @@ -0,0 +1,86 @@ +Interface **Phalcon\\Mvc\\Micro\\CollectionInterface** +====================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setPrefix** (*unknown* $prefix) + +... + + +abstract public **getPrefix** () + +... + + +abstract public **getHandlers** () + +... + + +abstract public **setHandler** (*unknown* $handler, [*unknown* $lazy]) + +... + + +abstract public **setLazy** (*unknown* $lazy) + +... + + +abstract public **isLazy** () + +... + + +abstract public **getHandler** () + +... + + +abstract public **map** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **get** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **post** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **put** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **patch** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **head** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **delete** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + +abstract public **options** (*unknown* $routePattern, *unknown* $handler, [*unknown* $name]) + +... + + diff --git a/id/api/Phalcon_Mvc_Micro_Exception.rst b/id/api/Phalcon_Mvc_Micro_Exception.rst new file mode 100644 index 000000000000..e92882ca5367 --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Micro\\Exception** +======================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Micro_LazyLoader.rst b/id/api/Phalcon_Mvc_Micro_LazyLoader.rst new file mode 100644 index 000000000000..df76fcf7394c --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro_LazyLoader.rst @@ -0,0 +1,26 @@ +Class **Phalcon\\Mvc\\Micro\\LazyLoader** +========================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Lazy-Load of handlers for Mvc\\Micro using auto-loading + + +Methods +------- + +public **__construct** (*unknown* $definition) + +Phalcon\\Mvc\\Micro\\LazyLoader constructor + + + +public *mixed* **__call** (*string* $method, *array* $arguments) + +Initializes the internal handler, calling functions on it + + + diff --git a/id/api/Phalcon_Mvc_Micro_MiddlewareInterface.rst b/id/api/Phalcon_Mvc_Micro_MiddlewareInterface.rst new file mode 100644 index 000000000000..65c9c05925e5 --- /dev/null +++ b/id/api/Phalcon_Mvc_Micro_MiddlewareInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Mvc\\Micro\\MiddlewareInterface** +====================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **call** (:doc:`Phalcon\\Mvc\\Micro ` $application) + +... + + diff --git a/id/api/Phalcon_Mvc_Model.rst b/id/api/Phalcon_Mvc_Model.rst new file mode 100644 index 000000000000..a7a098a8d9c4 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model.rst @@ -0,0 +1,1135 @@ +Abstract class **Phalcon\\Mvc\\Model** +====================================== + +*implements* :doc:`Phalcon\\Mvc\\EntityInterface `, :doc:`Phalcon\\Mvc\\ModelInterface `, :doc:`Phalcon\\Mvc\\Model\\ResultInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, Serializable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Model connects business objects and database tables to create a persistable domain model where logic and data are presented in one wrapping. It‘s an implementation of the object-relational mapping (ORM). A model represents the information (data) of the application and the rules to manipulate that data. Models are primarily used for managing the rules of interaction with a corresponding database table. In most cases, each table in your database will correspond to one model in your application. The bulk of your application's business logic will be concentrated in the models. Phalcon\\Mvc\\Model is the first ORM written in Zephir/C languages for PHP, giving to developers high performance when interacting with databases while is also easy to use. + +.. code-block:: php + + type = 'mechanical'; + $robot->name = 'Astro Boy'; + $robot->year = 1952; + if ($robot->save() == false) { + echo "Umh, We can store robots: "; + foreach ($robot->getMessages() as $message) { + echo message; + } + } else { + echo "Great, a new robot was saved successfully!"; + } + + + +Constants +--------- + +*integer* **OP_NONE** + +*integer* **OP_CREATE** + +*integer* **OP_UPDATE** + +*integer* **OP_DELETE** + +*integer* **DIRTY_STATE_PERSISTENT** + +*integer* **DIRTY_STATE_TRANSIENT** + +*integer* **DIRTY_STATE_DETACHED** + +Methods +------- + +final public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector], [:doc:`Phalcon\\Mvc\\Model\\ManagerInterface ` $modelsManager]) + +Phalcon\\Mvc\\Model constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injection container + + + +public **getDI** () + +Returns the dependency injection container + + + +protected **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets a custom events manager + + + +protected **getEventsManager** () + +Returns the custom events manager + + + +public **getModelsMetaData** () + +Returns the models meta-data service related to the entity instance + + + +public **getModelsManager** () + +Returns the models manager related to the entity instance + + + +public **setTransaction** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +Sets a transaction related to the Model instance + +.. code-block:: php + + get(); + + $robot = new Robots(); + $robot->setTransaction($transaction); + $robot->name = 'WALL·E'; + $robot->created_at = date('Y-m-d'); + if ($robot->save() == false) { + $transaction->rollback("Can't save robot"); + } + + $robotPart = new RobotParts(); + $robotPart->setTransaction($transaction); + $robotPart->type = 'head'; + if ($robotPart->save() == false) { + $transaction->rollback("Robot part cannot be saved"); + } + + $transaction->commit(); + + } catch (TxFailed $e) { + echo 'Failed, reason: ', $e->getMessage(); + } + + + + +protected **setSource** (*unknown* $source) + +Sets table name which model should be mapped + + + +public **getSource** () + +Returns table name mapped in the model + + + +protected **setSchema** (*unknown* $schema) + +Sets schema name where table mapped is located + + + +public **getSchema** () + +Returns schema name where table mapped is located + + + +public **setConnectionService** (*unknown* $connectionService) + +Sets the DependencyInjection connection service name + + + +public **setReadConnectionService** (*unknown* $connectionService) + +Sets the DependencyInjection connection service name used to read data + + + +public **setWriteConnectionService** (*unknown* $connectionService) + +Sets the DependencyInjection connection service name used to write data + + + +public **getReadConnectionService** () + +Returns the DependencyInjection connection service name used to read data related the model + + + +public **getWriteConnectionService** () + +Returns the DependencyInjection connection service name used to write data related to the model + + + +public **setDirtyState** (*unknown* $dirtyState) + +Sets the dirty state of the object using one of the DIRTY_STATE_* constants + + + +public **getDirtyState** () + +Returns one of the DIRTY_STATE_* constants telling if the record exists in the database or not + + + +public **getReadConnection** () + +Gets the connection used to read data for the model + + + +public **getWriteConnection** () + +Gets the connection used to write data to the model + + + +public :doc:`Phalcon\\Mvc\\Model ` **assign** (*array* $data, [*unknown* $dataColumnMap], [*array* $whiteList]) + +Assigns values to a model from an array + +.. code-block:: php + + assign(array( + 'type' => 'mechanical', + 'name' => 'Astro Boy', + 'year' => 1952 + )); + + //assign by db row, column map needed + $robot->assign($dbRow, array( + 'db_type' => 'type', + 'db_name' => 'name', + 'db_year' => 'year' + )); + + //allow assign only name and year + $robot->assign($_POST, null, array('name', 'year'); + + + + +public static :doc:`Phalcon\\Mvc\\Model ` **cloneResultMap** (*\\Phalcon\\Mvc\\ModelInterface|Phalcon\\Mvc\\Model\\Row* $base, *array* $data, *array* $columnMap, [*int* $dirtyState], [*boolean* $keepSnapshots]) + +Assigns values to a model from an array returning a new model. + +.. code-block:: php + + 'mechanical', + 'name' => 'Astro Boy', + 'year' => 1952 + )); + + + + +public static *mixed* **cloneResultMapHydrate** (*array* $data, *array* $columnMap, *int* $hydrationMode) + +Returns an hydrated result based on the data and the column map + + + +public static :doc:`Phalcon\\Mvc\\ModelInterface ` **cloneResult** (:doc:`Phalcon\\Mvc\\ModelInterface ` $base, *array* $data, [*int* $dirtyState]) + +Assigns values to a model from an array returning a new model + +.. code-block:: php + + 'mechanical', + 'name' => 'Astro Boy', + 'year' => 1952 + )); + + + + +public static :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` **find** ([*array* $parameters]) + +Allows to query a set of records that match the specified conditions + +.. code-block:: php + + "name")); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + //Get first 100 virtual robots ordered by name + $robots = Robots::find(array("type='virtual'", "order" => "name", "limit" => 100)); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + + + +public static :doc:`Phalcon\\Mvc\\Model ` **findFirst** ([*string|array* $parameters]) + +Allows to query the first record that match the specified conditions + +.. code-block:: php + + name; + + //What's the first mechanical robot in robots table? + $robot = Robots::findFirst("type='mechanical'"); + echo "The first mechanical robot name is ", $robot->name; + + //Get first virtual robot ordered by name + $robot = Robots::findFirst(array("type='virtual'", "order" => "name")); + echo "The first virtual robot name is ", $robot->name; + + + + +public static **query** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Create a criteria for a specific model + + + +protected *boolean* **_exists** (:doc:`Phalcon\\Mvc\\Model\\MetadataInterface ` $metaData, :doc:`Phalcon\\Db\\AdapterInterface ` $connection, [*string\|array* $table]) + +Checks if the current record already exists or not + + + +protected static :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` **_groupResult** (*unknown* $functionName, *string* $alias, *array* $parameters) + +Generate a PHQL SELECT statement for an aggregate + + + +public static *mixed* **count** ([*array* $parameters]) + +Allows to count how many records match the specified conditions + +.. code-block:: php + + 'price')); + echo "The total price of robots is ", $sum, "\n"; + + //How much are mechanical robots? + $sum = Robots::sum(array("type = 'mechanical'", 'column' => 'price')); + echo "The total price of mechanical robots is ", $sum, "\n"; + + + + +public static *mixed* **maximum** ([*array* $parameters]) + +Allows to get the maximum value of a column that match the specified conditions + +.. code-block:: php + + 'id')); + echo "The maximum robot id is: ", $id, "\n"; + + //What is the maximum id of mechanical robots? + $sum = Robots::maximum(array("type='mechanical'", 'column' => 'id')); + echo "The maximum robot id of mechanical robots is ", $id, "\n"; + + + + +public static *mixed* **minimum** ([*array* $parameters]) + +Allows to get the minimum value of a column that match the specified conditions + +.. code-block:: php + + 'id')); + echo "The minimum robot id is: ", $id; + + //What is the minimum id of mechanical robots? + $sum = Robots::minimum(array("type='mechanical'", 'column' => 'id')); + echo "The minimum robot id of mechanical robots is ", $id; + + + + +public static *double* **average** ([*array* $parameters]) + +Allows to calculate the average value on a column matching the specified conditions + +.. code-block:: php + + 'price')); + echo "The average price is ", $average, "\n"; + + //What's the average price of mechanical robots? + $average = Robots::average(array("type='mechanical'", 'column' => 'price')); + echo "The average price of mechanical robots is ", $average, "\n"; + + + + +public **fireEvent** (*unknown* $eventName) + +Fires an event, implicitly calls behaviors and listeners in the events manager are notified + + + +public **fireEventCancel** (*unknown* $eventName) + +Fires an event, implicitly calls behaviors and listeners in the events manager are notified This method stops if one of the callbacks/listeners returns boolean false + + + +protected **_cancelOperation** () + +Cancel the current operation + + + +public **appendMessage** (:doc:`Phalcon\\Mvc\\Model\\MessageInterface ` $message) + +Appends a customized message on the validation process + +.. code-block:: php + + name == 'Peter') { + $message = new Message("Sorry, but a robot cannot be named Peter"); + $this->appendMessage($message); + } + } + } + + + + +protected **validate** (:doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` $validator) + +Executes validators on every validation call + +.. code-block:: php + + validate(new ExclusionIn(array( + 'field' => 'status', + 'domain' => array('A', 'I') + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + } + + + + +public **validationHasFailed** () + +Check whether validation process has generated any messages + +.. code-block:: php + + validate(new ExclusionIn(array( + 'field' => 'status', + 'domain' => array('A', 'I') + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + } + + + + +public **getMessages** ([*unknown* $filter]) + +Returns array of validation messages + +.. code-block:: php + + type = 'mechanical'; + $robot->name = 'Astro Boy'; + $robot->year = 1952; + if ($robot->save() == false) { + echo "Umh, We can't store robots right now "; + foreach ($robot->getMessages() as $message) { + echo $message; + } + } else { + echo "Great, a new robot was saved successfully!"; + } + + + + +protected **_checkForeignKeysRestrict** () + +Reads "belongs to" relations and check the virtual foreign keys when inserting or updating records to verify that inserted/updated values are present in the related entity + + + +protected **_checkForeignKeysReverseCascade** () + +Reads both "hasMany" and "hasOne" relations and checks the virtual foreign keys (cascade) when deleting records + + + +protected **_checkForeignKeysReverseRestrict** () + +Reads both "hasMany" and "hasOne" relations and checks the virtual foreign keys (restrict) when deleting records + + + +protected **_preSave** (:doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` $metaData, *unknown* $exists, *unknown* $identityField) + +Executes internal hooks before save a record + + + +protected **_postSave** (*unknown* $success, *unknown* $exists) + +Executes internal events after save a record + + + +protected *boolean* **_doLowInsert** (:doc:`Phalcon\\Mvc\\Model\\MetadataInterface ` $metaData, :doc:`Phalcon\\Db\\AdapterInterface ` $connection, *string\|array* $table, *boolean|string* $identityField) + +Sends a pre-build INSERT SQL statement to the relational database system + + + +protected *boolean* **_doLowUpdate** (:doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` $metaData, :doc:`Phalcon\\Db\\AdapterInterface ` $connection, *string|array* $table) + +Sends a pre-build UPDATE SQL statement to the relational database system + + + +protected *boolean* **_preSaveRelatedRecords** (:doc:`Phalcon\\Db\\AdapterInterface ` $connection, *\\Phalcon\\Mvc\\ModelInterface[]* $related) + +Saves related records that must be stored prior to save the master record + + + +protected *boolean* **_postSaveRelatedRecords** (:doc:`Phalcon\\Db\\AdapterInterface ` $connection, *Phalcon\\Mvc\\ModelInterface[]* $related) + +Save the related records assigned in the has-one/has-many relations + + + +public *boolean* **save** ([*array* $data], [*array* $whiteList]) + +Inserts or updates a model instance. Returning true on success or false otherwise. + +.. code-block:: php + + type = 'mechanical'; + $robot->name = 'Astro Boy'; + $robot->year = 1952; + $robot->save(); + + //Updating a robot name + $robot = Robots::findFirst("id=100"); + $robot->name = "Biomass"; + $robot->save(); + + + + +public **create** ([*unknown* $data], [*unknown* $whiteList]) + +Inserts a model instance. If the instance already exists in the persistance it will throw an exception Returning true on success or false otherwise. + +.. code-block:: php + + type = 'mechanical'; + $robot->name = 'Astro Boy'; + $robot->year = 1952; + $robot->create(); + + //Passing an array to create + $robot = new Robots(); + $robot->create(array( + 'type' => 'mechanical', + 'name' => 'Astroy Boy', + 'year' => 1952 + )); + + + + +public **update** ([*unknown* $data], [*unknown* $whiteList]) + +Updates a model instance. If the instance doesn't exist in the persistance it will throw an exception Returning true on success or false otherwise. + +.. code-block:: php + + name = "Biomass"; + $robot->update(); + + + + +public **delete** () + +Deletes a model instance. Returning true on success or false otherwise. + +.. code-block:: php + + delete(); + + foreach (Robots::find("type = 'mechanical'") as $robot) { + $robot->delete(); + } + + + + +public **getOperationMade** () + +Returns the type of the latest operation performed by the ORM Returns one of the OP_* class constants + + + +public **refresh** () + +Refreshes the model attributes re-querying the record from the database + + + +public **skipOperation** (*unknown* $skip) + +Skips the current operation forcing a success state + + + +public **readAttribute** (*unknown* $attribute) + +Reads an attribute value by its name + +.. code-block:: php + + readAttribute('name'); + + + + +public **writeAttribute** (*unknown* $attribute, *unknown* $value) + +Writes an attribute value by its name + +.. code-block:: php + + writeAttribute('name', 'Rosey'); + + + + +protected **skipAttributes** (*array* $attributes) + +Sets a list of attributes that must be skipped from the generated INSERT/UPDATE statement + +.. code-block:: php + + skipAttributes(array('price')); + } + } + + + + +protected **skipAttributesOnCreate** (*array* $attributes) + +Sets a list of attributes that must be skipped from the generated INSERT statement + +.. code-block:: php + + skipAttributesOnCreate(array('created_at')); + } + } + + + + +protected **skipAttributesOnUpdate** (*array* $attributes) + +Sets a list of attributes that must be skipped from the generated UPDATE statement + +.. code-block:: php + + skipAttributesOnUpdate(array('modified_in')); + } + } + + + + +protected **allowEmptyStringValues** (*array* $attributes) + +Sets a list of attributes that must be skipped from the generated UPDATE statement + +.. code-block:: php + + allowEmptyStringValues(array('name')); + } + } + + + + +protected **hasOne** (*unknown* $fields, *unknown* $referenceModel, *unknown* $referencedFields, [*unknown* $options]) + +Setup a 1-1 relation between two models + +.. code-block:: php + + hasOne('id', 'RobotsDescription', 'robots_id'); + } + } + + + + +protected **belongsTo** (*unknown* $fields, *unknown* $referenceModel, *unknown* $referencedFields, [*unknown* $options]) + +Setup a relation reverse 1-1 between two models + +.. code-block:: php + + belongsTo('robots_id', 'Robots', 'id'); + } + } + + + + +protected **hasMany** (*unknown* $fields, *unknown* $referenceModel, *unknown* $referencedFields, [*unknown* $options]) + +Setup a relation 1-n between two models + +.. code-block:: php + + hasMany('id', 'RobotsParts', 'robots_id'); + } + } + + + + +protected :doc:`Phalcon\\Mvc\\Model\\Relation ` **hasManyToMany** (*string|array* $fields, *string* $intermediateModel, *string|array* $intermediateFields, *string|array* $intermediateReferencedFields, *unknown* $referenceModel, *string|array* $referencedFields, [*array* $options]) + +Setup a relation n-n between two models through an intermediate relation + +.. code-block:: php + + hasManyToMany( + 'id', + 'RobotsParts', + 'robots_id', + 'parts_id', + 'Parts', + 'id' + ); + } + } + + + + +public **addBehavior** (:doc:`Phalcon\\Mvc\\Model\\BehaviorInterface ` $behavior) + +Setups a behavior in a model + +.. code-block:: php + + addBehavior(new Timestampable(array( + 'onCreate' => array( + 'field' => 'created_at', + 'format' => 'Y-m-d' + ) + ))); + } + } + + + + +protected **keepSnapshots** (*unknown* $keepSnapshot) + +Sets if the model must keep the original record snapshot in memory + +.. code-block:: php + + keepSnapshots(true); + } + } + + + + +public **setSnapshotData** (*array* $data, [*array* $columnMap]) + +Sets the record's snapshot data. This method is used internally to set snapshot data when the model was set up to keep snapshot data + + + +public **hasSnapshotData** () + +Checks if the object has internal snapshot data + + + +public **getSnapshotData** () + +Returns the internal snapshot data + + + +public **hasChanged** ([*string|array* $fieldName]) + +Check if a specific attribute has changed This only works if the model is keeping data snapshots + + + +public **getChangedFields** () + +Returns a list of changed values + + + +protected **useDynamicUpdate** (*unknown* $dynamicUpdate) + +Sets if a model must use dynamic update instead of the all-field update + +.. code-block:: php + + useDynamicUpdate(true); + } + } + + + + +public :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` **getRelated** (*string* $alias, [*array* $arguments]) + +Returns related records based on defined relations + + + +protected *mixed* **_getRelatedRecords** (*string* $modelName, *string* $method, *array* $arguments) + +Returns related records defined relations depending on the method name + + + +final protected static :doc:`Phalcon\\Mvc\\ModelInterface ` []\|:doc:`Phalcon\\Mvc\\ModelInterface ` \|boolean **_invokeFinder** (*string* $method, *array* $arguments) + +Try to check if the query must invoke a finder + + + +public *mixed* **__call** (*string* $method, *array* $arguments) + +Handles method calls when a method is not implemented + + + +public static *mixed* **__callStatic** (*string* $method, *array* $arguments) + +Handles method calls when a static method is not implemented + + + +public **__set** (*string* $property, *mixed* $value) + +Magic method to assign values to the the model + + + +public :doc:`Phalcon\\Mvc\\Model\\Resultset ` \|Phalcon\Mvc\Model **__get** (*string* $property) + +Magic method to get related records using the relation alias as a property + + + +public **__isset** (*unknown* $property) + +Magic method to check if a property is a valid relation + + + +public **serialize** () + +Serializes the object ignoring connections, services, related objects or static properties + + + +public **unserialize** (*unknown* $data) + +Unserializes the object from a serialized string + + + +public **dump** () + +Returns a simple representation of the object that can be used with var_dump + +.. code-block:: php + + dump()); + + + + +public *array* **toArray** ([*array* $columns]) + +Returns the instance as an array representation + +.. code-block:: php + + toArray()); + + + + +public static **setup** (*array* $options) + +Enables/disables options in the ORM + + + +public **reset** () + +Reset a model instance data diff --git a/id/api/Phalcon_Mvc_ModelInterface.rst b/id/api/Phalcon_Mvc_ModelInterface.rst new file mode 100644 index 000000000000..5416427771a6 --- /dev/null +++ b/id/api/Phalcon_Mvc_ModelInterface.rst @@ -0,0 +1,206 @@ +Interface **Phalcon\\Mvc\\ModelInterface** +========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setTransaction** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +... + + +abstract public **getSource** () + +... + + +abstract public **getSchema** () + +... + + +abstract public **setConnectionService** (*unknown* $connectionService) + +... + + +abstract public **setWriteConnectionService** (*unknown* $connectionService) + +... + + +abstract public **setReadConnectionService** (*unknown* $connectionService) + +... + + +abstract public **getReadConnectionService** () + +... + + +abstract public **getWriteConnectionService** () + +... + + +abstract public **getReadConnection** () + +... + + +abstract public **getWriteConnection** () + +... + + +abstract public **setDirtyState** (*unknown* $dirtyState) + +... + + +abstract public **getDirtyState** () + +... + + +abstract public **assign** (*array* $data, [*unknown* $dataColumnMap], [*unknown* $whiteList]) + +... + + +abstract public static **cloneResultMap** (*unknown* $base, *array* $data, *unknown* $columnMap, [*unknown* $dirtyState], [*unknown* $keepSnapshots]) + +... + + +abstract public static **cloneResult** (:doc:`Phalcon\\Mvc\\ModelInterface ` $base, *array* $data, [*unknown* $dirtyState]) + +... + + +abstract public static **cloneResultMapHydrate** (*array* $data, *unknown* $columnMap, *unknown* $hydrationMode) + +... + + +abstract public static **find** ([*unknown* $parameters]) + +... + + +abstract public static **findFirst** ([*unknown* $parameters]) + +... + + +abstract public static **query** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +... + + +abstract public static **count** ([*unknown* $parameters]) + +... + + +abstract public static **sum** ([*unknown* $parameters]) + +... + + +abstract public static **maximum** ([*unknown* $parameters]) + +... + + +abstract public static **minimum** ([*unknown* $parameters]) + +... + + +abstract public static **average** ([*unknown* $parameters]) + +... + + +abstract public **fireEvent** (*unknown* $eventName) + +... + + +abstract public **fireEventCancel** (*unknown* $eventName) + +... + + +abstract public **appendMessage** (:doc:`Phalcon\\Mvc\\Model\\MessageInterface ` $message) + +... + + +abstract public **validationHasFailed** () + +... + + +abstract public **getMessages** () + +... + + +abstract public **save** ([*unknown* $data], [*unknown* $whiteList]) + +... + + +abstract public **create** ([*unknown* $data], [*unknown* $whiteList]) + +... + + +abstract public **update** ([*unknown* $data], [*unknown* $whiteList]) + +... + + +abstract public **delete** () + +... + + +abstract public **getOperationMade** () + +... + + +abstract public **refresh** () + +... + + +abstract public **skipOperation** (*unknown* $skip) + +... + + +abstract public **getRelated** (*unknown* $alias, [*unknown* $arguments]) + +... + + +abstract public **setSnapshotData** (*array* $data, [*unknown* $columnMap]) + +... + + +abstract public **reset** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Behavior.rst b/id/api/Phalcon_Mvc_Model_Behavior.rst new file mode 100644 index 000000000000..90901cef3186 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Behavior.rst @@ -0,0 +1,44 @@ +Abstract class **Phalcon\\Mvc\\Model\\Behavior** +================================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is an optional base class for ORM behaviors + + +Methods +------- + +public **__construct** ([*array* $options]) + + + + + +protected **mustTakeAction** (*unknown* $eventName) + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) + +Returns the behavior options related to an event + + + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +This method receives the notifications from the EventsManager + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *string* $method, [*array* $arguments]) + +Acts as fallbacks when a missing method is called on the model + + + diff --git a/id/api/Phalcon_Mvc_Model_BehaviorInterface.rst b/id/api/Phalcon_Mvc_Model_BehaviorInterface.rst new file mode 100644 index 000000000000..9878dcf760b6 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_BehaviorInterface.rst @@ -0,0 +1,26 @@ +Interface **Phalcon\\Mvc\\Model\\BehaviorInterface** +==================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** ([*unknown* $options]) + +... + + +abstract public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $method, [*unknown* $arguments]) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Behavior_SoftDelete.rst b/id/api/Phalcon_Mvc_Model_Behavior_SoftDelete.rst new file mode 100644 index 000000000000..4e3f358391b1 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Behavior_SoftDelete.rst @@ -0,0 +1,48 @@ +Class **Phalcon\\Mvc\\Model\\Behavior\\SoftDelete** +=================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Behavior ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\BehaviorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Instead of permanently delete a record it marks the record as deleted changing the value of a flag column + + +Methods +------- + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Listens for notifications from the models manager + + + +public **__construct** ([*array* $options]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Phalcon\\Mvc\\Model\\Behavior + + + +protected **mustTakeAction** (*unknown* $eventName) inherited from Phalcon\\Mvc\\Model\\Behavior + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Returns the behavior options related to an event + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *string* $method, [*array* $arguments]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Acts as fallbacks when a missing method is called on the model + + + diff --git a/id/api/Phalcon_Mvc_Model_Behavior_Timestampable.rst b/id/api/Phalcon_Mvc_Model_Behavior_Timestampable.rst new file mode 100644 index 000000000000..ca884f102c43 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Behavior_Timestampable.rst @@ -0,0 +1,48 @@ +Class **Phalcon\\Mvc\\Model\\Behavior\\Timestampable** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Behavior ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\BehaviorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to automatically update a model’s attribute saving the datetime when a record is created or updated + + +Methods +------- + +public **notify** (*unknown* $type, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Listens for notifications from the models manager + + + +public **__construct** ([*array* $options]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Phalcon\\Mvc\\Model\\Behavior + + + +protected **mustTakeAction** (*unknown* $eventName) inherited from Phalcon\\Mvc\\Model\\Behavior + +Checks whether the behavior must take action on certain event + + + +protected *array* **getOptions** ([*string* $eventName]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Returns the behavior options related to an event + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *string* $method, [*array* $arguments]) inherited from Phalcon\\Mvc\\Model\\Behavior + +Acts as fallbacks when a missing method is called on the model + + + diff --git a/id/api/Phalcon_Mvc_Model_Criteria.rst b/id/api/Phalcon_Mvc_Model_Criteria.rst new file mode 100644 index 000000000000..41ae32e3f68c --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Criteria.rst @@ -0,0 +1,331 @@ +Class **Phalcon\\Mvc\\Model\\Criteria** +======================================= + +*implements* :doc:`Phalcon\\Mvc\\Model\\CriteriaInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class is used to build the array parameter required by Phalcon\\Mvc\\Model::find() and Phalcon\\Mvc\\Model::findFirst() using an object-oriented interface. + +.. code-block:: php + + where("type = :type:") + ->andWhere("year < 2000") + ->bind(array("type" => "mechanical")) + ->limit(5, 10) + ->orderBy("name") + ->execute(); + + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **setModelName** (*unknown* $modelName) + +Set a model on which the query will be executed + + + +public **getModelName** () + +Returns an internal model name on which the criteria will be applied + + + +public **bind** (*array* $bindParams) + +Sets the bound parameters in the criteria This method replaces all previously set bound parameters + + + +public **bindTypes** (*array* $bindTypes) + +Sets the bind types in the criteria This method replaces all previously set bound parameters + + + +public **distinct** (*unknown* $distinct) + +Sets SELECT DISTINCT / SELECT ALL flag + + + +public :doc:`Phalcon\\Mvc\\Model\\Criteria ` **columns** (*string|array* $columns) + +Sets the columns to be queried + +.. code-block:: php + + columns(array('id', 'name')); + + + + +public **join** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias], [*unknown* $type]) + +Adds a INNER join to the query + +.. code-block:: php + + join('Robots'); + $criteria->join('Robots', 'r.id = RobotsParts.robots_id'); + $criteria->join('Robots', 'r.id = RobotsParts.robots_id', 'r'); + $criteria->join('Robots', 'r.id = RobotsParts.robots_id', 'r', 'LEFT'); + + + + +public **innerJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +Adds a INNER join to the query + +.. code-block:: php + + innerJoin('Robots'); + $criteria->innerJoin('Robots', 'r.id = RobotsParts.robots_id'); + $criteria->innerJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public **leftJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +Adds a LEFT join to the query + +.. code-block:: php + + leftJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public **rightJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +Adds a RIGHT join to the query + +.. code-block:: php + + rightJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public **where** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +Sets the conditions parameter in the criteria + + + +public **addWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +Appends a condition to the current conditions using an AND operator (deprecated) + + + +public **andWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +Appends a condition to the current conditions using an AND operator + + + +public **orWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +Appends a condition to the current conditions using an OR operator + + + +public **betweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +Appends a BETWEEN condition to the current conditions + +.. code-block:: php + + betweenWhere('price', 100.25, 200.50); + + + + +public **notBetweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +Appends a NOT BETWEEN condition to the current conditions + +.. code-block:: php + + notBetweenWhere('price', 100.25, 200.50); + + + + +public **inWhere** (*unknown* $expr, *array* $values) + +Appends an IN condition to the current conditions + +.. code-block:: php + + inWhere('id', [1, 2, 3]); + + + + +public **notInWhere** (*unknown* $expr, *array* $values) + +Appends a NOT IN condition to the current conditions + +.. code-block:: php + + notInWhere('id', [1, 2, 3]); + + + + +public **conditions** (*unknown* $conditions) + +Adds the conditions parameter to the criteria + + + +public **order** (*unknown* $orderColumns) + +Adds the order-by parameter to the criteria (deprecated) + + + +public **orderBy** (*unknown* $orderColumns) + +Adds the order-by clause to the criteria + + + +public **groupBy** (*unknown* $group) + +Adds the group-by clause to the criteria + + + +public **having** (*unknown* $having) + +Adds the having clause to the criteria + + + +public **limit** (*unknown* $limit, [*unknown* $offset]) + +Adds the limit parameter to the criteria + + + +public **forUpdate** ([*unknown* $forUpdate]) + +Adds the "for_update" parameter to the criteria + + + +public **sharedLock** ([*unknown* $sharedLock]) + +Adds the "shared_lock" parameter to the criteria + + + +public **cache** (*array* $cache) + +Sets the cache options in the criteria This method replaces all previously set cache options + + + +public **getWhere** () + +Returns the conditions parameter in the criteria + + + +public *string|array|null* **getColumns** () + +Returns the columns to be queried + + + +public **getConditions** () + +Returns the conditions parameter in the criteria + + + +public *int|array|null* **getLimit** () + +Returns the limit parameter in the criteria, which will be an integer if limit was set without an offset, an array with 'number' and 'offset' keys if an offset was set with the limit, or null if limit has not been set. + + + +public **getOrder** () + +Returns the order clause in the criteria + + + +public **getGroupBy** () + +Returns the group clause in the criteria + + + +public **getHaving** () + +Returns the having clause in the criteria + + + +public *array* **getParams** () + +Returns all the parameters defined in the criteria + + + +public static **fromInput** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, *unknown* $modelName, *array* $data, [*unknown* $operator]) + +Builds a Phalcon\\Mvc\\Model\\Criteria based on an input array like _POST + + + +public **execute** () + +Executes a find using the parameters built with the criteria + + + diff --git a/id/api/Phalcon_Mvc_Model_CriteriaInterface.rst b/id/api/Phalcon_Mvc_Model_CriteriaInterface.rst new file mode 100644 index 000000000000..27ade8850ae0 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_CriteriaInterface.rst @@ -0,0 +1,121 @@ +Interface **Phalcon\\Mvc\\Model\\CriteriaInterface** +==================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setModelName** (*unknown* $modelName) + +... + + +abstract public **getModelName** () + +... + + +abstract public **bind** (*array* $bindParams) + +... + + +abstract public **bindTypes** (*array* $bindTypes) + +... + + +abstract public **where** (*unknown* $conditions) + +... + + +abstract public **conditions** (*unknown* $conditions) + +... + + +abstract public **orderBy** (*unknown* $orderColumns) + +... + + +abstract public **limit** (*unknown* $limit, [*unknown* $offset]) + +... + + +abstract public **forUpdate** ([*unknown* $forUpdate]) + +... + + +abstract public **sharedLock** ([*unknown* $sharedLock]) + +... + + +abstract public **andWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **orWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **betweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +... + + +abstract public **notBetweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +... + + +abstract public **inWhere** (*unknown* $expr, *array* $values) + +... + + +abstract public **notInWhere** (*unknown* $expr, *array* $values) + +... + + +abstract public **getWhere** () + +... + + +abstract public **getConditions** () + +... + + +abstract public **getLimit** () + +... + + +abstract public **getOrder** () + +... + + +abstract public **getParams** () + +... + + +abstract public **execute** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Exception.rst b/id/api/Phalcon_Mvc_Model_Exception.rst new file mode 100644 index 000000000000..75c54fff9590 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Model\\Exception** +======================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Model_Manager.rst b/id/api/Phalcon_Mvc_Model_Manager.rst new file mode 100644 index 000000000000..cfcd64afb5a9 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Manager.rst @@ -0,0 +1,402 @@ +Class **Phalcon\\Mvc\\Model\\Manager** +====================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\ManagerInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This components controls the initialization of models, keeping record of relations between the different models of the application. A ModelsManager is injected to a model via a Dependency Injector/Services Container such as Phalcon\\Di. + +.. code-block:: php + + set('modelsManager', function() { + return new ModelsManager(); + }); + + $robot = new Robots($di); + + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets a global events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **setCustomEventsManager** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets a custom events manager for a specific model + + + +public **getCustomEventsManager** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns a custom events manager related to a model + + + +public **initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Initializes a model in the model manager + + + +public **isInitialized** (*unknown* $modelName) + +Check whether a model is already initialized + + + +public **getLastInitialized** () + +Get last initialized model + + + +public **load** (*unknown* $modelName, [*unknown* $newInstance]) + +Loads a model throwing an exception if it doesn't exist + + + +public **setModelSource** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $source) + +Sets the mapped source for a model + + + +public **getModelSource** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the mapped source for a model + + + +public **setModelSchema** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $schema) + +Sets the mapped schema for a model + + + +public **getModelSchema** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the mapped schema for a model + + + +public **setConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +Sets both write and read connection service for a model + + + +public **setWriteConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +Sets write connection service for a model + + + +public **setReadConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +Sets read connection service for a model + + + +public **getReadConnection** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the connection to read data related to a model + + + +public **getWriteConnection** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the connection to write data related to a model + + + +protected **_getConnection** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionServices) + +Returns the connection to read or write data related to a model depending on the connection services. + + + +public **getReadConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the connection service name used to read data related to a model + + + +public **getWriteConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the connection service name used to write data related to a model + + + +public **_getConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionServices) + +Returns the connection service name used to read or write data related to a model depending on the connection services + + + +public **notifyEvent** (*unknown* $eventName, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Receives events generated in the models and dispatches them to a events-manager if available Notify the behaviors that are listening in the model + + + +public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $eventName, *unknown* $data) + +Dispatch a event to the listeners and behaviors This method expects that the endpoint listeners/behaviors returns true meaning that a least one was implemented + + + +public **addBehavior** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\Mvc\\Model\\BehaviorInterface ` $behavior) + +Binds a behavior to a model + + + +public **keepSnapshots** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $keepSnapshots) + +Sets if a model must keep snapshots + + + +public **isKeepingSnapshots** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Checks if a model is keeping snapshots for the queried records + + + +public **useDynamicUpdate** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $dynamicUpdate) + +Sets if a model must use dynamic update instead of the all-field update + + + +public **isUsingDynamicUpdate** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Checks if a model is using dynamic update instead of all-field update + + + +public :doc:`Phalcon\\Mvc\\Model\\Relation ` **addHasOne** (:doc:`Phalcon\\Mvc\\Model ` $model, *mixed* $fields, *string* $referencedModel, *mixed* $referencedFields, [*array* $options]) + +Setup a 1-1 relation between two models + + + +public :doc:`Phalcon\\Mvc\\Model\\Relation ` **addBelongsTo** (:doc:`Phalcon\\Mvc\\Model ` $model, *mixed* $fields, *string* $referencedModel, *mixed* $referencedFields, [*array* $options]) + +Setup a relation reverse many to one between two models + + + +public **addHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *mixed* $fields, *string* $referencedModel, *mixed* $referencedFields, [*array* $options]) + +Setup a relation 1-n between two models + + + +public :doc:`Phalcon\\Mvc\\Model\\Relation ` **addHasManyToMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *string* $fields, *string* $intermediateModel, *string* $intermediateFields, *string* $intermediateReferencedFields, *string* $referencedModel, *string* $referencedFields, [*array* $options]) + +Setups a relation n-m between two models + + + +public **existsBelongsTo** (*unknown* $modelName, *unknown* $modelRelation) + +Checks whether a model has a belongsTo relation with another model + + + +public **existsHasMany** (*unknown* $modelName, *unknown* $modelRelation) + +Checks whether a model has a hasMany relation with another model + + + +public **existsHasOne** (*unknown* $modelName, *unknown* $modelRelation) + +Checks whether a model has a hasOne relation with another model + + + +public **existsHasManyToMany** (*unknown* $modelName, *unknown* $modelRelation) + +Checks whether a model has a hasManyToMany relation with another model + + + +public **getRelationByAlias** (*unknown* $modelName, *unknown* $alias) + +Returns a relation by its alias + + + +final protected **_mergeFindParameters** (*unknown* $findParamsOne, *unknown* $findParamsTwo) + +Merge two arrays of find parameters + + + +public :doc:`Phalcon\\Mvc\\Model\\Resultset\\Simple ` \|Phalcon\Mvc\Model\Resultset\Simple\|false **getRelationRecords** (:doc:`Phalcon\\Mvc\\Model\\RelationInterface ` $relation, *unknown* $method, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +Helper method to query records based on a relation definition + + + +public **getReusableRecords** (*unknown* $modelName, *unknown* $key) + +Returns a reusable object from the internal list + + + +public **setReusableRecords** (*unknown* $modelName, *unknown* $key, *unknown* $records) + +Stores a reusable record in the internal list + + + +public **clearReusableObjects** () + +Clears the internal reusable list + + + +public **getBelongsToRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +Gets belongsTo related records from a model + + + +public **getHasManyRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +Gets hasMany related records from a model + + + +public **getHasOneRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +Gets belongsTo related records from a model + + + +public **getBelongsTo** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Gets all the belongsTo relations defined in a model + +.. code-block:: php + + getBelongsTo(new Robots()); + + + + +public **getHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Gets hasMany relations defined on a model + + + +public **getHasOne** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Gets hasOne relations defined on a model + + + +public **getHasManyToMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Gets hasManyToMany relations defined on a model + + + +public **getHasOneAndHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Gets hasOne relations defined on a model + + + +public **getRelations** (*unknown* $modelName) + +Query all the relationships defined on a model + + + +public **getRelationsBetween** (*unknown* $first, *unknown* $second) + +Query the first relationship defined between two models + + + +public **createQuery** (*unknown* $phql) + +Creates a Phalcon\\Mvc\\Model\\Query without execute it + + + +public **executeQuery** (*unknown* $phql, [*unknown* $placeholders], [*unknown* $types]) + +Creates a Phalcon\\Mvc\\Model\\Query and execute it + + + +public **createBuilder** ([*unknown* $params]) + +Creates a Phalcon\\Mvc\\Model\\Query\\Builder + + + +public **getLastQuery** () + +Returns the last query created or executed in the models manager + + + +public **registerNamespaceAlias** (*unknown* $alias, *unknown* $namespaceName) + +Registers shorter aliases for namespaces in PHQL statements + + + +public **getNamespaceAlias** (*unknown* $alias) + +Returns a real namespace from its alias + + + +public **getNamespaceAliases** () + +Returns all the registered namespace aliases diff --git a/id/api/Phalcon_Mvc_Model_ManagerInterface.rst b/id/api/Phalcon_Mvc_Model_ManagerInterface.rst new file mode 100644 index 000000000000..2ac2e7e7ea1d --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_ManagerInterface.rst @@ -0,0 +1,201 @@ +Interface **Phalcon\\Mvc\\Model\\ManagerInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **setModelSource** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $source) + +... + + +abstract public **getModelSource** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **setModelSchema** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $schema) + +... + + +abstract public **getModelSchema** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **setConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +... + + +abstract public **setReadConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +... + + +abstract public **getReadConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **setWriteConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $connectionService) + +... + + +abstract public **getWriteConnectionService** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getReadConnection** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getWriteConnection** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **isInitialized** (*unknown* $modelName) + +... + + +abstract public **getLastInitialized** () + +... + + +abstract public **load** (*unknown* $modelName, [*unknown* $newInstance]) + +... + + +abstract public **addHasOne** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $fields, *unknown* $referencedModel, *unknown* $referencedFields, [*unknown* $options]) + +... + + +abstract public **addBelongsTo** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $fields, *unknown* $referencedModel, *unknown* $referencedFields, [*unknown* $options]) + +... + + +abstract public **addHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $fields, *unknown* $referencedModel, *unknown* $referencedFields, [*unknown* $options]) + +... + + +abstract public **existsBelongsTo** (*unknown* $modelName, *unknown* $modelRelation) + +... + + +abstract public **existsHasMany** (*unknown* $modelName, *unknown* $modelRelation) + +... + + +abstract public **existsHasOne** (*unknown* $modelName, *unknown* $modelRelation) + +... + + +abstract public **getBelongsToRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +... + + +abstract public **getHasManyRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +... + + +abstract public **getHasOneRecords** (*unknown* $method, *unknown* $modelName, *unknown* $modelRelation, :doc:`Phalcon\\Mvc\\ModelInterface ` $record, [*unknown* $parameters]) + +... + + +abstract public **getBelongsTo** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getHasOne** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getHasOneAndHasMany** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getRelations** (*unknown* $modelName) + +... + + +abstract public **getRelationsBetween** (*unknown* $first, *unknown* $second) + +... + + +abstract public **createQuery** (*unknown* $phql) + +... + + +abstract public **executeQuery** (*unknown* $phql, [*unknown* $placeholders]) + +... + + +abstract public **createBuilder** ([*unknown* $params]) + +... + + +abstract public **addBehavior** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\Mvc\\Model\\BehaviorInterface ` $behavior) + +... + + +abstract public **notifyEvent** (*unknown* $eventName, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **missingMethod** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $eventName, *unknown* $data) + +... + + +abstract public **getLastQuery** () + +... + + +abstract public **getRelationByAlias** (*unknown* $modelName, *unknown* $alias) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Message.rst b/id/api/Phalcon_Mvc_Model_Message.rst new file mode 100644 index 000000000000..7005dafb6a10 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Message.rst @@ -0,0 +1,105 @@ +Class **Phalcon\\Mvc\\Model\\Message** +====================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\MessageInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Encapsulates validation info generated before save/delete records fails + +.. code-block:: php + + name == 'Peter') { + $text = "A robot cannot be named Peter"; + $field = "name"; + $type = "InvalidValue"; + $message = new Message($text, $field, $type); + $this->appendMessage($message); + } + } + + } + + + +Methods +------- + +public **__construct** (*string* $message, [*string|array* $field], [*string* $type], [:doc:`Phalcon\\Mvc\\ModelInterface ` $model]) + +Phalcon\\Mvc\\Model\\Message constructor + + + +public **setType** (*unknown* $type) + +Sets message type + + + +public **getType** () + +Returns message type + + + +public **setMessage** (*unknown* $message) + +Sets verbose message + + + +public **getMessage** () + +Returns verbose message + + + +public **setField** (*unknown* $field) + +Sets field name related to message + + + +public **getField** () + +Returns field name related to message + + + +public **setModel** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Set the model who generates the message + + + +public **getModel** () + +Returns the model that produced the message + + + +public **__toString** () + +Magic __toString method returns verbose message + + + +public static **__set_state** (*array* $message) + +Magic __set_state helps to re-build messages variable exporting + + + diff --git a/id/api/Phalcon_Mvc_Model_MessageInterface.rst b/id/api/Phalcon_Mvc_Model_MessageInterface.rst new file mode 100644 index 000000000000..119f3c440712 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MessageInterface.rst @@ -0,0 +1,56 @@ +Interface **Phalcon\\Mvc\\Model\\MessageInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $message, [*unknown* $field], [*unknown* $type]) + +... + + +abstract public **setType** (*unknown* $type) + +... + + +abstract public **getType** () + +... + + +abstract public **setMessage** (*unknown* $message) + +... + + +abstract public **getMessage** () + +... + + +abstract public **setField** (*unknown* $field) + +... + + +abstract public **getField** () + +... + + +abstract public **__toString** () + +... + + +abstract public static **__set_state** (*array* $message) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData.rst b/id/api/Phalcon_Mvc_Model_MetaData.rst new file mode 100644 index 000000000000..375f41c9bac2 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData.rst @@ -0,0 +1,415 @@ +Abstract class **Phalcon\\Mvc\\Model\\MetaData** +================================================ + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Because Phalcon\\Mvc\\Model requires meta-data like field names, data types, primary keys, etc. this component collect them and store for further querying by Phalcon\\Mvc\\Model. Phalcon\\Mvc\\Model\\MetaData can also use adapters to store temporarily or permanently the meta-data. A standard Phalcon\\Mvc\\Model\\MetaData can be used to query model attributes: + +.. code-block:: php + + getAttributes(new Robots()); + print_r($attributes); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) + +Set the meta-data extraction strategy + + + +public **getStrategy** () + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaDataInterface.rst b/id/api/Phalcon_Mvc_Model_MetaDataInterface.rst new file mode 100644 index 000000000000..2abe56168874 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaDataInterface.rst @@ -0,0 +1,156 @@ +Interface **Phalcon\\Mvc\\Model\\MetaDataInterface** +==================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) + +... + + +abstract public **getStrategy** () + +... + + +abstract public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) + +... + + +abstract public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) + +... + + +abstract public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) + +... + + +abstract public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +... + + +abstract public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +... + + +abstract public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) + +... + + +abstract public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) + +... + + +abstract public **isEmpty** () + +... + + +abstract public **reset** () + +... + + +abstract public **read** (*unknown* $key) + +... + + +abstract public **write** (*unknown* $key, *unknown* $data) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Apc.rst b/id/api/Phalcon_Mvc_Model_MetaData_Apc.rst new file mode 100644 index 000000000000..8a49a95869f5 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Apc.rst @@ -0,0 +1,436 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Apc** +============================================ + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in the APC cache. Data will erased if the web server is restarted By default meta-data is stored for 48 hours (172800 seconds) You can query the meta-data by printing apc_fetch('$PMM$') or apc_fetch('$PMM$my-app-id') + +.. code-block:: php + + 'my-app-id', + 'lifetime' => 86400 + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Apc constructor + + + +public **read** (*unknown* $key) + +Reads meta-data from APC + + + +public **write** (*unknown* $key, *unknown* $data) + +Writes the meta-data to APC + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Files.rst b/id/api/Phalcon_Mvc_Model_MetaData_Files.rst new file mode 100644 index 000000000000..7be4f031849b --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Files.rst @@ -0,0 +1,435 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Files** +============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in PHP files. + +.. code-block:: php + + 'app/cache/metadata/' + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Files constructor + + + +public *mixed* **read** (*string* $key) + +Reads meta-data from files + + + +public **write** (*string* $key, *array* $data) + +Writes the meta-data to files + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Libmemcached.rst b/id/api/Phalcon_Mvc_Model_MetaData_Libmemcached.rst new file mode 100644 index 000000000000..7b3851258342 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Libmemcached.rst @@ -0,0 +1,436 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Libmemcached** +===================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in the Memcache. By default meta-data is stored for 48 hours (172800 seconds) + +.. code-block:: php + + array( + array('host' => 'localhost', 'port' => 11211, 'weight' => 1), + ), + 'client' => array( + Memcached::OPT_HASH => Memcached::HASH_MD5, + Memcached::OPT_PREFIX_KEY => 'prefix.', + ), + 'lifetime' => 3600, + 'prefix' => 'my_' + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Libmemcached constructor + + + +public **read** (*unknown* $key) + +Reads metadata from Memcache + + + +public **write** (*unknown* $key, *unknown* $data) + +Writes the metadata to Memcache + + + +public **reset** () + +Flush Memcache data and resets internal meta-data in order to regenerate it + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Memcache.rst b/id/api/Phalcon_Mvc_Model_MetaData_Memcache.rst new file mode 100644 index 000000000000..db4711f572a2 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Memcache.rst @@ -0,0 +1,432 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Memcache** +================================================= + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in the Memcache. By default meta-data is stored for 48 hours (172800 seconds) + +.. code-block:: php + + 'my-app-id', + 'lifetime' => 86400, + 'host' => 'localhost', + 'port' => 11211, + 'persistent' => false + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Memcache constructor + + + +public **read** (*unknown* $key) + +Reads metadata from Memcache + + + +public **write** (*unknown* $key, *unknown* $data) + +Writes the metadata to Memcache + + + +public **reset** () + +Flush Memcache data and resets internal meta-data in order to regenerate it + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Memory.rst b/id/api/Phalcon_Mvc_Model_MetaData_Memory.rst new file mode 100644 index 000000000000..97f06cebe2b4 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Memory.rst @@ -0,0 +1,426 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Memory** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in memory. Data will be erased when the request finishes + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Memory constructor + + + +public *array* **read** (*string* $key) + +Reads the meta-data from temporal memory + + + +public **write** (*string* $key, *array* $data) + +Writes the meta-data to temporal memory + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Redis.rst b/id/api/Phalcon_Mvc_Model_MetaData_Redis.rst new file mode 100644 index 000000000000..12b5c90e8745 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Redis.rst @@ -0,0 +1,432 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Redis** +============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in the Redis. By default meta-data is stored for 48 hours (172800 seconds) + +.. code-block:: php + + 'my-app-id', + 'lifetime' => 86400, + 'host' => 'localhost', + 'port' => 6379, + 'persistent' => false + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Redis constructor + + + +public **read** (*unknown* $key) + +Reads metadata from Redis + + + +public **write** (*unknown* $key, *unknown* $data) + +Writes the metadata to Redis + + + +public **reset** () + +Flush Redis data and resets internal meta-data in order to regenerate it + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Session.rst b/id/api/Phalcon_Mvc_Model_MetaData_Session.rst new file mode 100644 index 000000000000..1895f6feab6d --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Session.rst @@ -0,0 +1,435 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Session** +================================================ + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in session. Data will erased when the session finishes. Meta-data are permanent while the session is active. You can query the meta-data by printing $_SESSION['$PMM$'] + +.. code-block:: php + + 'my-app-id' + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Session constructor + + + +public *array* **read** (*string* $key) + +Reads meta-data from $_SESSION + + + +public **write** (*string* $key, *array* $data) + +Writes the meta-data to $_SESSION + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_StrategyInterface.rst b/id/api/Phalcon_Mvc_Model_MetaData_StrategyInterface.rst new file mode 100644 index 000000000000..4b9fe1364931 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_StrategyInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface** +============================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **getMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +... + + +abstract public **getColumnMaps** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Annotations.rst b/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Annotations.rst new file mode 100644 index 000000000000..42fcd6dfa9d5 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Annotations.rst @@ -0,0 +1,25 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Strategy\\Annotations** +============================================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final public **getMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +The meta-data is obtained by reading the column descriptions from the database information schema + + + +final public **getColumnMaps** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Read the model's column map, this can't be inferred + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Introspection.rst b/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Introspection.rst new file mode 100644 index 000000000000..fa3c2efca799 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Strategy_Introspection.rst @@ -0,0 +1,28 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Strategy\\Introspection** +================================================================ + +*implements* :doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Model\\MetaData\\Strategy\\Instrospection Queries the table meta-data in order to instrospect the model's metadata + + +Methods +------- + +final public **getMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +The meta-data is obtained by reading the column descriptions from the database information schema + + + +final public **getColumnMaps** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, :doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Read the model's column map, this can't be inferred + + + diff --git a/id/api/Phalcon_Mvc_Model_MetaData_Xcache.rst b/id/api/Phalcon_Mvc_Model_MetaData_Xcache.rst new file mode 100644 index 000000000000..3cb393a22aa7 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_MetaData_Xcache.rst @@ -0,0 +1,436 @@ +Class **Phalcon\\Mvc\\Model\\MetaData\\Xcache** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\MetaData ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\Model\\MetaDataInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Stores model meta-data in the XCache cache. Data will erased if the web server is restarted By default meta-data is stored for 48 hours (172800 seconds) You can query the meta-data by printing xcache_get('$PMM$') or xcache_get('$PMM$my-app-id') + +.. code-block:: php + + 'my-app-id', + 'lifetime' => 86400 + )); + + + +Constants +--------- + +*integer* **MODELS_ATTRIBUTES** + +*integer* **MODELS_PRIMARY_KEY** + +*integer* **MODELS_NON_PRIMARY_KEY** + +*integer* **MODELS_NOT_NULL** + +*integer* **MODELS_DATA_TYPES** + +*integer* **MODELS_DATA_TYPES_NUMERIC** + +*integer* **MODELS_DATE_AT** + +*integer* **MODELS_DATE_IN** + +*integer* **MODELS_IDENTITY_COLUMN** + +*integer* **MODELS_DATA_TYPES_BIND** + +*integer* **MODELS_AUTOMATIC_DEFAULT_INSERT** + +*integer* **MODELS_AUTOMATIC_DEFAULT_UPDATE** + +*integer* **MODELS_DEFAULT_VALUES** + +*integer* **MODELS_EMPTY_STRING_VALUES** + +*integer* **MODELS_COLUMN_MAP** + +*integer* **MODELS_REVERSE_COLUMN_MAP** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\Model\\MetaData\\Xcache constructor + + + +public *array* **read** (*string* $key) + +Reads metadata from XCache + + + +public **write** (*string* $key, *array* $data) + +Writes the metadata to XCache + + + +final protected **_initialize** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $key, *unknown* $table, *unknown* $schema) inherited from Phalcon\\Mvc\\Model\\MetaData + +Initialize the metadata for certain table + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Model\\MetaData + +Sets the DependencyInjector container + + + +public **getDI** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the DependencyInjector container + + + +public **setStrategy** (:doc:`Phalcon\\Mvc\\Model\\MetaData\\StrategyInterface ` $strategy) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the meta-data extraction strategy + + + +public **getStrategy** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Return the strategy to obtain the meta-data + + + +final public **readMetaData** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the complete meta-data for certain model + +.. code-block:: php + + readMetaData(new Robots()); + + + + +final public **readMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads meta-data for certain model + +.. code-block:: php + + readMetaDataIndex(new Robots(), 0); + + + + +final public **writeMetaDataIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index, *unknown* $data) inherited from Phalcon\\Mvc\\Model\\MetaData + +Writes meta-data for certain model using a MODEL_* constant + +.. code-block:: php + + writeColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP, array('leName' => 'name'))); + + + + +final public **readColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads the ordered/reversed column map for certain model + +.. code-block:: php + + readColumnMap(new Robots())); + + + + +final public **readColumnMapIndex** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $index) inherited from Phalcon\\Mvc\\Model\\MetaData + +Reads column-map information for certain model using a MODEL_* constant + +.. code-block:: php + + readColumnMapIndex(new Robots(), MetaData::MODELS_REVERSE_COLUMN_MAP)); + + + + +public **getAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns table attributes names (fields) + +.. code-block:: php + + getAttributes(new Robots())); + + + + +public **getPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are part of the primary key + +.. code-block:: php + + getPrimaryKeyAttributes(new Robots())); + + + + +public **getNonPrimaryKeyAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of fields which are not part of the primary key + +.. code-block:: php + + getNonPrimaryKeyAttributes(new Robots())); + + + + +public **getNotNullAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns an array of not null attributes + +.. code-block:: php + + getNotNullAttributes(new Robots())); + + + + +public **getDataTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their data types + +.. code-block:: php + + getDataTypes(new Robots())); + + + + +public **getDataTypesNumeric** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes which types are numerical + +.. code-block:: php + + getDataTypesNumeric(new Robots())); + + + + +public *string* **getIdentityField** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the name of identity field (if one is present) + +.. code-block:: php + + getIdentityField(new Robots())); + + + + +public **getBindTypes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes and their bind data types + +.. code-block:: php + + getBindTypes(new Robots())); + + + + +public **getAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + getAutomaticCreateAttributes(new Robots())); + + + + +public **getAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + getAutomaticUpdateAttributes(new Robots())); + + + + +public **setAutomaticCreateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the INSERT SQL generation + +.. code-block:: php + + setAutomaticCreateAttributes(new Robots(), array('created_at' => true)); + + + + +public **setAutomaticUpdateAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that must be ignored from the UPDATE SQL generation + +.. code-block:: php + + setAutomaticUpdateAttributes(new Robots(), array('modified_at' => true)); + + + + +public **setEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $attributes) inherited from Phalcon\\Mvc\\Model\\MetaData + +Set the attributes that allow empty string values + +.. code-block:: php + + setEmptyStringAttributes(new Robots(), array('name' => true)); + + + + +public **getEmptyStringAttributes** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes allow empty strings + +.. code-block:: php + + getEmptyStringAttributes(new Robots())); + + + + +public **getDefaultValues** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns attributes (which have default values) and their default values + +.. code-block:: php + + getDefaultValues(new Robots())); + + + + +public **getColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the column map if any + +.. code-block:: php + + getColumnMap(new Robots())); + + + + +public **getReverseColumnMap** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model) inherited from Phalcon\\Mvc\\Model\\MetaData + +Returns the reverse column map if any + +.. code-block:: php + + getReverseColumnMap(new Robots())); + + + + +public **hasAttribute** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *unknown* $attribute) inherited from Phalcon\\Mvc\\Model\\MetaData + +Check if a model has certain attribute + +.. code-block:: php + + hasAttribute(new Robots(), 'name')); + + + + +public **isEmpty** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Checks if the internal meta-data container is empty + +.. code-block:: php + + isEmpty()); + + + + +public **reset** () inherited from Phalcon\\Mvc\\Model\\MetaData + +Resets internal meta-data in order to regenerate it + +.. code-block:: php + + reset(); + + + + diff --git a/id/api/Phalcon_Mvc_Model_Query.rst b/id/api/Phalcon_Mvc_Model_Query.rst new file mode 100644 index 000000000000..bccf67211bf6 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Query.rst @@ -0,0 +1,309 @@ +Class **Phalcon\\Mvc\\Model\\Query** +==================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\QueryInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class takes a PHQL intermediate representation and executes it. + +.. code-block:: php + + executeQuery($phql, array( + "name" => "Lamborghini" + )); + + foreach ($result as $row) { + echo "Name: ", $row->cars->name, "\n"; + echo "Price: ", $row->cars->price, "\n"; + echo "Taxes: ", $row->taxes, "\n"; + } + + + +Constants +--------- + +*integer* **TYPE_SELECT** + +*integer* **TYPE_INSERT** + +*integer* **TYPE_UPDATE** + +*integer* **TYPE_DELETE** + +Methods +------- + +public **__construct** ([*string* $phql], [:doc:`Phalcon\\DiInterface ` $dependencyInjector], [*unknown* $options]) + +Phalcon\\Mvc\\Model\\Query constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injection container + + + +public **getDI** () + +Returns the dependency injection container + + + +public **setUniqueRow** (*unknown* $uniqueRow) + +Tells to the query if only the first row in the resultset must be returned + + + +public **getUniqueRow** () + +Check if the query is programmed to get only the first row in the resultset + + + +final protected **_getQualified** (*array* $expr) + +Replaces the model's name to its source name in a qualifed-name expression + + + +final protected **_getCallArgument** (*array* $argument) + +Resolves a expression in a single call argument + + + +final protected **_getCaseExpression** (*array* $expr) + +Resolves a expression in a single call argument + + + +final protected **_getFunctionCall** (*array* $expr) + +Resolves a expression in a single call argument + + + +final protected *string* **_getExpression** (*array* $expr, [*boolean* $quoting]) + +Resolves an expression from its intermediate code into a string + + + +final protected **_getSelectColumn** (*array* $column) + +Resolves a column from its intermediate representation into an array used to determine if the resultset produced is simple or complex + + + +final protected *string* **_getTable** (:doc:`Phalcon\\Mvc\\Model\\ManagerInterface ` $manager, *array* $qualifiedName) + +Resolves a table in a SELECT statement checking if the model exists + + + +final protected **_getJoin** (:doc:`Phalcon\\Mvc\\Model\\ManagerInterface ` $manager, *unknown* $join) + +Resolves a JOIN clause checking if the associated models exist + + + +final protected *string* **_getJoinType** (*array* $join) + +Resolves a JOIN type + + + +final protected *array* **_getSingleJoin** (*string* $joinType, *string* $joinSource, *string* $modelAlias, *string* $joinAlias, :doc:`Phalcon\\Mvc\\Model\\RelationInterface ` $relation) + +Resolves joins involving has-one/belongs-to/has-many relations + + + +final protected *array* **_getMultiJoin** (*string* $joinType, *string* $joinSource, *string* $modelAlias, *string* $joinAlias, :doc:`Phalcon\\Mvc\\Model\\RelationInterface ` $relation) + +Resolves joins involving many-to-many relations + + + +final protected *array* **_getJoins** (*array* $select) + +Processes the JOINs in the query returning an internal representation for the database dialect + + + +final protected *array* **_getOrderClause** (*array|string* $order) + +Returns a processed order clause for a SELECT statement + + + +final protected **_getGroupClause** (*array* $group) + +Returns a processed group clause for a SELECT statement + + + +final protected **_getLimitClause** (*array* $limitClause) + +Returns a processed limit clause for a SELECT statement + + + +final protected **_prepareSelect** ([*unknown* $ast], [*unknown* $merge]) + +Analyzes a SELECT intermediate code and produces an array to be executed later + + + +final protected **_prepareInsert** () + +Analyzes an INSERT intermediate code and produces an array to be executed later + + + +final protected **_prepareUpdate** () + +Analyzes an UPDATE intermediate code and produces an array to be executed later + + + +final protected **_prepareDelete** () + +Analyzes a DELETE intermediate code and produces an array to be executed later + + + +public **parse** () + +Parses the intermediate code produced by Phalcon\\Mvc\\Model\\Query\\Lang generating another intermediate representation that could be executed by Phalcon\\Mvc\\Model\\Query + + + +public **getCache** () + +Returns the current cache backend instance + + + +final protected **_executeSelect** (*unknown* $intermediate, *unknown* $bindParams, *unknown* $bindTypes, [*unknown* $simulate]) + +Executes the SELECT intermediate representation producing a Phalcon\\Mvc\\Model\\Resultset + + + +final protected :doc:`Phalcon\\Mvc\\Model\\Query\\StatusInterface ` **_executeInsert** (*array* $intermediate, *array* $bindParams, *array* $bindTypes) + +Executes the INSERT intermediate representation producing a Phalcon\\Mvc\\Model\\Query\\Status + + + +final protected :doc:`Phalcon\\Mvc\\Model\\Query\\StatusInterface ` **_executeUpdate** (*array* $intermediate, *array* $bindParams, *array* $bindTypes) + +Executes the UPDATE intermediate representation producing a Phalcon\\Mvc\\Model\\Query\\Status + + + +final protected :doc:`Phalcon\\Mvc\\Model\\Query\\StatusInterface ` **_executeDelete** (*array* $intermediate, *array* $bindParams, *array* $bindTypes) + +Executes the DELETE intermediate representation producing a Phalcon\\Mvc\\Model\\Query\\Status + + + +final protected :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` **_getRelatedRecords** (:doc:`Phalcon\\Mvc\\ModelInterface ` $model, *array* $intermediate, *array* $bindParams, *array* $bindTypes) + +Query the records on which the UPDATE/DELETE operation well be done + + + +public *mixed* **execute** ([*array* $bindParams], [*array* $bindTypes]) + +Executes a parsed PHQL statement + + + +public :doc:`Phalcon\\Mvc\\ModelInterface ` **getSingleResult** ([*array* $bindParams], [*array* $bindTypes]) + +Executes the query returning the first result + + + +public **setType** (*unknown* $type) + +Sets the type of PHQL statement to be executed + + + +public **getType** () + +Gets the type of PHQL statement executed + + + +public **setBindParams** (*array* $bindParams, [*unknown* $merge]) + +Set default bind parameters + + + +public *array* **getBindParams** () + +Returns default bind params + + + +public **setBindTypes** (*array* $bindTypes, [*unknown* $merge]) + +Set default bind parameters + + + +public *array* **getBindTypes** () + +Returns default bind types + + + +public **setIntermediate** (*array* $intermediate) + +Allows to set the IR to be executed + + + +public *array* **getIntermediate** () + +Returns the intermediate representation of the PHQL statement + + + +public **cache** (*unknown* $cacheOptions) + +Sets the cache parameters of the query + + + +public **getCacheOptions** () + +Returns the current cache options + + + +public **getSql** () + +Returns the SQL to be generated by the internal PHQL (only works in SELECT statements) + + + diff --git a/id/api/Phalcon_Mvc_Model_QueryInterface.rst b/id/api/Phalcon_Mvc_Model_QueryInterface.rst new file mode 100644 index 000000000000..3d589971b4f3 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_QueryInterface.rst @@ -0,0 +1,41 @@ +Interface **Phalcon\\Mvc\\Model\\QueryInterface** +================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **parse** () + +... + + +abstract public **cache** (*unknown* $cacheOptions) + +... + + +abstract public **getCacheOptions** () + +... + + +abstract public **setUniqueRow** (*unknown* $uniqueRow) + +... + + +abstract public **getUniqueRow** () + +... + + +abstract public **execute** ([*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Query_Builder.rst b/id/api/Phalcon_Mvc_Model_Query_Builder.rst new file mode 100644 index 000000000000..7915c82fbbc6 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Query_Builder.rst @@ -0,0 +1,438 @@ +Class **Phalcon\\Mvc\\Model\\Query\\Builder** +============================================= + +*implements* :doc:`Phalcon\\Mvc\\Model\\Query\\BuilderInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Helps to create PHQL queries using an OO interface + +.. code-block:: php + + array('Users'), + 'columns' => array('id', 'name', 'status'), + 'conditions' => array( + array( + "created > :min: AND created < :max:", + array("min" => '2013-01-01', 'max' => '2014-01-01'), + array("min" => PDO::PARAM_STR, 'max' => PDO::PARAM_STR), + ), + ), + // or 'conditions' => "created > '2013-01-01' AND created < '2014-01-01'", + 'group' => array('id', 'name'), + 'having' => "name = 'Kamil'", + 'order' => array('name', 'id'), + 'limit' => 20, + 'offset' => 20, + // or 'limit' => array(20, 20), + ); + $queryBuilder = new \Phalcon\Mvc\Model\Query\Builder($params); + + + +Methods +------- + +public **__construct** ([*unknown* $params], [:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Phalcon\\Mvc\\Model\\Query\\Builder constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **distinct** (*unknown* $distinct) + +Sets SELECT DISTINCT / SELECT ALL flag + +.. code-block:: php + + distinct("status"); + $builder->distinct(null); + + + + +public **getDistinct** () + +Returns SELECT DISTINCT / SELECT ALL flag + + + +public **columns** (*unknown* $columns) + +Sets the columns to be queried + +.. code-block:: php + + columns("id, name"); + $builder->columns(array('id', 'name')); + $builder->columns(array('name', 'number' => 'COUNT(*)')); + + + + +public *string|array* **getColumns** () + +Return the columns to be queried + + + +public **from** (*unknown* $models) + +Sets the models who makes part of the query + +.. code-block:: php + + from('Robots'); + $builder->from(array('Robots', 'RobotsParts')); + $builder->from(array('r' => 'Robots', 'rp' => 'RobotsParts')); + + + + +public **addFrom** (*unknown* $model, [*unknown* $alias], [*unknown* $with]) + +Add a model to take part of the query + +.. code-block:: php + + addFrom('Robots'); + + // Load data from model 'Robots' using 'r' as alias in PHQL + $builder->addFrom('Robots', 'r'); + + // Load data from model 'Robots' using 'r' as alias in PHQL + // and eager load model 'RobotsParts' + $builder->addFrom('Robots', 'r', 'RobotsParts'); + + // Load data from model 'Robots' using 'r' as alias in PHQL + // and eager load models 'RobotsParts' and 'Parts' + $builder->addFrom('Robots', 'r', ['RobotsParts', 'Parts']); + + + + +public *string|array* **getFrom** () + +Return the models who makes part of the query + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **join** (*string* $model, [*string* $conditions], [*string* $alias], [*string* $type]) + +Adds a INNER join to the query + +.. code-block:: php + + join('Robots'); + + // Inner Join model 'Robots' specifing conditions + $builder->join('Robots', 'Robots.id = RobotsParts.robots_id'); + + // Inner Join model 'Robots' specifing conditions and alias + $builder->join('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + // Left Join model 'Robots' specifing conditions, alias and type of join + $builder->join('Robots', 'r.id = RobotsParts.robots_id', 'r', 'LEFT'); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **innerJoin** (*string* $model, [*string* $conditions], [*string* $alias]) + +Adds a INNER join to the query + +.. code-block:: php + + innerJoin('Robots'); + + // Inner Join model 'Robots' specifing conditions + $builder->innerJoin('Robots', 'Robots.id = RobotsParts.robots_id'); + + // Inner Join model 'Robots' specifing conditions and alias + $builder->innerJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **leftJoin** (*string* $model, [*string* $conditions], [*string* $alias]) + +Adds a LEFT join to the query + +.. code-block:: php + + leftJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **rightJoin** (*string* $model, [*string* $conditions], [*string* $alias]) + +Adds a RIGHT join to the query + +.. code-block:: php + + rightJoin('Robots', 'r.id = RobotsParts.robots_id', 'r'); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **where** (*mixed* $conditions, [*array* $bindParams], [*array* $bindTypes]) + +Sets the query conditions + +.. code-block:: php + + where(100); + $builder->where('name = "Peter"'); + $builder->where('name = :name: AND id > :id:', array('name' => 'Peter', 'id' => 100)); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **andWhere** (*string* $conditions, [*array* $bindParams], [*array* $bindTypes]) + +Appends a condition to the current conditions using a AND operator + +.. code-block:: php + + andWhere('name = "Peter"'); + $builder->andWhere('name = :name: AND id > :id:', array('name' => 'Peter', 'id' => 100)); + + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **orWhere** (*string* $conditions, [*array* $bindParams], [*array* $bindTypes]) + +Appends a condition to the current conditions using a OR operator + +.. code-block:: php + + orWhere('name = "Peter"'); + $builder->orWhere('name = :name: AND id > :id:', array('name' => 'Peter', 'id' => 100)); + + + + +public **betweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +Appends a BETWEEN condition to the current conditions + +.. code-block:: php + + betweenWhere('price', 100.25, 200.50); + + + + +public **notBetweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +Appends a NOT BETWEEN condition to the current conditions + +.. code-block:: php + + notBetweenWhere('price', 100.25, 200.50); + + + + +public **inWhere** (*unknown* $expr, *array* $values) + +Appends an IN condition to the current conditions + +.. code-block:: php + + inWhere('id', [1, 2, 3]); + + + + +public **notInWhere** (*unknown* $expr, *array* $values) + +Appends a NOT IN condition to the current conditions + +.. code-block:: php + + notInWhere('id', [1, 2, 3]); + + + + +public *string|array* **getWhere** () + +Return the conditions for the query + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **orderBy** (*string|array* $orderBy) + +Sets a ORDER BY condition clause + +.. code-block:: php + + orderBy('Robots.name'); + $builder->orderBy(array('1', 'Robots.name')); + + + + +public *string|array* **getOrderBy** () + +Returns the set ORDER BY clause + + + +public **having** (*unknown* $having) + +Sets a HAVING condition clause. You need to escape PHQL reserved words using [ and ] delimiters + +.. code-block:: php + + having('SUM(Robots.price) > 0'); + + + + +public **forUpdate** (*unknown* $forUpdate) + +Sets a FOR UPDATE clause + +.. code-block:: php + + forUpdate(true); + + + + +public *string|array* **getHaving** () + +Return the current having clause + + + +public **limit** ([*unknown* $limit], [*unknown* $offset]) + +Sets a LIMIT clause, optionally a offset clause + +.. code-block:: php + + limit(100); + $builder->limit(100, 20); + + + + +public *string|array* **getLimit** () + +Returns the current LIMIT clause + + + +public **offset** (*unknown* $offset) + +Sets an OFFSET clause + +.. code-block:: php + + offset(30); + + + + +public *string|array* **getOffset** () + +Returns the current OFFSET clause + + + +public :doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` **groupBy** (*string|array* $group) + +Sets a GROUP BY clause + +.. code-block:: php + + groupBy(array('Robots.name')); + + + + +public *string* **getGroupBy** () + +Returns the GROUP BY clause + + + +final public *string* **getPhql** () + +Returns a PHQL statement built based on the builder parameters + + + +public **getQuery** () + +Returns the query built + + + diff --git a/id/api/Phalcon_Mvc_Model_Query_BuilderInterface.rst b/id/api/Phalcon_Mvc_Model_Query_BuilderInterface.rst new file mode 100644 index 000000000000..d2f6926a1aa0 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Query_BuilderInterface.rst @@ -0,0 +1,151 @@ +Interface **Phalcon\\Mvc\\Model\\Query\\BuilderInterface** +========================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** ([*unknown* $params]) + +... + + +abstract public **columns** (*unknown* $columns) + +... + + +abstract public **getColumns** () + +... + + +abstract public **from** (*unknown* $models) + +... + + +abstract public **addFrom** (*unknown* $model, [*unknown* $alias]) + +... + + +abstract public **getFrom** () + +... + + +abstract public **join** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +... + + +abstract public **innerJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +... + + +abstract public **leftJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +... + + +abstract public **rightJoin** (*unknown* $model, [*unknown* $conditions], [*unknown* $alias]) + +... + + +abstract public **where** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **andWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **orWhere** (*unknown* $conditions, [*unknown* $bindParams], [*unknown* $bindTypes]) + +... + + +abstract public **betweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +... + + +abstract public **notBetweenWhere** (*unknown* $expr, *unknown* $minimum, *unknown* $maximum) + +... + + +abstract public **inWhere** (*unknown* $expr, *array* $values) + +... + + +abstract public **notInWhere** (*unknown* $expr, *array* $values) + +... + + +abstract public **getWhere** () + +... + + +abstract public **orderBy** (*unknown* $orderBy) + +... + + +abstract public **getOrderBy** () + +... + + +abstract public **having** (*unknown* $having) + +... + + +abstract public **getHaving** () + +... + + +abstract public **limit** (*unknown* $limit, [*unknown* $offset]) + +... + + +abstract public **getLimit** () + +... + + +abstract public **groupBy** (*unknown* $group) + +... + + +abstract public **getGroupBy** () + +... + + +abstract public **getPhql** () + +... + + +abstract public **getQuery** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Query_Lang.rst b/id/api/Phalcon_Mvc_Model_Query_Lang.rst new file mode 100644 index 000000000000..6e0e2ad97729 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Query_Lang.rst @@ -0,0 +1,27 @@ +Abstract class **Phalcon\\Mvc\\Model\\Query\\Lang** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +PHQL is implemented as a parser (written in C) that translates syntax in that of the target RDBMS. It allows Phalcon to offer a unified SQL language to the developer, while internally doing all the work of translating PHQL instructions to the most optimal SQL instructions depending on the RDBMS type associated with a model. To achieve the highest performance possible, we wrote 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. + +.. code-block:: php + + ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class represents the status returned by a PHQL statement like INSERT, UPDATE or DELETE. It offers context information and the related messages produced by the model which finally executes the operations when it fails + +.. code-block:: php + + modelsManager->executeQuery($phql, array( + 'id' => 100, + 'name' => 'Astroy Boy', + 'type' => 'mechanical', + 'year' => 1959 + )); + + \//Check if the update was successful + if ($status->success() == true) { + echo 'OK'; + } + + + +Methods +------- + +public **__construct** (*unknown* $success, [:doc:`Phalcon\\Mvc\\ModelInterface ` $model]) + + + + + +public **getModel** () + +Returns the model that executed the action + + + +public **getMessages** () + +Returns the messages produced because of a failed operation + + + +public **success** () + +Allows to check if the executed operation was successful + + + diff --git a/id/api/Phalcon_Mvc_Model_Query_StatusInterface.rst b/id/api/Phalcon_Mvc_Model_Query_StatusInterface.rst new file mode 100644 index 000000000000..d39505ebe059 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Query_StatusInterface.rst @@ -0,0 +1,31 @@ +Interface **Phalcon\\Mvc\\Model\\Query\\StatusInterface** +========================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $success, :doc:`Phalcon\\Mvc\\ModelInterface ` $model) + +... + + +abstract public **getModel** () + +... + + +abstract public **getMessages** () + +... + + +abstract public **success** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Relation.rst b/id/api/Phalcon_Mvc_Model_Relation.rst new file mode 100644 index 000000000000..cb4aaecf5f85 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Relation.rst @@ -0,0 +1,128 @@ +Class **Phalcon\\Mvc\\Model\\Relation** +======================================= + +*implements* :doc:`Phalcon\\Mvc\\Model\\RelationInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class represents a relationship between two models + + +Constants +--------- + +*integer* **BELONGS_TO** + +*integer* **HAS_ONE** + +*integer* **HAS_MANY** + +*integer* **HAS_ONE_THROUGH** + +*integer* **HAS_MANY_THROUGH** + +*integer* **NO_ACTION** + +*integer* **ACTION_RESTRICT** + +*integer* **ACTION_CASCADE** + +Methods +------- + +public **__construct** (*int* $type, *string* $referencedModel, *string|array* $fields, *string|array* $referencedFields, [*array* $options]) + +Phalcon\\Mvc\\Model\\Relation constructor + + + +public **setIntermediateRelation** (*string|array* $intermediateFields, *string* $intermediateModel, *string* $intermediateReferencedFields) + +Sets the intermediate model data for has-\*-through relations + + + +public **getType** () + +Returns the relation type + + + +public **getReferencedModel** () + +Returns the referenced model + + + +public *string|array* **getFields** () + +Returns the fields + + + +public *string|array* **getReferencedFields** () + +Returns the referenced fields + + + +public *string|array* **getOptions** () + +Returns the options + + + +public **getOption** (*unknown* $name) + +Returns an option by the specified name If the option doesn't exist null is returned + + + +public **isForeignKey** () + +Check whether the relation act as a foreign key + + + +public *string|array* **getForeignKey** () + +Returns the foreign key configuration + + + +public *array* **getParams** () + +Returns parameters that must be always used when the related records are obtained + + + +public **isThrough** () + +Check whether the relation is a 'many-to-many' relation or not + + + +public **isReusable** () + +Check if records returned by getting belongs-to/has-many are implicitly cached during the current request + + + +public *string|array* **getIntermediateFields** () + +Gets the intermediate fields for has-\*-through relations + + + +public **getIntermediateModel** () + +Gets the intermediate model for has-\*-through relations + + + +public *string|array* **getIntermediateReferencedFields** () + +Gets the intermediate referenced fields for has-\*-through relations diff --git a/id/api/Phalcon_Mvc_Model_RelationInterface.rst b/id/api/Phalcon_Mvc_Model_RelationInterface.rst new file mode 100644 index 000000000000..500e91637392 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_RelationInterface.rst @@ -0,0 +1,81 @@ +Interface **Phalcon\\Mvc\\Model\\RelationInterface** +==================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $type, *unknown* $referencedModel, *unknown* $fields, *unknown* $referencedFields, [*unknown* $options]) + +... + + +abstract public **setIntermediateRelation** (*unknown* $intermediateFields, *unknown* $intermediateModel, *unknown* $intermediateReferencedFields) + +... + + +abstract public **isReusable** () + +... + + +abstract public **getType** () + +... + + +abstract public **getReferencedModel** () + +... + + +abstract public **getFields** () + +... + + +abstract public **getReferencedFields** () + +... + + +abstract public **getOptions** () + +... + + +abstract public **isForeignKey** () + +... + + +abstract public **getForeignKey** () + +... + + +abstract public **isThrough** () + +... + + +abstract public **getIntermediateFields** () + +... + + +abstract public **getIntermediateModel** () + +... + + +abstract public **getIntermediateReferencedFields** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_ResultInterface.rst b/id/api/Phalcon_Mvc_Model_ResultInterface.rst new file mode 100644 index 000000000000..c5ad46dd9123 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_ResultInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Mvc\\Model\\ResultInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setDirtyState** (*unknown* $dirtyState) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Resultset.rst b/id/api/Phalcon_Mvc_Model_Resultset.rst new file mode 100644 index 000000000000..c82e0d12201f --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Resultset.rst @@ -0,0 +1,218 @@ +Abstract class **Phalcon\\Mvc\\Model\\Resultset** +================================================= + +*implements* :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface `, Iterator, Traversable, SeekableIterator, Countable, ArrayAccess, Serializable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows to Phalcon\\Mvc\\Model returns large resultsets with the minimum memory consumption Resultsets can be traversed using a standard foreach or a while statement. If a resultset is serialized it will dump all the rows into a big array. Then unserialize will retrieve the rows as they were before serializing. + +.. code-block:: php + + "name")); + foreach ($robots as robot) { + echo robot->name, "\n"; + } + + //Using a while + $robots = Robots::find(array("type='virtual'", "order" => "name")); + $robots->rewind(); + while ($robots->valid()) { + $robot = $robots->current(); + echo $robot->name, "\n"; + $robots->next(); + } + + + +Constants +--------- + +*integer* **TYPE_RESULT_FULL** + +*integer* **TYPE_RESULT_PARTIAL** + +*integer* **HYDRATE_RECORDS** + +*integer* **HYDRATE_OBJECTS** + +*integer* **HYDRATE_ARRAYS** + +Methods +------- + +public **__construct** (*\\Phalcon\\Db\\ResultInterface|false* $result, [:doc:`Phalcon\\Cache\\BackendInterface ` $cache]) + +Phalcon\\Mvc\\Model\\Resultset constructor + + + +public **next** () + +Moves cursor to next row in the resultset + + + +public **valid** () + +Check whether internal resource has rows to fetch + + + +public **key** () + +Gets pointer number of active row in the resultset + + + +final public **rewind** () + +Rewinds resultset to its beginning + + + +final public **seek** (*unknown* $position) + +Changes internal pointer to a specific position in the resultset Set new position if required and set this->_row + + + +final public **count** () + +Counts how many rows are in the resultset + + + +public **offsetExists** (*unknown* $index) + +Checks whether offset exists in the resultset + + + +public **offsetGet** (*unknown* $index) + +Gets row in a specific position of the resultset + + + +public **offsetSet** (*int* $index, :doc:`Phalcon\\Mvc\\ModelInterface ` $value) + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **offsetUnset** (*unknown* $offset) + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **getType** () + +Returns the internal type of data retrieval that the resultset is using + + + +public **getFirst** () + +Get first row in the resultset + + + +public **getLast** () + +Get last row in the resultset + + + +public **setIsFresh** (*unknown* $isFresh) + +Set if the resultset is fresh or an old one cached + + + +public **isFresh** () + +Tell if the resultset if fresh or an old one cached + + + +public **setHydrateMode** (*unknown* $hydrateMode) + +Sets the hydration mode in the resultset + + + +public **getHydrateMode** () + +Returns the current hydration mode + + + +public **getCache** () + +Returns the associated cache for the resultset + + + +public **getMessages** () + +Returns the error messages produced by a batch operation + + + +public *boolean* **update** (*array* $data, [*\Closure* $conditionCallback]) + +Updates every record in the resultset + + + +public **delete** ([*Closure* $conditionCallback]) + +Deletes every record in the resultset + + + +public :doc:`Phalcon\\Mvc\\Model ` [] **filter** (*callback* $filter) + +Filters a resultset returning only those the developer requires + +.. code-block:: php + + filter(function($robot){ + if ($robot->id < 3) { + return $robot; + } + }); + + + + +abstract public **toArray** () inherited from Phalcon\\Mvc\\Model\\ResultsetInterface + +... + + +abstract public **current** () inherited from Iterator + +... + + +abstract public **serialize** () inherited from Serializable + +... + + +abstract public **unserialize** (*unknown* $serialized) inherited from Serializable + +... + + diff --git a/id/api/Phalcon_Mvc_Model_ResultsetInterface.rst b/id/api/Phalcon_Mvc_Model_ResultsetInterface.rst new file mode 100644 index 000000000000..91e6a0aee047 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_ResultsetInterface.rst @@ -0,0 +1,46 @@ +Interface **Phalcon\\Mvc\\Model\\ResultsetInterface** +===================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **getType** () + +... + + +abstract public **getFirst** () + +... + + +abstract public **getLast** () + +... + + +abstract public **setIsFresh** (*unknown* $isFresh) + +... + + +abstract public **isFresh** () + +... + + +abstract public **getCache** () + +... + + +abstract public **toArray** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Resultset_Complex.rst b/id/api/Phalcon_Mvc_Model_Resultset_Complex.rst new file mode 100644 index 000000000000..c09b391aa10a --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Resultset_Complex.rst @@ -0,0 +1,204 @@ +Class **Phalcon\\Mvc\\Model\\Resultset\\Complex** +================================================= + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Resultset ` + +*implements* Serializable, ArrayAccess, Countable, SeekableIterator, Traversable, Iterator, :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Complex resultsets may include complete objects and scalar values. This class builds every complex row as it is required + + +Constants +--------- + +*integer* **TYPE_RESULT_FULL** + +*integer* **TYPE_RESULT_PARTIAL** + +*integer* **HYDRATE_RECORDS** + +*integer* **HYDRATE_OBJECTS** + +*integer* **HYDRATE_ARRAYS** + +Methods +------- + +public **__construct** (*array* $columnTypes, [:doc:`Phalcon\\Db\\ResultInterface ` $result], [:doc:`Phalcon\\Cache\\BackendInterface ` $cache]) + +Phalcon\\Mvc\\Model\\Resultset\\Complex constructor + + + +final public **current** () + +Returns current row in the resultset + + + +public **toArray** () + +Returns a complete resultset as an array, if the resultset has a big number of rows it could consume more memory than currently it does. + + + +public **serialize** () + +Serializing a resultset will dump all related rows into a big array + + + +public **unserialize** (*unknown* $data) + +Unserializing a resultset will allow to only works on the rows present in the saved state + + + +public **next** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Moves cursor to next row in the resultset + + + +public **valid** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Check whether internal resource has rows to fetch + + + +public **key** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Gets pointer number of active row in the resultset + + + +final public **rewind** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Rewinds resultset to its beginning + + + +final public **seek** (*unknown* $position) inherited from Phalcon\\Mvc\\Model\\Resultset + +Changes internal pointer to a specific position in the resultset Set new position if required and set this->_row + + + +final public **count** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Counts how many rows are in the resultset + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Mvc\\Model\\Resultset + +Checks whether offset exists in the resultset + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Mvc\\Model\\Resultset + +Gets row in a specific position of the resultset + + + +public **offsetSet** (*int* $index, :doc:`Phalcon\\Mvc\\ModelInterface ` $value) inherited from Phalcon\\Mvc\\Model\\Resultset + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **offsetUnset** (*unknown* $offset) inherited from Phalcon\\Mvc\\Model\\Resultset + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **getType** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the internal type of data retrieval that the resultset is using + + + +public **getFirst** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Get first row in the resultset + + + +public **getLast** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Get last row in the resultset + + + +public **setIsFresh** (*unknown* $isFresh) inherited from Phalcon\\Mvc\\Model\\Resultset + +Set if the resultset is fresh or an old one cached + + + +public **isFresh** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Tell if the resultset if fresh or an old one cached + + + +public **setHydrateMode** (*unknown* $hydrateMode) inherited from Phalcon\\Mvc\\Model\\Resultset + +Sets the hydration mode in the resultset + + + +public **getHydrateMode** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the current hydration mode + + + +public **getCache** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the associated cache for the resultset + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the error messages produced by a batch operation + + + +public *boolean* **update** (*array* $data, [*\Closure* $conditionCallback]) inherited from Phalcon\\Mvc\\Model\\Resultset + +Updates every record in the resultset + + + +public **delete** ([*Closure* $conditionCallback]) inherited from Phalcon\\Mvc\\Model\\Resultset + +Deletes every record in the resultset + + + +public :doc:`Phalcon\\Mvc\\Model ` [] **filter** (*callback* $filter) inherited from Phalcon\\Mvc\\Model\\Resultset + +Filters a resultset returning only those the developer requires + +.. code-block:: php + + filter(function($robot){ + if ($robot->id < 3) { + return $robot; + } + }); + + + + diff --git a/id/api/Phalcon_Mvc_Model_Resultset_Simple.rst b/id/api/Phalcon_Mvc_Model_Resultset_Simple.rst new file mode 100644 index 000000000000..41b049a5dc67 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Resultset_Simple.rst @@ -0,0 +1,204 @@ +Class **Phalcon\\Mvc\\Model\\Resultset\\Simple** +================================================ + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Resultset ` + +*implements* Serializable, ArrayAccess, Countable, SeekableIterator, Traversable, Iterator, :doc:`Phalcon\\Mvc\\Model\\ResultsetInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Simple resultsets only contains a complete objects This class builds every complete object as it is required + + +Constants +--------- + +*integer* **TYPE_RESULT_FULL** + +*integer* **TYPE_RESULT_PARTIAL** + +*integer* **HYDRATE_RECORDS** + +*integer* **HYDRATE_OBJECTS** + +*integer* **HYDRATE_ARRAYS** + +Methods +------- + +public **__construct** (*array* $columnMap, *\\Phalcon\\Mvc\\ModelInterface|Phalcon\\Mvc\\Model\\Row* $model, *\\Phalcon\\Db\\Result\\Pdo|null* $result, [:doc:`Phalcon\\Cache\\BackendInterface ` $cache], [*boolean* $keepSnapshots]) + +Phalcon\\Mvc\\Model\\Resultset\\Simple constructor + + + +final public **current** () + +Returns current row in the resultset + + + +public **toArray** ([*unknown* $renameColumns]) + +Returns a complete resultset as an array, if the resultset has a big number of rows it could consume more memory than currently it does. Export the resultset to an array couldn't be faster with a large number of records + + + +public **serialize** () + +Serializing a resultset will dump all related rows into a big array + + + +public **unserialize** (*unknown* $data) + +Unserializing a resultset will allow to only works on the rows present in the saved state + + + +public **next** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Moves cursor to next row in the resultset + + + +public **valid** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Check whether internal resource has rows to fetch + + + +public **key** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Gets pointer number of active row in the resultset + + + +final public **rewind** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Rewinds resultset to its beginning + + + +final public **seek** (*unknown* $position) inherited from Phalcon\\Mvc\\Model\\Resultset + +Changes internal pointer to a specific position in the resultset Set new position if required and set this->_row + + + +final public **count** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Counts how many rows are in the resultset + + + +public **offsetExists** (*unknown* $index) inherited from Phalcon\\Mvc\\Model\\Resultset + +Checks whether offset exists in the resultset + + + +public **offsetGet** (*unknown* $index) inherited from Phalcon\\Mvc\\Model\\Resultset + +Gets row in a specific position of the resultset + + + +public **offsetSet** (*int* $index, :doc:`Phalcon\\Mvc\\ModelInterface ` $value) inherited from Phalcon\\Mvc\\Model\\Resultset + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **offsetUnset** (*unknown* $offset) inherited from Phalcon\\Mvc\\Model\\Resultset + +Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **getType** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the internal type of data retrieval that the resultset is using + + + +public **getFirst** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Get first row in the resultset + + + +public **getLast** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Get last row in the resultset + + + +public **setIsFresh** (*unknown* $isFresh) inherited from Phalcon\\Mvc\\Model\\Resultset + +Set if the resultset is fresh or an old one cached + + + +public **isFresh** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Tell if the resultset if fresh or an old one cached + + + +public **setHydrateMode** (*unknown* $hydrateMode) inherited from Phalcon\\Mvc\\Model\\Resultset + +Sets the hydration mode in the resultset + + + +public **getHydrateMode** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the current hydration mode + + + +public **getCache** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the associated cache for the resultset + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Resultset + +Returns the error messages produced by a batch operation + + + +public *boolean* **update** (*array* $data, [*\Closure* $conditionCallback]) inherited from Phalcon\\Mvc\\Model\\Resultset + +Updates every record in the resultset + + + +public **delete** ([*Closure* $conditionCallback]) inherited from Phalcon\\Mvc\\Model\\Resultset + +Deletes every record in the resultset + + + +public :doc:`Phalcon\\Mvc\\Model ` [] **filter** (*callback* $filter) inherited from Phalcon\\Mvc\\Model\\Resultset + +Filters a resultset returning only those the developer requires + +.. code-block:: php + + filter(function($robot){ + if ($robot->id < 3) { + return $robot; + } + }); + + + + diff --git a/id/api/Phalcon_Mvc_Model_Row.rst b/id/api/Phalcon_Mvc_Model_Row.rst new file mode 100644 index 000000000000..4298685f8f1d --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Row.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Model\\Row** +================================== + +*implements* :doc:`Phalcon\\Mvc\\EntityInterface `, :doc:`Phalcon\\Mvc\\Model\\ResultInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows Phalcon\\Mvc\\Model to return rows without an associated entity. This objects implements the ArrayAccess interface to allow access the object as object->x or array[x]. + + +Methods +------- + +public **setDirtyState** (*unknown* $dirtyState) + +Set the current object's state + + + +public *boolean* **offsetExists** (*string|int* $index) + +Checks whether offset exists in the row + + + +public *string|Phalcon\Mvc\ModelInterface* **offsetGet** (*string|int* $index) + +Gets a record in a specific position of the row + + + +public **offsetSet** (*string|int* $index, :doc:`Phalcon\\Mvc\\ModelInterface ` $value) + +Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public **offsetUnset** (*string|int* $offset) + +Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface + + + +public *mixed* **readAttribute** (*string* $attribute) + +Reads an attribute value by its name + +.. code-block:: php + + readAttribute('name'); + + + + +public **writeAttribute** (*string* $attribute, *mixed* $value) + +Writes an attribute value by its name + +.. code-block:: php + + writeAttribute('name', 'Rosey'); + + + + +public *array* **toArray** () + +Returns the instance as an array representation + + + diff --git a/id/api/Phalcon_Mvc_Model_Transaction.rst b/id/api/Phalcon_Mvc_Model_Transaction.rst new file mode 100644 index 000000000000..8b5076ec92b5 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Transaction.rst @@ -0,0 +1,120 @@ +Class **Phalcon\\Mvc\\Model\\Transaction** +========================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Transactions are protective blocks where SQL statements are only permanent if they can all succeed as one atomic action. Phalcon\\Transaction is intended to be used with Phalcon_Model_Base. Phalcon Transactions should be created using Phalcon\\Transaction\\Manager. + +.. code-block:: php + + get(); + + $robot = new Robots(); + $robot->setTransaction($transaction); + $robot->name = 'WALL·E'; + $robot->created_at = date('Y-m-d'); + if ($robot->save() == false) { + $transaction->rollback("Can't save robot"); + } + + $robotPart = new RobotParts(); + $robotPart->setTransaction($transaction); + $robotPart->type = 'head'; + if ($robotPart->save() == false) { + $transaction->rollback("Can't save robot part"); + } + + $transaction->commit(); + + } catch(Phalcon\Mvc\Model\Transaction\Failed $e) { + echo 'Failed, reason: ', $e->getMessage(); + } + + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\DiInterface ` $dependencyInjector, [*boolean* $autoBegin], [*string* $service]) + +Phalcon\\Mvc\\Model\\Transaction constructor + + + +public **setTransactionManager** (:doc:`Phalcon\\Mvc\\Model\\Transaction\\ManagerInterface ` $manager) + +Sets transaction manager related to the transaction + + + +public **begin** () + +Starts the transaction + + + +public **commit** () + +Commits the transaction + + + +public *boolean* **rollback** ([*string* $rollbackMessage], [:doc:`Phalcon\\Mvc\\ModelInterface ` $rollbackRecord]) + +Rollbacks the transaction + + + +public **getConnection** () + +Returns the connection related to transaction + + + +public **setIsNewTransaction** (*unknown* $isNew) + +Sets if is a reused transaction or new once + + + +public **setRollbackOnAbort** (*unknown* $rollbackOnAbort) + +Sets flag to rollback on abort the HTTP connection + + + +public **isManaged** () + +Checks whether transaction is managed by a transaction manager + + + +public **getMessages** () + +Returns validations messages from last save try + + + +public **isValid** () + +Checks whether internal connection is under an active transaction + + + +public **setRollbackedRecord** (:doc:`Phalcon\\Mvc\\ModelInterface ` $record) + +Sets object which generates rollback action + + + diff --git a/id/api/Phalcon_Mvc_Model_TransactionInterface.rst b/id/api/Phalcon_Mvc_Model_TransactionInterface.rst new file mode 100644 index 000000000000..d049ffa6d4cb --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_TransactionInterface.rst @@ -0,0 +1,66 @@ +Interface **Phalcon\\Mvc\\Model\\TransactionInterface** +======================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setTransactionManager** (:doc:`Phalcon\\Mvc\\Model\\Transaction\\ManagerInterface ` $manager) + +... + + +abstract public **begin** () + +... + + +abstract public **commit** () + +... + + +abstract public **rollback** ([*unknown* $rollbackMessage], [*unknown* $rollbackRecord]) + +... + + +abstract public **getConnection** () + +... + + +abstract public **setIsNewTransaction** (*unknown* $isNew) + +... + + +abstract public **setRollbackOnAbort** (*unknown* $rollbackOnAbort) + +... + + +abstract public **isManaged** () + +... + + +abstract public **getMessages** () + +... + + +abstract public **isValid** () + +... + + +abstract public **setRollbackedRecord** (:doc:`Phalcon\\Mvc\\ModelInterface ` $record) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Transaction_Exception.rst b/id/api/Phalcon_Mvc_Model_Transaction_Exception.rst new file mode 100644 index 000000000000..9b612add9df1 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Transaction_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Model\\Transaction\\Exception** +===================================================== + +*extends* class :doc:`Phalcon\\Mvc\\Model\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Model_Transaction_Failed.rst b/id/api/Phalcon_Mvc_Model_Transaction_Failed.rst new file mode 100644 index 000000000000..540005d6d6be --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Transaction_Failed.rst @@ -0,0 +1,93 @@ +Class **Phalcon\\Mvc\\Model\\Transaction\\Failed** +================================================== + +*extends* class :doc:`Phalcon\\Mvc\\Model\\Transaction\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class will be thrown to exit a try/catch block for isolated transactions + + +Methods +------- + +public **__construct** (*unknown* $message, [:doc:`Phalcon\\Mvc\\ModelInterface ` $record]) + +Phalcon\\Mvc\\Model\\Transaction\\Failed constructor + + + +public **getRecordMessages** () + +Returns validation record messages which stop the transaction + + + +public **getRecord** () + +Returns validation record messages which stop the transaction + + + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Model_Transaction_Manager.rst b/id/api/Phalcon_Mvc_Model_Transaction_Manager.rst new file mode 100644 index 000000000000..59efda1d5132 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Transaction_Manager.rst @@ -0,0 +1,152 @@ +Class **Phalcon\\Mvc\\Model\\Transaction\\Manager** +=================================================== + +*implements* :doc:`Phalcon\\Mvc\\Model\\Transaction\\ManagerInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +A transaction acts on a single database connection. If you have multiple class-specific databases, the transaction will not protect interaction among them. This class manages the objects that compose a transaction. A trasaction produces a unique connection that is passed to every object part of the transaction. + +.. code-block:: php + + get(); + + $robot = new Robots(); + $robot->setTransaction($transaction); + $robot->name = 'WALL·E'; + $robot->created_at = date('Y-m-d'); + if($robot->save()==false){ + $transaction->rollback("Can't save robot"); + } + + $robotPart = new RobotParts(); + $robotPart->setTransaction($transaction); + $robotPart->type = 'head'; + if($robotPart->save()==false){ + $transaction->rollback("Can't save robot part"); + } + + $transaction->commit(); + + } catch (Phalcon\Mvc\Model\Transaction\Failed $e) { + echo 'Failed, reason: ', $e->getMessage(); + } + + + +Methods +------- + +public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Phalcon\\Mvc\\Model\\Transaction\\Manager constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injection container + + + +public **getDI** () + +Returns the dependency injection container + + + +public **setDbService** (*unknown* $service) + +Sets the database service used to run the isolated transactions + + + +public *string* **getDbService** () + +Returns the database service used to isolate the transaction + + + +public **setRollbackPendent** (*unknown* $rollbackPendent) + +Set if the transaction manager must register a shutdown function to clean up pendent transactions + + + +public **getRollbackPendent** () + +Check if the transaction manager is registering a shutdown function to clean up pendent transactions + + + +public **has** () + +Checks whether the manager has an active transaction + + + +public **get** ([*unknown* $autoBegin]) + +Returns a new \\Phalcon\\Mvc\\Model\\Transaction or an already created once This method registers a shutdown function to rollback active connections + + + +public **getOrCreateTransaction** ([*unknown* $autoBegin]) + +Create/Returns a new transaction or an existing one + + + +public **rollbackPendent** () + +Rollbacks active transactions within the manager + + + +public **commit** () + +Commmits active transactions within the manager + + + +public **rollback** ([*boolean* $collect]) + +Rollbacks active transactions within the manager Collect will remove the transaction from the manager + + + +public **notifyRollback** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +Notifies the manager about a rollbacked transaction + + + +public **notifyCommit** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +Notifies the manager about a commited transaction + + + +protected **_collectTransaction** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +Removes transactions from the TransactionManager + + + +public **collectTransactions** () + +Remove all the transactions from the manager + + + diff --git a/id/api/Phalcon_Mvc_Model_Transaction_ManagerInterface.rst b/id/api/Phalcon_Mvc_Model_Transaction_ManagerInterface.rst new file mode 100644 index 000000000000..c0ddee79e587 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Transaction_ManagerInterface.rst @@ -0,0 +1,56 @@ +Interface **Phalcon\\Mvc\\Model\\Transaction\\ManagerInterface** +================================================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +... + + +abstract public **has** () + +... + + +abstract public **get** ([*unknown* $autoBegin]) + +... + + +abstract public **rollbackPendent** () + +... + + +abstract public **commit** () + +... + + +abstract public **rollback** ([*unknown* $collect]) + +... + + +abstract public **notifyRollback** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +... + + +abstract public **notifyCommit** (:doc:`Phalcon\\Mvc\\Model\\TransactionInterface ` $transaction) + +... + + +abstract public **collectTransactions** () + +... + + diff --git a/id/api/Phalcon_Mvc_Model_ValidationFailed.rst b/id/api/Phalcon_Mvc_Model_ValidationFailed.rst new file mode 100644 index 000000000000..d7a4ee21fe96 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_ValidationFailed.rst @@ -0,0 +1,93 @@ +Class **Phalcon\\Mvc\\Model\\ValidationFailed** +=============================================== + +*extends* class :doc:`Phalcon\\Mvc\\Model\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This exception is generated when a model fails to save a record Phalcon\\Mvc\\Model must be set up to have this behavior + + +Methods +------- + +public **__construct** (*Model* $model, *Message[]* $validationMessages) + +Phalcon\\Mvc\\Model\\ValidationFailed constructor + + + +public **getModel** () + +Returns the model that generated the messages + + + +public **getMessages** () + +Returns the complete group of messages produced in the validation + + + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator.rst b/id/api/Phalcon_Mvc_Model_Validator.rst new file mode 100644 index 000000000000..30d3b4dfc8fe --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator.rst @@ -0,0 +1,50 @@ +Abstract class **Phalcon\\Mvc\\Model\\Validator** +================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a base class for Phalcon\\Mvc\\Model validators + + +Methods +------- + +public **__construct** (*array* $options) + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) + +Appends a message to the validator + + + +public **getMessages** () + +Returns messages generated by the validator + + + +public *array* **getOptions** () + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) + +Returns an option + + + +public **isSetOption** (*unknown* $option) + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_ValidatorInterface.rst b/id/api/Phalcon_Mvc_Model_ValidatorInterface.rst new file mode 100644 index 000000000000..c6e1a58e1fd3 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_ValidatorInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Mvc\\Model\\ValidatorInterface** +===================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **getMessages** () + +... + + +abstract public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +... + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Email.rst b/id/api/Phalcon_Mvc_Model_Validator_Email.rst new file mode 100644 index 000000000000..2ea5e32b0364 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Email.rst @@ -0,0 +1,81 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Email** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to validate if email fields has correct values + +.. code-block:: php + + validate(new EmailValidator(array( + 'field' => 'electronic_mail' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Exclusionin.rst b/id/api/Phalcon_Mvc_Model_Validator_Exclusionin.rst new file mode 100644 index 000000000000..a2408a6c1f9b --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Exclusionin.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Exclusionin** +===================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Model\\Validator\\ExclusionIn Check if a value is not included into a list of values + +.. code-block:: php + + validate(new ExclusionInValidator(array( + 'field' => 'status', + 'domain' => array('A', 'I') + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Inclusionin.rst b/id/api/Phalcon_Mvc_Model_Validator_Inclusionin.rst new file mode 100644 index 000000000000..b764b4cc00b5 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Inclusionin.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Inclusionin** +===================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Model\\Validator\\InclusionIn Check if a value is included into a list of values + +.. code-block:: php + + validate(new InclusionInValidator(array( + "field" => 'status', + 'domain' => array('A', 'I') + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Ip.rst b/id/api/Phalcon_Mvc_Model_Validator_Ip.rst new file mode 100644 index 000000000000..fb17bfb9fee0 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Ip.rst @@ -0,0 +1,110 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Ip** +============================================ + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Model\\Validator\\IP Validates that a value is ipv4 address in valid range + +.. code-block:: php + + validate(new IP(array( + 'field' => 'server_ip', + 'version' => IP::VERSION_4 | IP::VERSION_6, // v6 and v4. The same if not specified + 'allowReserved' => false, // False if not specified. Ignored for v6 + 'allowPrivate' => false, // False if not specified + 'message' => 'IP address has to be correct' + ))); + + // Any public v4 address + $this->validate(new IP(array( + 'field' => 'ip_4', + 'version' => IP::VERSION_4, + 'message' => 'IP address has to be correct' + ))); + + // Any v6 address + $this->validate(new IP(array( + 'field' => 'ip6', + 'version' => IP::VERSION_6, + 'allowPrivate' => true, + 'message' => 'IP address has to be correct' + ))); + + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Constants +--------- + +*integer* **VERSION_4** + +*integer* **VERSION_6** + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Numericality.rst b/id/api/Phalcon_Mvc_Model_Validator_Numericality.rst new file mode 100644 index 000000000000..c7a6643511d0 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Numericality.rst @@ -0,0 +1,82 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Numericality** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to validate if a field has a valid numeric format + +.. code-block:: php + + validate(new NumericalityValidator(array( + "field" => 'price' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_PresenceOf.rst b/id/api/Phalcon_Mvc_Model_Validator_PresenceOf.rst new file mode 100644 index 000000000000..e90f5bf22155 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_PresenceOf.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\PresenceOf** +==================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to validate if a filed have a value different of null and empty string ("") + +.. code-block:: php + + validate(new PresenceOf(array( + "field" => 'name', + "message" => 'The name is required' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Regex.rst b/id/api/Phalcon_Mvc_Model_Validator_Regex.rst new file mode 100644 index 000000000000..aa3a1b3a55c6 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Regex.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Regex** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows validate if the value of a field matches a regular expression + +.. code-block:: php + + validate(new RegexValidator(array( + "field" => 'created_at', + 'pattern' => '/^[0-9]{4}[-\/](0[1-9]|1[12])[-\/](0[1-9]|[12][0-9]|3[01])/' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_StringLength.rst b/id/api/Phalcon_Mvc_Model_Validator_StringLength.rst new file mode 100644 index 000000000000..097f47f0dfa4 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_StringLength.rst @@ -0,0 +1,86 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\StringLength** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Simply validates specified string length constraints + +.. code-block:: php + + validate(new StringLengthValidator(array( + "field" => 'name_last', + 'max' => 50, + 'min' => 2, + 'messageMaximum' => 'We don\'t like really long names', + 'messageMinimum' => 'We want more than just their initials' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Uniqueness.rst b/id/api/Phalcon_Mvc_Model_Validator_Uniqueness.rst new file mode 100644 index 000000000000..46e953bb5382 --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Uniqueness.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Uniqueness** +==================================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Validates that a field or a combination of a set of fields are not present more than once in the existing records of the related table + +.. code-block:: php + + validate(new Uniqueness(array( + "field" => "email", + "message" => "Value of field 'email' is already present in another record" + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_Model_Validator_Url.rst b/id/api/Phalcon_Mvc_Model_Validator_Url.rst new file mode 100644 index 000000000000..fe691bbd820a --- /dev/null +++ b/id/api/Phalcon_Mvc_Model_Validator_Url.rst @@ -0,0 +1,82 @@ +Class **Phalcon\\Mvc\\Model\\Validator\\Url** +============================================= + +*extends* abstract class :doc:`Phalcon\\Mvc\\Model\\Validator ` + +*implements* :doc:`Phalcon\\Mvc\\Model\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to validate if a field has a url format + +.. code-block:: php + + validate(new UrlValidator(array( + 'field' => 'source_url' + ))); + if ($this->validationHasFailed() == true) { + return false; + } + } + + } + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Mvc\\EntityInterface ` $record) + +Executes the validator + + + +public **__construct** (*array* $options) inherited from Phalcon\\Mvc\\Model\\Validator + +Phalcon\\Mvc\\Model\\Validator constructor + + + +protected **appendMessage** (*string* $message, [*string|array* $field], [*string* $type]) inherited from Phalcon\\Mvc\\Model\\Validator + +Appends a message to the validator + + + +public **getMessages** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns messages generated by the validator + + + +public *array* **getOptions** () inherited from Phalcon\\Mvc\\Model\\Validator + +Returns all the options from the validator + + + +public **getOption** (*unknown* $option, [*unknown* $defaultValue]) inherited from Phalcon\\Mvc\\Model\\Validator + +Returns an option + + + +public **isSetOption** (*unknown* $option) inherited from Phalcon\\Mvc\\Model\\Validator + +Check whether a option has been defined in the validator options + + + diff --git a/id/api/Phalcon_Mvc_ModuleDefinitionInterface.rst b/id/api/Phalcon_Mvc_ModuleDefinitionInterface.rst new file mode 100644 index 000000000000..733dc720c0a6 --- /dev/null +++ b/id/api/Phalcon_Mvc_ModuleDefinitionInterface.rst @@ -0,0 +1,21 @@ +Interface **Phalcon\\Mvc\\ModuleDefinitionInterface** +===================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **registerAutoloaders** ([:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +... + + +abstract public **registerServices** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +... + + diff --git a/id/api/Phalcon_Mvc_Router.rst b/id/api/Phalcon_Mvc_Router.rst new file mode 100644 index 000000000000..299c276cb671 --- /dev/null +++ b/id/api/Phalcon_Mvc_Router.rst @@ -0,0 +1,313 @@ +Class **Phalcon\\Mvc\\Router** +============================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\RouterInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\Router is the standard framework router. Routing is the process of taking a URI endpoint (that part of the URI which comes after the base URL) and decomposing it into parameters to determine which module, controller, and action of that controller should receive the request + +.. code-block:: php + + add( + "/documentation/{chapter}/{name}\.{type:[a-z]+}", + array( + "controller" => "documentation", + "action" => "show" + ) + ); + + $router->handle(); + + echo $router->getControllerName(); + + + +Constants +--------- + +*integer* **URI_SOURCE_GET_URL** + +*integer* **URI_SOURCE_SERVER_REQUEST_URI** + +*integer* **POSITION_FIRST** + +*integer* **POSITION_LAST** + +Methods +------- + +public **__construct** ([*unknown* $defaultRoutes]) + +Phalcon\\Mvc\\Router constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) + +Sets the events manager + + + +public **getEventsManager** () + +Returns the internal event manager + + + +public **getRewriteUri** () + +Get rewrite info. This info is read from $_GET['_url']. This returns '/' if the rewrite information cannot be read + + + +public **setUriSource** (*unknown* $uriSource) + +Sets the URI source. One of the URI_SOURCE_* constants + +.. code-block:: php + + setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI); + + + + +public **removeExtraSlashes** (*unknown* $remove) + +Set whether router must remove the extra slashes in the handled routes + + + +public **setDefaultNamespace** (*unknown* $namespaceName) + +Sets the name of the default namespace + + + +public **setDefaultModule** (*unknown* $moduleName) + +Sets the name of the default module + + + +public **setDefaultController** (*unknown* $controllerName) + +Sets the default controller name + + + +public **setDefaultAction** (*unknown* $actionName) + +Sets the default action name + + + +public **setDefaults** (*array* $defaults) + +Sets an array of default paths. If a route is missing a path the router will use the defined here This method must not be used to set a 404 route + +.. code-block:: php + + setDefaults(array( + 'module' => 'common', + 'action' => 'index' + )); + + + + +public **getDefaults** () + +Returns an array of default parameters + + + +public **handle** ([*unknown* $uri]) + +Handles routing information received from the rewrite engine + +.. code-block:: php + + handle(); + + //Manually passing an URL + $router->handle('/posts/edit/1'); + + + + +public **add** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods], [*unknown* $position]) + +Adds a route to the router without any HTTP constraint + +.. code-block:: php + + add('/about', 'About::index'); + $router->add('/about', 'About::index', ['GET', 'POST']); + $router->add('/about', 'About::index', ['GET', 'POST'], Router::POSITION_FIRST); + + + + +public **addGet** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is GET + + + +public **addPost** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is POST + + + +public **addPut** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is PUT + + + +public **addPatch** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is PATCH + + + +public **addDelete** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is DELETE + + + +public **addOptions** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Add a route to the router that only match if the HTTP method is OPTIONS + + + +public **addHead** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) + +Adds a route to the router that only match if the HTTP method is HEAD + + + +public **mount** (:doc:`Phalcon\\Mvc\\Router\\GroupInterface ` $group) + +Mounts a group of routes in the router + + + +public **notFound** (*unknown* $paths) + +Set a group of paths to be returned when none of the defined routes are matched + + + +public **clear** () + +Removes all the pre-defined routes + + + +public **getNamespaceName** () + +Returns the processed namespace name + + + +public **getModuleName** () + +Returns the processed module name + + + +public **getControllerName** () + +Returns the processed controller name + + + +public **getActionName** () + +Returns the processed action name + + + +public **getParams** () + +Returns the processed parameters + + + +public **getMatchedRoute** () + +Returns the route that matchs the handled URI + + + +public **getMatches** () + +Returns the sub expressions in the regular expression matched + + + +public **wasMatched** () + +Checks if the router macthes any of the defined routes + + + +public **getRoutes** () + +Returns all the routes defined in the router + + + +public **getRouteById** (*unknown* $id) + +Returns a route object by its id + + + +public **getRouteByName** (*unknown* $name) + +Returns a route object by its name + + + +public **isExactControllerName** () + +Returns whether controller name should not be mangled + + + diff --git a/id/api/Phalcon_Mvc_RouterInterface.rst b/id/api/Phalcon_Mvc_RouterInterface.rst new file mode 100644 index 000000000000..131d3df6028b --- /dev/null +++ b/id/api/Phalcon_Mvc_RouterInterface.rst @@ -0,0 +1,141 @@ +Interface **Phalcon\\Mvc\\RouterInterface** +=========================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setDefaultModule** (*unknown* $moduleName) + +... + + +abstract public **setDefaultController** (*unknown* $controllerName) + +... + + +abstract public **setDefaultAction** (*unknown* $actionName) + +... + + +abstract public **setDefaults** (*array* $defaults) + +... + + +abstract public **handle** ([*unknown* $uri]) + +... + + +abstract public **add** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +... + + +abstract public **addGet** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPost** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPut** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPatch** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addDelete** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addOptions** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addHead** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **mount** (:doc:`Phalcon\\Mvc\\Router\\GroupInterface ` $group) + +... + + +abstract public **clear** () + +... + + +abstract public **getModuleName** () + +... + + +abstract public **getNamespaceName** () + +... + + +abstract public **getControllerName** () + +... + + +abstract public **getActionName** () + +... + + +abstract public **getParams** () + +... + + +abstract public **getMatchedRoute** () + +... + + +abstract public **getMatches** () + +... + + +abstract public **wasMatched** () + +... + + +abstract public **getRoutes** () + +... + + +abstract public **getRouteById** (*unknown* $id) + +... + + +abstract public **getRouteByName** (*unknown* $name) + +... + + diff --git a/id/api/Phalcon_Mvc_Router_Annotations.rst b/id/api/Phalcon_Mvc_Router_Annotations.rst new file mode 100644 index 000000000000..a9abdd669582 --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_Annotations.rst @@ -0,0 +1,343 @@ +Class **Phalcon\\Mvc\\Router\\Annotations** +=========================================== + +*extends* class :doc:`Phalcon\\Mvc\\Router ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Mvc\\RouterInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +A router that reads routes annotations from classes/resources + +.. code-block:: php + + addResource('Robots', '/robots'); + + return $router; + }; + + + +Constants +--------- + +*integer* **URI_SOURCE_GET_URL** + +*integer* **URI_SOURCE_SERVER_REQUEST_URI** + +*integer* **POSITION_FIRST** + +*integer* **POSITION_LAST** + +Methods +------- + +public **addResource** (*unknown* $handler, [*unknown* $prefix]) + +Adds a resource to the annotations handler A resource is a class that contains routing annotations + + + +public **addModuleResource** (*unknown* $module, *unknown* $handler, [*unknown* $prefix]) + +Adds a resource to the annotations handler A resource is a class that contains routing annotations The class is located in a module + + + +public **handle** ([*unknown* $uri]) + +Produce the routing parameters from the rewrite information + + + +public **processControllerAnnotation** (*unknown* $handler, :doc:`Phalcon\\Annotations\\Annotation ` $annotation) + +Checks for annotations in the controller docblock + + + +public **processActionAnnotation** (*unknown* $module, *unknown* $namespaceName, *unknown* $controller, *unknown* $action, :doc:`Phalcon\\Annotations\\Annotation ` $annotation) + +Checks for annotations in the public methods of the controller + + + +public **setControllerSuffix** (*unknown* $controllerSuffix) + +Changes the controller class suffix + + + +public **setActionSuffix** (*unknown* $actionSuffix) + +Changes the action method suffix + + + +public *array* **getResources** () + +Return the registered resources + + + +public **__construct** ([*unknown* $defaultRoutes]) inherited from Phalcon\\Mvc\\Router + +Phalcon\\Mvc\\Router constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Mvc\\Router + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Mvc\\Router + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Mvc\\Router + +Sets the events manager + + + +public **getEventsManager** () inherited from Phalcon\\Mvc\\Router + +Returns the internal event manager + + + +public **getRewriteUri** () inherited from Phalcon\\Mvc\\Router + +Get rewrite info. This info is read from $_GET['_url']. This returns '/' if the rewrite information cannot be read + + + +public **setUriSource** (*unknown* $uriSource) inherited from Phalcon\\Mvc\\Router + +Sets the URI source. One of the URI_SOURCE_* constants + +.. code-block:: php + + setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI); + + + + +public **removeExtraSlashes** (*unknown* $remove) inherited from Phalcon\\Mvc\\Router + +Set whether router must remove the extra slashes in the handled routes + + + +public **setDefaultNamespace** (*unknown* $namespaceName) inherited from Phalcon\\Mvc\\Router + +Sets the name of the default namespace + + + +public **setDefaultModule** (*unknown* $moduleName) inherited from Phalcon\\Mvc\\Router + +Sets the name of the default module + + + +public **setDefaultController** (*unknown* $controllerName) inherited from Phalcon\\Mvc\\Router + +Sets the default controller name + + + +public **setDefaultAction** (*unknown* $actionName) inherited from Phalcon\\Mvc\\Router + +Sets the default action name + + + +public **setDefaults** (*array* $defaults) inherited from Phalcon\\Mvc\\Router + +Sets an array of default paths. If a route is missing a path the router will use the defined here This method must not be used to set a 404 route + +.. code-block:: php + + setDefaults(array( + 'module' => 'common', + 'action' => 'index' + )); + + + + +public **getDefaults** () inherited from Phalcon\\Mvc\\Router + +Returns an array of default parameters + + + +public **add** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router without any HTTP constraint + +.. code-block:: php + + add('/about', 'About::index'); + $router->add('/about', 'About::index', ['GET', 'POST']); + $router->add('/about', 'About::index', ['GET', 'POST'], Router::POSITION_FIRST); + + + + +public **addGet** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is GET + + + +public **addPost** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is POST + + + +public **addPut** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is PUT + + + +public **addPatch** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is PATCH + + + +public **addDelete** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is DELETE + + + +public **addOptions** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Add a route to the router that only match if the HTTP method is OPTIONS + + + +public **addHead** (*unknown* $pattern, [*unknown* $paths], [*unknown* $position]) inherited from Phalcon\\Mvc\\Router + +Adds a route to the router that only match if the HTTP method is HEAD + + + +public **mount** (:doc:`Phalcon\\Mvc\\Router\\GroupInterface ` $group) inherited from Phalcon\\Mvc\\Router + +Mounts a group of routes in the router + + + +public **notFound** (*unknown* $paths) inherited from Phalcon\\Mvc\\Router + +Set a group of paths to be returned when none of the defined routes are matched + + + +public **clear** () inherited from Phalcon\\Mvc\\Router + +Removes all the pre-defined routes + + + +public **getNamespaceName** () inherited from Phalcon\\Mvc\\Router + +Returns the processed namespace name + + + +public **getModuleName** () inherited from Phalcon\\Mvc\\Router + +Returns the processed module name + + + +public **getControllerName** () inherited from Phalcon\\Mvc\\Router + +Returns the processed controller name + + + +public **getActionName** () inherited from Phalcon\\Mvc\\Router + +Returns the processed action name + + + +public **getParams** () inherited from Phalcon\\Mvc\\Router + +Returns the processed parameters + + + +public **getMatchedRoute** () inherited from Phalcon\\Mvc\\Router + +Returns the route that matchs the handled URI + + + +public **getMatches** () inherited from Phalcon\\Mvc\\Router + +Returns the sub expressions in the regular expression matched + + + +public **wasMatched** () inherited from Phalcon\\Mvc\\Router + +Checks if the router macthes any of the defined routes + + + +public **getRoutes** () inherited from Phalcon\\Mvc\\Router + +Returns all the routes defined in the router + + + +public **getRouteById** (*unknown* $id) inherited from Phalcon\\Mvc\\Router + +Returns a route object by its id + + + +public **getRouteByName** (*unknown* $name) inherited from Phalcon\\Mvc\\Router + +Returns a route object by its name + + + +public **isExactControllerName** () inherited from Phalcon\\Mvc\\Router + +Returns whether controller name should not be mangled + + + diff --git a/id/api/Phalcon_Mvc_Router_Exception.rst b/id/api/Phalcon_Mvc_Router_Exception.rst new file mode 100644 index 000000000000..aba683a577a2 --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Router\\Exception** +========================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_Router_Group.rst b/id/api/Phalcon_Mvc_Router_Group.rst new file mode 100644 index 000000000000..06aaceda9d4c --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_Group.rst @@ -0,0 +1,178 @@ +Class **Phalcon\\Mvc\\Router\\Group** +===================================== + +*implements* :doc:`Phalcon\\Mvc\\Router\\GroupInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Helper class to create a group of routes with common attributes + +.. code-block:: php + + 'blog', + 'controller' => 'index' + )); + + //All the routes start with /blog + $blog->setPrefix('/blog'); + + //Add a route to the group + $blog->add('/save', array( + 'action' => 'save' + )); + + //Add another route to the group + $blog->add('/edit/{id}', array( + 'action' => 'edit' + )); + + //This route maps to a controller different than the default + $blog->add('/blog', array( + 'controller' => 'about', + 'action' => 'index' + )); + + //Add the group to the router + $router->mount($blog); + + + +Methods +------- + +public **__construct** ([*unknown* $paths]) + +Phalcon\\Mvc\\Router\\Group constructor + + + +public **setHostname** (*unknown* $hostname) + +Set a hostname restriction for all the routes in the group + + + +public **getHostname** () + +Returns the hostname restriction + + + +public **setPrefix** (*unknown* $prefix) + +Set a common uri prefix for all the routes in this group + + + +public **getPrefix** () + +Returns the common prefix for all the routes + + + +public **beforeMatch** (*unknown* $beforeMatch) + +Sets a callback that is called if the route is matched. The developer can implement any arbitrary conditions here If the callback returns false the route is treated as not matched + + + +public **getBeforeMatch** () + +Returns the 'before match' callback if any + + + +public **setPaths** (*unknown* $paths) + +Set common paths for all the routes in the group + + + +public **getPaths** () + +Returns the common paths defined for this group + + + +public **getRoutes** () + +Returns the routes added to the group + + + +public **add** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +Adds a route to the router on any HTTP method + +.. code-block:: php + + add('/about', 'About::index'); + + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addGet** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is GET + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addPost** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is POST + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addPut** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is PUT + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addPatch** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is PATCH + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addDelete** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is DELETE + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addOptions** (*string* $pattern, [*string/array* $paths]) + +Add a route to the router that only match if the HTTP method is OPTIONS + + + +public :doc:`Phalcon\\Mvc\\Router\\Route ` **addHead** (*string* $pattern, [*string/array* $paths]) + +Adds a route to the router that only match if the HTTP method is HEAD + + + +public **clear** () + +Removes all the pre-defined routes + + + +protected **_addRoute** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +Adds a route applying the common attributes + + + diff --git a/id/api/Phalcon_Mvc_Router_GroupInterface.rst b/id/api/Phalcon_Mvc_Router_GroupInterface.rst new file mode 100644 index 000000000000..c851f1694857 --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_GroupInterface.rst @@ -0,0 +1,101 @@ +Interface **Phalcon\\Mvc\\Router\\GroupInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setHostname** (*unknown* $hostname) + +... + + +abstract public **getHostname** () + +... + + +abstract public **setPrefix** (*unknown* $prefix) + +... + + +abstract public **getPrefix** () + +... + + +abstract public **beforeMatch** (*unknown* $beforeMatch) + +... + + +abstract public **getBeforeMatch** () + +... + + +abstract public **setPaths** (*unknown* $paths) + +... + + +abstract public **getPaths** () + +... + + +abstract public **getRoutes** () + +... + + +abstract public **add** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +... + + +abstract public **addGet** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPost** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPut** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addPatch** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addDelete** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addOptions** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **addHead** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **clear** () + +... + + diff --git a/id/api/Phalcon_Mvc_Router_Route.rst b/id/api/Phalcon_Mvc_Router_Route.rst new file mode 100644 index 000000000000..f52a5a9dbc49 --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_Route.rst @@ -0,0 +1,192 @@ +Class **Phalcon\\Mvc\\Router\\Route** +===================================== + +*implements* :doc:`Phalcon\\Mvc\\Router\\RouteInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class represents every route added to the router + + +Methods +------- + +public **__construct** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +Phalcon\\Mvc\\Router\\Route constructor + + + +public **compilePattern** (*unknown* $pattern) + +Replaces placeholders from pattern returning a valid PCRE regular expression + + + +public **via** (*unknown* $httpMethods) + +Set one or more HTTP methods that constraint the matching of the route + +.. code-block:: php + + via('GET'); + $route->via(array('GET', 'POST')); + + + + +public **extractNamedParams** (*unknown* $pattern) + +Extracts parameters from a string + + + +public **reConfigure** (*unknown* $pattern, [*unknown* $paths]) + +Reconfigure the route adding a new pattern and a set of paths + + + +public static **getRoutePaths** ([*unknown* $paths]) + +Returns routePaths + + + +public **getName** () + +Returns the route's name + + + +public **setName** (*unknown* $name) + +Sets the route's name + +.. code-block:: php + + add('/about', array( + 'controller' => 'about' + ))->setName('about'); + + + + +public **beforeMatch** (*unknown* $callback) + +Sets a callback that is called if the route is matched. The developer can implement any arbitrary conditions here If the callback returns false the route is treated as not matched + + + +public **getBeforeMatch** () + +Returns the 'before match' callback if any + + + +public **getRouteId** () + +Returns the route's id + + + +public **getPattern** () + +Returns the route's pattern + + + +public **getCompiledPattern** () + +Returns the route's compiled pattern + + + +public **getPaths** () + +Returns the paths + + + +public **getReversedPaths** () + +Returns the paths using positions as keys and names as values + + + +public **setHttpMethods** (*unknown* $httpMethods) + +Sets a set of HTTP methods that constraint the matching of the route (alias of via) + +.. code-block:: php + + setHttpMethods('GET'); + $route->setHttpMethods(array('GET', 'POST')); + + + + +public **getHttpMethods** () + +Returns the HTTP methods that constraint matching the route + + + +public **setHostname** (*unknown* $hostname) + +Sets a hostname restriction to the route + +.. code-block:: php + + setHostname('localhost'); + + + + +public **getHostname** () + +Returns the hostname restriction if any + + + +public **setGroup** (:doc:`Phalcon\\Mvc\\Router\\GroupInterface ` $group) + +Sets the group associated with the route + + + +public **getGroup** () + +Returns the group associated with the route + + + +public **convert** (*unknown* $name, *unknown* $converter) + +Adds a converter to perform an additional transformation for certain parameter + + + +public **getConverters** () + +Returns the router converter + + + +public static **reset** () + +Resets the internal route id generator + + + diff --git a/id/api/Phalcon_Mvc_Router_RouteInterface.rst b/id/api/Phalcon_Mvc_Router_RouteInterface.rst new file mode 100644 index 000000000000..baffa48c6e4f --- /dev/null +++ b/id/api/Phalcon_Mvc_Router_RouteInterface.rst @@ -0,0 +1,81 @@ +Interface **Phalcon\\Mvc\\Router\\RouteInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $pattern, [*unknown* $paths], [*unknown* $httpMethods]) + +... + + +abstract public **compilePattern** (*unknown* $pattern) + +... + + +abstract public **via** (*unknown* $httpMethods) + +... + + +abstract public **reConfigure** (*unknown* $pattern, [*unknown* $paths]) + +... + + +abstract public **getName** () + +... + + +abstract public **setName** (*unknown* $name) + +... + + +abstract public **setHttpMethods** (*unknown* $httpMethods) + +... + + +abstract public **getRouteId** () + +... + + +abstract public **getPattern** () + +... + + +abstract public **getCompiledPattern** () + +... + + +abstract public **getPaths** () + +... + + +abstract public **getReversedPaths** () + +... + + +abstract public **getHttpMethods** () + +... + + +abstract public static **reset** () + +... + + diff --git a/id/api/Phalcon_Mvc_Url.rst b/id/api/Phalcon_Mvc_Url.rst new file mode 100644 index 000000000000..8201482d07c1 --- /dev/null +++ b/id/api/Phalcon_Mvc_Url.rst @@ -0,0 +1,137 @@ +Class **Phalcon\\Mvc\\Url** +=========================== + +*implements* :doc:`Phalcon\\Mvc\\UrlInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This components helps in the generation of: URIs, URLs and Paths + +.. code-block:: php + + get('products/edit/1'); + + //Generate a URL for a predefined route + echo $url->get(array('for' => 'blog-post', 'title' => 'some-cool-stuff', 'year' => '2012')); + + + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **setBaseUri** (*unknown* $baseUri) + +Sets a prefix for all the URIs to be generated + +.. code-block:: php + + setBaseUri('/invo/'); + $url->setBaseUri('/invo/index.php/'); + + + + +public **setStaticBaseUri** (*unknown* $staticBaseUri) + +Sets a prefix for all static URLs generated + +.. code-block:: php + + setStaticBaseUri('/invo/'); + + + + +public **getBaseUri** () + +Returns the prefix for all the generated urls. By default / + + + +public **getStaticBaseUri** () + +Returns the prefix for all the generated static urls. By default / + + + +public **setBasePath** (*unknown* $basePath) + +Sets a base path for all the generated paths + +.. code-block:: php + + setBasePath('/var/www/htdocs/'); + + + + +public **getBasePath** () + +Returns the base path + + + +public **get** ([*unknown* $uri], [*unknown* $args], [*unknown* $local], [*unknown* $baseUri]) + +Generates a URL + +.. code-block:: php + + get('products/edit/1'); + + //Generate a URL for a predefined route + echo $url->get(array('for' => 'blog-post', 'title' => 'some-cool-stuff', 'year' => '2015')); + + + + +public **getStatic** ([*unknown* $uri]) + +Generates a URL for a static resource + +.. code-block:: php + + getStatic("img/logo.png"); + + // Generate a URL for a static predefined route + echo $url->getStatic(array('for' => 'logo-cdn')); + + + + +public **path** ([*unknown* $path]) + +Generates a local path + + + diff --git a/id/api/Phalcon_Mvc_UrlInterface.rst b/id/api/Phalcon_Mvc_UrlInterface.rst new file mode 100644 index 000000000000..fe10f2ab198e --- /dev/null +++ b/id/api/Phalcon_Mvc_UrlInterface.rst @@ -0,0 +1,41 @@ +Interface **Phalcon\\Mvc\\UrlInterface** +======================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setBaseUri** (*unknown* $baseUri) + +... + + +abstract public **getBaseUri** () + +... + + +abstract public **setBasePath** (*unknown* $basePath) + +... + + +abstract public **getBasePath** () + +... + + +abstract public **get** ([*unknown* $uri], [*unknown* $args], [*unknown* $local]) + +... + + +abstract public **path** ([*unknown* $path]) + +... + + diff --git a/id/api/Phalcon_Mvc_Url_Exception.rst b/id/api/Phalcon_Mvc_Url_Exception.rst new file mode 100644 index 000000000000..87c6dbdd8c33 --- /dev/null +++ b/id/api/Phalcon_Mvc_Url_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\Url\\Exception** +====================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_User_Component.rst b/id/api/Phalcon_Mvc_User_Component.rst new file mode 100644 index 000000000000..27cc896876a0 --- /dev/null +++ b/id/api/Phalcon_Mvc_User_Component.rst @@ -0,0 +1,45 @@ +Class **Phalcon\\Mvc\\User\\Component** +======================================= + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_User_Module.rst b/id/api/Phalcon_Mvc_User_Module.rst new file mode 100644 index 000000000000..0d2301f3f7a2 --- /dev/null +++ b/id/api/Phalcon_Mvc_User_Module.rst @@ -0,0 +1,45 @@ +Class **Phalcon\\Mvc\\User\\Module** +==================================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_User_Plugin.rst b/id/api/Phalcon_Mvc_User_Plugin.rst new file mode 100644 index 000000000000..0fbad9d8e22b --- /dev/null +++ b/id/api/Phalcon_Mvc_User_Plugin.rst @@ -0,0 +1,45 @@ +Class **Phalcon\\Mvc\\User\\Plugin** +==================================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_View.rst b/id/api/Phalcon_Mvc_View.rst new file mode 100644 index 000000000000..5434ac98f136 --- /dev/null +++ b/id/api/Phalcon_Mvc_View.rst @@ -0,0 +1,588 @@ +Class **Phalcon\\Mvc\\View** +============================ + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\ViewInterface `, :doc:`Phalcon\\Mvc\\ViewBaseInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Mvc\\View is a class for working with the "view" portion of the model-view-controller pattern. That is, it exists to help keep the view script separate from the model and controller scripts. It provides a system of helpers, output filters, and variable escaping. + +.. code-block:: php + + setViewsDir('app/views/'); + + $view->start(); + //Shows recent posts view (app/views/posts/recent.phtml) + $view->render('posts', 'recent'); + $view->finish(); + + //Printing views output + echo $view->getContent(); + + + +Constants +--------- + +*integer* **LEVEL_MAIN_LAYOUT** + +*integer* **LEVEL_AFTER_TEMPLATE** + +*integer* **LEVEL_LAYOUT** + +*integer* **LEVEL_BEFORE_TEMPLATE** + +*integer* **LEVEL_ACTION_VIEW** + +*integer* **LEVEL_NO_RENDER** + +*integer* **CACHE_MODE_NONE** + +*integer* **CACHE_MODE_INVERSE** + +Methods +------- + +public **getRenderLevel** () + +... + + +public **getCurrentRenderLevel** () + +... + + +public **getRegisteredEngines** () + + + + + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\View constructor + + + +public **setViewsDir** (*unknown* $viewsDir) + +Sets the views directory. Depending of your platform, always add a trailing slash or backslash + + + +public **getViewsDir** () + +Gets views directory + + + +public **setLayoutsDir** (*unknown* $layoutsDir) + +Sets the layouts sub-directory. Must be a directory under the views directory. Depending of your platform, always add a trailing slash or backslash + +.. code-block:: php + + setLayoutsDir('../common/layouts/'); + + + + +public **getLayoutsDir** () + +Gets the current layouts sub-directory + + + +public **setPartialsDir** (*unknown* $partialsDir) + +Sets a partials sub-directory. Must be a directory under the views directory. Depending of your platform, always add a trailing slash or backslash + +.. code-block:: php + + setPartialsDir('../common/partials/'); + + + + +public **getPartialsDir** () + +Gets the current partials sub-directory + + + +public **setBasePath** (*unknown* $basePath) + +Sets base path. Depending of your platform, always add a trailing slash or backslash + +.. code-block:: php + + setBasePath(__DIR__ . '/'); + + + + +public **getBasePath** () + +Gets base path + + + +public **setRenderLevel** (*unknown* $level) + +Sets the render level for the view + +.. code-block:: php + + view->setRenderLevel(View::LEVEL_LAYOUT); + + + + +public :doc:`Phalcon\\Mvc\\View ` **disableLevel** (*int|array* $level) + +Disables a specific level of rendering + +.. code-block:: php + + view->disableLevel(View::LEVEL_ACTION_VIEW); + + + + +public **setMainView** (*unknown* $viewPath) + +Sets default view name. Must be a file without extension in the views directory + +.. code-block:: php + + view->setMainView('base'); + + + + +public **getMainView** () + +Returns the name of the main view + + + +public **setLayout** (*unknown* $layout) + +Change the layout to be used instead of using the name of the latest controller name + +.. code-block:: php + + view->setLayout('main'); + + + + +public **getLayout** () + +Returns the name of the main view + + + +public :doc:`Phalcon\\Mvc\\View ` **setTemplateBefore** (*string|array* $templateBefore) + +Sets a template before the controller layout + + + +public **cleanTemplateBefore** () + +Resets any "template before" layouts + + + +public :doc:`Phalcon\\Mvc\\View ` **setTemplateAfter** (*string|array* $templateAfter) + +Sets a "template after" controller layout + + + +public **cleanTemplateAfter** () + +Resets any template before layouts + + + +public :doc:`Phalcon\\Mvc\\View ` **setParamToView** (*string* $key, *mixed* $value) + +Adds parameters to views (alias of setVar) + +.. code-block:: php + + view->setParamToView('products', $products); + + + + +public :doc:`Phalcon\\Mvc\\View ` **setVars** (*array* $params, [*boolean* $merge]) + +Set all the render params + +.. code-block:: php + + view->setVars(array('products' => $products)); + + + + +public :doc:`Phalcon\\Mvc\\View ` **setVar** (*string* $key, *mixed* $value) + +Set a single view parameter + +.. code-block:: php + + view->setVar('products', $products); + + + + +public *mixed* **getVar** (*string* $key) + +Returns a parameter previously set in the view + + + +public *array* **getParamsToView** () + +Returns parameters to views + + + +public *string* **getControllerName** () + +Gets the name of the controller rendered + + + +public *string* **getActionName** () + +Gets the name of the action rendered + + + +public *array* **getParams** () + +Gets extra parameters of the action rendered + + + +public **start** () + +Starts rendering process enabling the output buffering + + + +protected **_loadTemplateEngines** () + +Loads registered template engines, if none is registered it will use Phalcon\\Mvc\\View\\Engine\\Php + + + +protected **_engineRender** (*array* $engines, *string* $viewPath, *boolean* $silence, *boolean* $mustClean, [:doc:`Phalcon\\Cache\\BackendInterface ` $cache]) + +Checks whether view exists on registered extensions and render it + + + +public **registerEngines** (*array* $engines) + +Register templating engines + +.. code-block:: php + + view->registerEngines(array( + ".phtml" => "Phalcon\Mvc\View\Engine\Php", + ".volt" => "Phalcon\Mvc\View\Engine\Volt", + ".mhtml" => "MyCustomEngine" + )); + + + + +public **exists** (*unknown* $view) + +Checks whether view exists + + + +public **render** (*string* $controllerName, *string* $actionName, [*array* $params]) + +Executes render process from dispatching data + +.. code-block:: php + + start()->render('posts', 'recent')->finish(); + + + + +public :doc:`Phalcon\\Mvc\\View ` **pick** (*string|array* $renderView) + +Choose a different view to render instead of last-controller/last-action + +.. code-block:: php + + view->pick("products/list"); + } + } + + + + +public *string* **getPartial** (*string* $partialPath, [*array* $params]) + +Renders a partial view + +.. code-block:: php + + getPartial('shared/footer'); + +.. code-block:: php + + getPartial('shared/footer', array('content' => $html)); + + + + +public **partial** (*string* $partialPath, [*array* $params]) + +Renders a partial view + +.. code-block:: php + + partial('shared/footer'); + +.. code-block:: php + + partial('shared/footer', array('content' => $html)); + + + + +public *string* **getRender** (*string* $controllerName, *string* $actionName, [*array* $params], [*mixed* $configCallback]) + +Perform the automatic rendering returning the output as a string + +.. code-block:: php + + view->getRender('products', 'show', array('products' => $products)); + + + + +public **finish** () + +Finishes the render process by stopping the output buffering + + + +protected **_createCache** () + +Create a Phalcon\\Cache based on the internal cache options + + + +public **isCaching** () + +Check if the component is currently caching the output content + + + +public **getCache** () + +Returns the cache instance used to cache + + + +public :doc:`Phalcon\\Mvc\\View ` **cache** ([*boolean|array* $options]) + +Cache the actual view render to certain level + +.. code-block:: php + + view->cache(array('key' => 'my-key', 'lifetime' => 86400)); + + + + +public **setContent** (*unknown* $content) + +Externally sets the view content + +.. code-block:: php + + view->setContent("

hello

"); + + + + +public **getContent** () + +Returns cached output from another view stage + + + +public **getActiveRenderPath** () + +Returns the path of the view that is currently rendered + + + +public **disable** () + +Disables the auto-rendering process + + + +public **enable** () + +Enables the auto-rendering process + + + +public **reset** () + +Resets the view component to its factory default values + + + +public **__set** (*string* $key, *mixed* $value) + +Magic method to pass variables to the views + +.. code-block:: php + + view->products = $products; + + + + +public *mixed* **__get** (*string* $key) + +Magic method to retrieve a variable passed to the view + +.. code-block:: php + + view->products; + + + + +public **isDisabled** () + +Whether automatic rendering is enabled + + + +public *boolean* **__isset** (*string* $key) + +Magic method to retrieve if a variable is set in the view + +.. code-block:: php + + view->products); + + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + diff --git a/id/api/Phalcon_Mvc_ViewBaseInterface.rst b/id/api/Phalcon_Mvc_ViewBaseInterface.rst new file mode 100644 index 000000000000..877c7bd4f5f2 --- /dev/null +++ b/id/api/Phalcon_Mvc_ViewBaseInterface.rst @@ -0,0 +1,61 @@ +Interface **Phalcon\\Mvc\\ViewBaseInterface** +============================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setViewsDir** (*unknown* $viewsDir) + +... + + +abstract public **getViewsDir** () + +... + + +abstract public **setParamToView** (*unknown* $key, *unknown* $value) + +... + + +abstract public **setVar** (*unknown* $key, *unknown* $value) + +... + + +abstract public **getParamsToView** () + +... + + +abstract public **getCache** () + +... + + +abstract public **cache** ([*unknown* $options]) + +... + + +abstract public **setContent** (*unknown* $content) + +... + + +abstract public **getContent** () + +... + + +abstract public **partial** (*unknown* $partialPath, [*unknown* $params]) + +... + + diff --git a/id/api/Phalcon_Mvc_ViewInterface.rst b/id/api/Phalcon_Mvc_ViewInterface.rst new file mode 100644 index 000000000000..d627a4a8aa25 --- /dev/null +++ b/id/api/Phalcon_Mvc_ViewInterface.rst @@ -0,0 +1,203 @@ +Interface **Phalcon\\Mvc\\ViewInterface** +========================================= + +*implements* :doc:`Phalcon\\Mvc\\ViewBaseInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **setLayoutsDir** (*unknown* $layoutsDir) + +... + + +abstract public **getLayoutsDir** () + +... + + +abstract public **setPartialsDir** (*unknown* $partialsDir) + +... + + +abstract public **getPartialsDir** () + +... + + +abstract public **setBasePath** (*unknown* $basePath) + +... + + +abstract public **getBasePath** () + +... + + +abstract public **setRenderLevel** (*unknown* $level) + +... + + +abstract public **setMainView** (*unknown* $viewPath) + +... + + +abstract public **getMainView** () + +... + + +abstract public **setLayout** (*unknown* $layout) + +... + + +abstract public **getLayout** () + +... + + +abstract public **setTemplateBefore** (*unknown* $templateBefore) + +... + + +abstract public **cleanTemplateBefore** () + +... + + +abstract public **setTemplateAfter** (*unknown* $templateAfter) + +... + + +abstract public **cleanTemplateAfter** () + +... + + +abstract public **getControllerName** () + +... + + +abstract public **getActionName** () + +... + + +abstract public **getParams** () + +... + + +abstract public **start** () + +... + + +abstract public **registerEngines** (*array* $engines) + +... + + +abstract public **render** (*unknown* $controllerName, *unknown* $actionName, [*unknown* $params]) + +... + + +abstract public **pick** (*unknown* $renderView) + +... + + +abstract public **finish** () + +... + + +abstract public **getActiveRenderPath** () + +... + + +abstract public **disable** () + +... + + +abstract public **enable** () + +... + + +abstract public **reset** () + +... + + +abstract public **isDisabled** () + +... + + +abstract public **setViewsDir** (*unknown* $viewsDir) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **getViewsDir** () inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **setParamToView** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **setVar** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **getParamsToView** () inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **getCache** () inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **cache** ([*unknown* $options]) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **setContent** (*unknown* $content) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **getContent** () inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + +abstract public **partial** (*unknown* $partialPath, [*unknown* $params]) inherited from Phalcon\\Mvc\\ViewBaseInterface + +... + + diff --git a/id/api/Phalcon_Mvc_View_Engine.rst b/id/api/Phalcon_Mvc_View_Engine.rst new file mode 100644 index 000000000000..b18bec65cbde --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Engine.rst @@ -0,0 +1,72 @@ +Abstract class **Phalcon\\Mvc\\View\\Engine** +============================================= + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +All the template engine adapters must inherit this class. This provides basic interfacing between the engine and the Phalcon\\Mvc\\View component. + + +Methods +------- + +public **__construct** (:doc:`Phalcon\\Mvc\\ViewBaseInterface ` $view, [:doc:`Phalcon\\DiInterface ` $dependencyInjector]) + +Phalcon\\Mvc\\View\\Engine constructor + + + +public **getContent** () + +Returns cached output on another view stage + + + +public *string* **partial** (*string* $partialPath, [*array* $params]) + +Renders a partial inside another view + + + +public **getView** () + +Returns the view component related to the adapter + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_View_EngineInterface.rst b/id/api/Phalcon_Mvc_View_EngineInterface.rst new file mode 100644 index 000000000000..25e5176ef55a --- /dev/null +++ b/id/api/Phalcon_Mvc_View_EngineInterface.rst @@ -0,0 +1,26 @@ +Interface **Phalcon\\Mvc\\View\\EngineInterface** +================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **getContent** () + +... + + +abstract public **partial** (*unknown* $partialPath, [*unknown* $params]) + +... + + +abstract public **render** (*unknown* $path, *unknown* $params, [*unknown* $mustClean]) + +... + + diff --git a/id/api/Phalcon_Mvc_View_Engine_Php.rst b/id/api/Phalcon_Mvc_View_Engine_Php.rst new file mode 100644 index 000000000000..6ff7b7acc04d --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Engine_Php.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\View\\Engine\\Php** +========================================= + +*extends* abstract class :doc:`Phalcon\\Mvc\\View\\Engine ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Mvc\\View\\EngineInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Adapter to use PHP itself as templating engine + + +Methods +------- + +public **render** (*unknown* $path, *unknown* $params, [*unknown* $mustClean]) + +Renders a view using the template engine + + + +public **__construct** (:doc:`Phalcon\\Mvc\\ViewBaseInterface ` $view, [:doc:`Phalcon\\DiInterface ` $dependencyInjector]) inherited from Phalcon\\Mvc\\View\\Engine + +Phalcon\\Mvc\\View\\Engine constructor + + + +public **getContent** () inherited from Phalcon\\Mvc\\View\\Engine + +Returns cached output on another view stage + + + +public *string* **partial** (*string* $partialPath, [*array* $params]) inherited from Phalcon\\Mvc\\View\\Engine + +Renders a partial inside another view + + + +public **getView** () inherited from Phalcon\\Mvc\\View\\Engine + +Returns the view component related to the adapter + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_View_Engine_Volt.rst b/id/api/Phalcon_Mvc_View_Engine_Volt.rst new file mode 100644 index 000000000000..910f053dc083 --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Engine_Volt.rst @@ -0,0 +1,132 @@ +Class **Phalcon\\Mvc\\View\\Engine\\Volt** +========================================== + +*extends* abstract class :doc:`Phalcon\\Mvc\\View\\Engine ` + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Mvc\\View\\EngineInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Designer friendly and fast template engine for PHP written in Zephir/C + + +Methods +------- + +public **setOptions** (*array* $options) + +Set Volt's options + + + +public **getOptions** () + +Return Volt's options + + + +public **getCompiler** () + +Returns the Volt's compiler + + + +public **render** (*unknown* $templatePath, *unknown* $params, [*unknown* $mustClean]) + +Renders a view using the template engine + + + +public **length** (*unknown* $item) + +Length filter. If an array/object is passed a count is performed otherwise a strlen/mb_strlen + + + +public **isIncluded** (*unknown* $needle, *unknown* $haystack) + +Checks if the needle is included in the haystack + + + +public **convertEncoding** (*unknown* $text, *unknown* $from, *unknown* $to) + +Performs a string conversion + + + +public **slice** (*unknown* $value, [*unknown* $start], [*unknown* $end]) + +Extracts a slice from a string/array/traversable object value + + + +public **sort** (*array* $value) + +Sorts an array + + + +public **callMacro** (*unknown* $name, *array* $arguments) + +Checks if a macro is defined and calls it + + + +public **__construct** (:doc:`Phalcon\\Mvc\\ViewBaseInterface ` $view, [:doc:`Phalcon\\DiInterface ` $dependencyInjector]) inherited from Phalcon\\Mvc\\View\\Engine + +Phalcon\\Mvc\\View\\Engine constructor + + + +public **getContent** () inherited from Phalcon\\Mvc\\View\\Engine + +Returns cached output on another view stage + + + +public *string* **partial** (*string* $partialPath, [*array* $params]) inherited from Phalcon\\Mvc\\View\\Engine + +Renders a partial inside another view + + + +public **getView** () inherited from Phalcon\\Mvc\\View\\Engine + +Returns the view component related to the adapter + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Mvc_View_Engine_Volt_Compiler.rst b/id/api/Phalcon_Mvc_View_Engine_Volt_Compiler.rst new file mode 100644 index 000000000000..70bcbd7cf3e4 --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Engine_Volt_Compiler.rst @@ -0,0 +1,314 @@ +Class **Phalcon\\Mvc\\View\\Engine\\Volt\\Compiler** +==================================================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class reads and compiles Volt templates into PHP plain code + +.. code-block:: php + + compile('views/partials/header.volt'); + + require $compiler->getCompiledTemplatePath(); + + + +Methods +------- + +public **__construct** ([:doc:`Phalcon\\Mvc\\ViewBaseInterface ` $view]) + + + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setOptions** (*array* $options) + +Sets the compiler options + + + +public **setOption** (*string* $option, *mixed* $value) + +Sets a single compiler option + + + +public *string* **getOption** (*string* $option) + +Returns a compiler's option + + + +public **getOptions** () + +Returns the compiler options + + + +final public *mixed* **fireExtensionEvent** (*string* $name, [*array* $arguments]) + +Fires an event to registered extensions + + + +public **addExtension** (*unknown* $extension) + +Registers a Volt's extension + + + +public **getExtensions** () + +Returns the list of extensions registered in Volt + + + +public **addFunction** (*unknown* $name, *unknown* $definition) + +Register a new function in the compiler + + + +public **getFunctions** () + +Register the user registered functions + + + +public **addFilter** (*unknown* $name, *unknown* $definition) + +Register a new filter in the compiler + + + +public **getFilters** () + +Register the user registered filters + + + +public **setUniquePrefix** (*unknown* $prefix) + +Set a unique prefix to be used as prefix for compiled variables + + + +public **getUniquePrefix** () + +Return a unique prefix to be used as prefix for compiled variables and contexts + + + +public **attributeReader** (*array* $expr) + +Resolves attribute reading + + + +public **functionCall** (*array* $expr) + +Resolves function intermediate code into PHP function calls + + + +public **resolveTest** (*array* $test, *unknown* $left) + +Resolves filter intermediate code into a valid PHP expression + + + +final protected **resolveFilter** (*array* $filter, *unknown* $left) + +Resolves filter intermediate code into PHP function calls + + + +final public **expression** (*array* $expr) + +Resolves an expression node in an AST volt tree + + + +final protected *string|array* **_statementListOrExtends** (*array* $statements) + +Compiles a block of statements + + + +public **compileForeach** (*array* $statement, [*unknown* $extendsMode]) + +Compiles a "foreach" intermediate code representation into plain PHP code + + + +public **compileForElse** () + +Generates a 'forelse' PHP code + + + +public **compileIf** (*array* $statement, [*unknown* $extendsMode]) + +Compiles a 'if' statement returning PHP code + + + +public **compileElseIf** (*array* $statement) + +Compiles a "elseif" statement returning PHP code + + + +public **compileCache** (*array* $statement, [*unknown* $extendsMode]) + +Compiles a "cache" statement returning PHP code + + + +public **compileSet** (*array* $statement) + +Compiles a "set" statement returning PHP code + + + +public **compileDo** (*array* $statement) + +Compiles a "do" statement returning PHP code + + + +public **compileReturn** (*array* $statement) + +Compiles a "return" statement returning PHP code + + + +public **compileAutoEscape** (*array* $statement, *unknown* $extendsMode) + +Compiles a "autoescape" statement returning PHP code + + + +public *string* **compileEcho** (*array* $statement) + +Compiles a '{{' '}}' statement returning PHP code + + + +public **compileInclude** (*array* $statement) + +Compiles a 'include' statement returning PHP code + + + +public **compileMacro** (*array* $statement, *unknown* $extendsMode) + +Compiles macros + + + +public *string* **compileCall** (*array* $statement, *boolean* $extendsMode) + +Compiles calls to macros + + + +final protected **_statementList** (*array* $statements, [*unknown* $extendsMode]) + +Traverses a statement list compiling each of its nodes + + + +protected **_compileSource** (*unknown* $viewCode, [*unknown* $extendsMode]) + +Compiles a Volt source code returning a PHP plain version + + + +public **compileString** (*unknown* $viewCode, [*unknown* $extendsMode]) + +Compiles a template into a string + +.. code-block:: php + + compileString('{{ "hello world" }}'); + + + + +public *string|array* **compileFile** (*string* $path, *string* $compiledPath, [*boolean* $extendsMode]) + +Compiles a template into a file forcing the destination path + +.. code-block:: php + + compile('views/layouts/main.volt', 'views/layouts/main.volt.php'); + + + + +public **compile** (*unknown* $templatePath, [*unknown* $extendsMode]) + +Compiles a template into a file applying the compiler options This method does not return the compiled path if the template was not compiled + +.. code-block:: php + + compile('views/layouts/main.volt'); + require $compiler->getCompiledTemplatePath(); + + + + +public **getTemplatePath** () + +Returns the path that is currently being compiled + + + +public **getCompiledTemplatePath** () + +Returns the path to the last compiled template + + + +public *array* **parse** (*string* $viewCode) + +Parses a Volt template returning its intermediate representation + +.. code-block:: php + + parse('{{ 3 + 2 }}')); + + + + diff --git a/id/api/Phalcon_Mvc_View_Engine_Volt_Exception.rst b/id/api/Phalcon_Mvc_View_Engine_Volt_Exception.rst new file mode 100644 index 000000000000..ebe5247a8fe2 --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Engine_Volt_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\View\\Engine\\Volt\\Exception** +===================================================== + +*extends* class :doc:`Phalcon\\Mvc\\View\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_View_Exception.rst b/id/api/Phalcon_Mvc_View_Exception.rst new file mode 100644 index 000000000000..0fb567fa3081 --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Mvc\\View\\Exception** +======================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Mvc_View_Simple.rst b/id/api/Phalcon_Mvc_View_Simple.rst new file mode 100644 index 000000000000..bf8711824614 --- /dev/null +++ b/id/api/Phalcon_Mvc_View_Simple.rst @@ -0,0 +1,270 @@ +Class **Phalcon\\Mvc\\View\\Simple** +==================================== + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Mvc\\ViewBaseInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component allows to render views without hierarchical levels + +.. code-block:: php + + render('templates/my-view', array('content' => $html)); + //or with filename with extension + echo $view->render('templates/my-view.volt', array('content' => $html)); + + + +Methods +------- + +public **getRegisteredEngines** () + +... + + +public **__construct** ([*array* $options]) + +Phalcon\\Mvc\\View\\Simple constructor + + + +public **setViewsDir** (*unknown* $viewsDir) + +Sets views directory. Depending of your platform, always add a trailing slash or backslash + + + +public **getViewsDir** () + +Gets views directory + + + +public **registerEngines** (*array* $engines) + +Register templating engines + +.. code-block:: php + + view->registerEngines(array( + ".phtml" => "Phalcon\Mvc\View\Engine\Php", + ".volt" => "Phalcon\Mvc\View\Engine\Volt", + ".mhtml" => "MyCustomEngine" + )); + + + + +protected *array* **_loadTemplateEngines** () + +Loads registered template engines, if none is registered it will use Phalcon\\Mvc\\View\\Engine\\Php + + + +final protected **_internalRender** (*string* $path, *array* $params) + +Tries to render the view with every engine registered in the component + + + +public *string* **render** (*string* $path, [*array* $params]) + +Renders a view + + + +public **partial** (*string* $partialPath, [*array* $params]) + +Renders a partial view + +.. code-block:: php + + partial('shared/footer'); + +.. code-block:: php + + partial('shared/footer', array('content' => $html)); + + + + +public :doc:`Phalcon\\Mvc\\View\\Simple ` **setCacheOptions** (*array* $options) + +Sets the cache options + + + +public *array* **getCacheOptions** () + +Returns the cache options + + + +protected **_createCache** () + +Create a Phalcon\\Cache based on the internal cache options + + + +public **getCache** () + +Returns the cache instance used to cache + + + +public **cache** ([*unknown* $options]) + +Cache the actual view render to certain level + +.. code-block:: php + + view->cache(array('key' => 'my-key', 'lifetime' => 86400)); + + + + +public **setParamToView** (*unknown* $key, *unknown* $value) + +Adds parameters to views (alias of setVar) + +.. code-block:: php + + view->setParamToView('products', $products); + + + + +public **setVars** (*array* $params, [*unknown* $merge]) + +Set all the render params + +.. code-block:: php + + view->setVars(array('products' => $products)); + + + + +public **setVar** (*unknown* $key, *unknown* $value) + +Set a single view parameter + +.. code-block:: php + + view->setVar('products', $products); + + + + +public *mixed* **getVar** (*string* $key) + +Returns a parameter previously set in the view + + + +public *array* **getParamsToView** () + +Returns parameters to views + + + +public **setContent** (*unknown* $content) + +Externally sets the view content + +.. code-block:: php + + view->setContent("

hello

"); + + + + +public **getContent** () + +Returns cached output from another view stage + + + +public *string* **getActiveRenderPath** () + +Returns the path of the view that is currently rendered + + + +public **__set** (*unknown* $key, *unknown* $value) + +Magic method to pass variables to the views + +.. code-block:: php + + view->products = $products; + + + + +public *mixed* **__get** (*string* $key) + +Magic method to retrieve a variable passed to the view + +.. code-block:: php + + view->products; + + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + diff --git a/id/api/Phalcon_Paginator_Adapter.rst b/id/api/Phalcon_Paginator_Adapter.rst new file mode 100644 index 000000000000..943ef3fa0696 --- /dev/null +++ b/id/api/Phalcon_Paginator_Adapter.rst @@ -0,0 +1,32 @@ +Abstract class **Phalcon\\Paginator\\Adapter** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + + + + +Methods +------- + +public **setCurrentPage** (*unknown* $page) + +Set the current page number + + + +public **setLimit** (*unknown* $limitRows) + +Set current rows limit + + + +public **getLimit** () + +Get current rows limit + + + diff --git a/id/api/Phalcon_Paginator_AdapterInterface.rst b/id/api/Phalcon_Paginator_AdapterInterface.rst new file mode 100644 index 000000000000..75145966d656 --- /dev/null +++ b/id/api/Phalcon_Paginator_AdapterInterface.rst @@ -0,0 +1,36 @@ +Interface **Phalcon\\Paginator\\AdapterInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*array* $config) + +... + + +abstract public **setCurrentPage** (*unknown* $page) + +... + + +abstract public **getPaginate** () + +... + + +abstract public **setLimit** (*unknown* $limit) + +... + + +abstract public **getLimit** () + +... + + diff --git a/id/api/Phalcon_Paginator_Adapter_Model.rst b/id/api/Phalcon_Paginator_Adapter_Model.rst new file mode 100644 index 000000000000..9cb23eb9bdf0 --- /dev/null +++ b/id/api/Phalcon_Paginator_Adapter_Model.rst @@ -0,0 +1,63 @@ +Class **Phalcon\\Paginator\\Adapter\\Model** +============================================ + +*extends* abstract class :doc:`Phalcon\\Paginator\\Adapter ` + +*implements* :doc:`Phalcon\\Paginator\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This adapter allows to paginate data using a Phalcon\\Mvc\\Model resultset as a base + +.. code-block:: php + + Robots::find(), + "limit" => 25, + "page" => $currentPage + ) + ); + + $paginate = $paginator->getPaginate(); + + + +Methods +------- + +public **__construct** (*array* $config) + +Phalcon\\Paginator\\Adapter\\Model constructor + + + +public **getPaginate** () + +Returns a slice of the resultset to show in the pagination + + + +public **setCurrentPage** (*unknown* $page) inherited from Phalcon\\Paginator\\Adapter + +Set the current page number + + + +public **setLimit** (*unknown* $limitRows) inherited from Phalcon\\Paginator\\Adapter + +Set current rows limit + + + +public **getLimit** () inherited from Phalcon\\Paginator\\Adapter + +Get current rows limit + + + diff --git a/id/api/Phalcon_Paginator_Adapter_NativeArray.rst b/id/api/Phalcon_Paginator_Adapter_NativeArray.rst new file mode 100644 index 000000000000..0f405fbba082 --- /dev/null +++ b/id/api/Phalcon_Paginator_Adapter_NativeArray.rst @@ -0,0 +1,67 @@ +Class **Phalcon\\Paginator\\Adapter\\NativeArray** +================================================== + +*extends* abstract class :doc:`Phalcon\\Paginator\\Adapter ` + +*implements* :doc:`Phalcon\\Paginator\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Pagination using a PHP array as source of data + +.. code-block:: php + + array( + array('id' => 1, 'name' => 'Artichoke'), + array('id' => 2, 'name' => 'Carrots'), + array('id' => 3, 'name' => 'Beet'), + array('id' => 4, 'name' => 'Lettuce'), + array('id' => 5, 'name' => '') + ), + "limit" => 2, + "page" => $currentPage + ) + ); + + + +Methods +------- + +public **__construct** (*array* $config) + +Phalcon\\Paginator\\Adapter\\NativeArray constructor + + + +public **getPaginate** () + +Returns a slice of the resultset to show in the pagination + + + +public **setCurrentPage** (*unknown* $page) inherited from Phalcon\\Paginator\\Adapter + +Set the current page number + + + +public **setLimit** (*unknown* $limitRows) inherited from Phalcon\\Paginator\\Adapter + +Set current rows limit + + + +public **getLimit** () inherited from Phalcon\\Paginator\\Adapter + +Get current rows limit + + + diff --git a/id/api/Phalcon_Paginator_Adapter_QueryBuilder.rst b/id/api/Phalcon_Paginator_Adapter_QueryBuilder.rst new file mode 100644 index 000000000000..ecc975ebcb45 --- /dev/null +++ b/id/api/Phalcon_Paginator_Adapter_QueryBuilder.rst @@ -0,0 +1,82 @@ +Class **Phalcon\\Paginator\\Adapter\\QueryBuilder** +=================================================== + +*extends* abstract class :doc:`Phalcon\\Paginator\\Adapter ` + +*implements* :doc:`Phalcon\\Paginator\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Pagination using a PHQL query builder as source of data + +.. code-block:: php + + modelsManager->createBuilder() + ->columns('id, name') + ->from('Robots') + ->orderBy('name'); + + $paginator = new Phalcon\Paginator\Adapter\QueryBuilder(array( + "builder" => $builder, + "limit"=> 20, + "page" => 1 + )); + + + +Methods +------- + +public **__construct** (*array* $config) + + + + + +public **getCurrentPage** () + +Get the current page number + + + +public **setQueryBuilder** (:doc:`Phalcon\\Mvc\\Model\\Query\\Builder ` $builder) + +Set query builder object + + + +public **getQueryBuilder** () + +Get query builder object + + + +public **getPaginate** () + +Returns a slice of the resultset to show in the pagination + + + +public **setCurrentPage** (*unknown* $page) inherited from Phalcon\\Paginator\\Adapter + +Set the current page number + + + +public **setLimit** (*unknown* $limitRows) inherited from Phalcon\\Paginator\\Adapter + +Set current rows limit + + + +public **getLimit** () inherited from Phalcon\\Paginator\\Adapter + +Get current rows limit + + + diff --git a/id/api/Phalcon_Paginator_Exception.rst b/id/api/Phalcon_Paginator_Exception.rst new file mode 100644 index 000000000000..a65866c94d9b --- /dev/null +++ b/id/api/Phalcon_Paginator_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Paginator\\Exception** +======================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Queue_Beanstalk.rst b/id/api/Phalcon_Queue_Beanstalk.rst new file mode 100644 index 000000000000..cd7fb6d121a6 --- /dev/null +++ b/id/api/Phalcon_Queue_Beanstalk.rst @@ -0,0 +1,110 @@ +Class **Phalcon\\Queue\\Beanstalk** +=================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +* Phalcon\\Queue\\Beanstalk * * Class to access the beanstalk queue service. * Partially implements the protocol version 1.2 * + + +Methods +------- + +public **__construct** ([*array* $options]) + + + + + +public **connect** () + +Makes a connection to the Beanstalkd server + + + +public **put** (*string* $data, [*array* $options]) + +Inserts jobs into the queue + + + +public **reserve** ([*unknown* $timeout]) + +Reserves a job in the queue + + + +public **choose** (*unknown* $tube) + +Change the active tube. By default the tube is "default" + + + +public **watch** (*unknown* $tube) + +Change the active tube. By default the tube is "default" + + + +public **stats** () + +Get stats of the Beanstalk server. + + + +public **statsTube** (*unknown* $tube) + +Get stats of a tube. + + + +public **listTubes** () + +Get list of a tubes. + + + +public **peekReady** () + +Inspect the next ready job. + + + +public **peekBuried** () + +Return the next job in the list of buried jobs + + + +final public **readStatus** () + +Reads the latest status from the Beanstalkd server + + + +final public **readYaml** () + +Fetch a YAML payload from the Beanstalkd server + + + +public *string|boolean Data or `false` on error.* **read** ([*unknown* $length]) + +Reads a packet from the socket. Prior to reading from the socket will check for availability of the connection. + + + +protected **write** (*unknown* $data) + +Writes data to the socket. Performs a connection if none is available + + + +public **disconnect** () + +Closes the connection to the beanstalk server. + + + diff --git a/id/api/Phalcon_Queue_Beanstalk_Job.rst b/id/api/Phalcon_Queue_Beanstalk_Job.rst new file mode 100644 index 000000000000..26472939f8bd --- /dev/null +++ b/id/api/Phalcon_Queue_Beanstalk_Job.rst @@ -0,0 +1,72 @@ +Class **Phalcon\\Queue\\Beanstalk\\Job** +======================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents a job in a beanstalk queue + + +Methods +------- + +public **getId** () + +... + + +public **getBody** () + +... + + +public **__construct** (:doc:`Phalcon\\Queue\\Beanstalk ` $queue, *unknown* $id, *unknown* $body) + + + + + +public **delete** () + +Removes a job from the server entirely + + + +public **release** ([*unknown* $priority], [*unknown* $delay]) + +The release command puts a reserved job back into the ready queue (and marks its state as "ready") to be run by any client. It is normally used when the job fails because of a transitory error. + + + +public **bury** ([*unknown* $priority]) + +The bury command puts a job into the "buried" state. Buried jobs are put into a FIFO linked list and will not be touched by the server again until a client kicks them with the "kick" command. + + + +public **touch** () + +The `touch` command allows a worker to request more time to work on a job. This is useful for jobs that potentially take a long time, but you still want the benefits of a TTR pulling a job away from an unresponsive worker. A worker may periodically tell the server that it's still alive and processing a job (e.g. it may do this on `DEADLINE_SOON`). The command postpones the auto release of a reserved job until TTR seconds from when the command is issued. + + + +public **kick** () + +Move the job to the ready queue if it is delayed or buried. + + + +public **stats** () + +Get stats of the job. + + + +public **__wakeup** () + +Checks if the job has been modified after unserializing the object + + + diff --git a/id/api/Phalcon_Registry.rst b/id/api/Phalcon_Registry.rst new file mode 100644 index 000000000000..a9968f3ccc59 --- /dev/null +++ b/id/api/Phalcon_Registry.rst @@ -0,0 +1,132 @@ +Final class **Phalcon\\Registry** +================================= + +*implements* ArrayAccess, Countable, Iterator, Traversable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +A registry is a container for storing objects and values in the application space. By storing the value in a registry, the same object is always available throughout your application. + +.. code-block:: php + + something = 'something'; + // or + $registry['something'] = 'something'; + + // Get value + $value = $registry->something; + // or + $value = $registry['something']; + + // Check if the key exists + $exists = isset($registry->something); + // or + $exists = isset($registry['something']); + + // Unset + unset($registry->something); + // or + unset($registry['something']); + + In addition to ArrayAccess, Phalcon\\Registry also implements Countable (count($registry) will return the number of elements in the registry), Serializable and Iterator (you can iterate over the registry using a foreach loop) interfaces. For PHP 5.4 and higher, JsonSerializable interface is implemented. Phalcon\\Registry is very fast (it is typically faster than any userspace implementation of the registry); however, this comes at a price: Phalcon\\Registry is a final class and cannot be inherited from. Though Phalcon\\Registry exposes methods like __get(), offsetGet(), count() etc, it is not recommended to invoke them manually (these methods exist mainly to match the interfaces the registry implements): $registry->__get('property') is several times slower than $registry->property. Internally all the magic methods (and interfaces except JsonSerializable) are implemented using object handlers or similar techniques: this allows to bypass relatively slow method calls. + + +Methods +------- + +final public **__construct** () + +Registry constructor + + + +final public **offsetExists** (*unknown* $offset) + +Checks if the element is present in the registry + + + +final public **offsetGet** (*unknown* $offset) + +Returns an index in the registry + + + +final public **offsetSet** (*unknown* $offset, *unknown* $value) + +Sets an element in the registry + + + +final public **offsetUnset** (*unknown* $offset) + +Unsets an element in the registry + + + +final public **count** () + +Checks how many elements are in the register + + + +final public **next** () + +Moves cursor to next row in the registry + + + +final public **key** () + +Gets pointer number of active row in the registry + + + +final public **rewind** () + +Rewinds the registry cursor to its beginning + + + +public **valid** () + +Checks if the iterator is valid + + + +public **current** () + +Obtains the current value in the internal iterator + + + +final public **__set** (*unknown* $key, *unknown* $value) + +Sets an element in the registry + + + +final public **__get** (*unknown* $key) + +Returns an index in the registry + + + +final public **__isset** (*unknown* $key) + +... + + +final public **__unset** (*unknown* $key) + +... + + diff --git a/id/api/Phalcon_Security.rst b/id/api/Phalcon_Security.rst new file mode 100644 index 000000000000..9bc211501405 --- /dev/null +++ b/id/api/Phalcon_Security.rst @@ -0,0 +1,158 @@ +Class **Phalcon\\Security** +=========================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component provides a set of functions to improve the security in Phalcon applications + +.. code-block:: php + + request->getPost('login'); + $password = $this->request->getPost('password'); + + $user = Users::findFirstByLogin($login); + if ($user) { + if ($this->security->checkHash($password, $user->password)) { + //The password is valid + } + } + + + +Constants +--------- + +*integer* **CRYPT_DEFAULT** + +*integer* **CRYPT_STD_DES** + +*integer* **CRYPT_EXT_DES** + +*integer* **CRYPT_MD5** + +*integer* **CRYPT_BLOWFISH** + +*integer* **CRYPT_BLOWFISH_X** + +*integer* **CRYPT_BLOWFISH_Y** + +*integer* **CRYPT_SHA256** + +*integer* **CRYPT_SHA512** + +Methods +------- + +public **setWorkFactor** (*unknown* $workFactor) + +... + + +public **getWorkFactor** () + +... + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector + + + +public **getDI** () + +Returns the internal dependency injector + + + +public **setRandomBytes** (*unknown* $randomBytes) + +Sets a number of bytes to be generated by the openssl pseudo random generator + + + +public **getRandomBytes** () + +Returns a number of bytes to be generated by the openssl pseudo random generator + + + +public **getSaltBytes** ([*unknown* $numberBytes]) + +Generate a >22-length pseudo random string to be used as salt for passwords + + + +public **hash** (*unknown* $password, [*unknown* $workFactor]) + +Creates a password hash using bcrypt with a pseudo random salt + + + +public **checkHash** (*unknown* $password, *unknown* $passwordHash, [*unknown* $maxPassLength]) + +Checks a plain text password and its hash version to check if the password matches + + + +public **isLegacyHash** (*unknown* $passwordHash) + +Checks if a password hash is a valid bcrypt's hash + + + +public **getTokenKey** ([*unknown* $numberBytes]) + +Generates a pseudo random token key to be used as input's name in a CSRF check + + + +public **getToken** ([*unknown* $numberBytes]) + +Generates a pseudo random token value to be used as input's value in a CSRF check + + + +public **checkToken** ([*unknown* $tokenKey], [*unknown* $tokenValue], [*unknown* $destroyIfValid]) + +Check if the CSRF token sent in the request is the same that the current in session + + + +public **getSessionToken** () + +Returns the value of the CSRF token in session + + + +public **destroyToken** () + +Removes the value of the CSRF token and key from session + + + +public **computeHmac** (*string* $data, *string* $key, *string* $algo, [*boolean* $raw]) + +Computes a HMAC + + + +public **setDefaultHash** (*unknown* $defaultHash) + +Sets the default hash + + + +public **getDefaultHash** () + +Sets the default hash + + + diff --git a/id/api/Phalcon_Security_Exception.rst b/id/api/Phalcon_Security_Exception.rst new file mode 100644 index 000000000000..8fac01303c0c --- /dev/null +++ b/id/api/Phalcon_Security_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Security\\Exception** +====================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Security_Random.rst b/id/api/Phalcon_Security_Random.rst new file mode 100644 index 000000000000..4b498c8c696c --- /dev/null +++ b/id/api/Phalcon_Security_Random.rst @@ -0,0 +1,163 @@ +Class **Phalcon\\Security\\Random** +=================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Secure random number generator class. Provides secure random number generator which is suitable for generating session key in HTTP cookies, etc. It supports following secure random number generators: - libsodium - openssl - /dev/urandom + +.. code-block:: php + + bytes(); + + // Random hex string + echo $random->hex(10); // a29f470508d5ccb8e289 + echo $random->hex(10); // 533c2f08d5eee750e64a + echo $random->hex(11); // f362ef96cb9ffef150c9cd + echo $random->hex(12); // 95469d667475125208be45c4 + echo $random->hex(13); // 05475e8af4a34f8f743ab48761 + + // Random base64 string + echo $random->base64(12); // XfIN81jGGuKkcE1E + echo $random->base64(12); // 3rcq39QzGK9fUqh8 + echo $random->base64(); // DRcfbngL/iOo9hGGvy1TcQ== + echo $random->base64(16); // SvdhPcIHDZFad838Bb0Swg== + + // Random URL-safe base64 string + echo $random->base64Safe(); // PcV6jGbJ6vfVw7hfKIFDGA + echo $random->base64Safe(); // GD8JojhzSTrqX7Q8J6uug + echo $random->base64Safe(8); // mGyy0evy3ok + echo $random->base64Safe(null, true); // DRrAgOFkS4rvRiVHFefcQ== + + // Random UUID + echo $random->uuid(); // db082997-2572-4e2c-a046-5eefe97b1235 + echo $random->uuid(); // da2aa0e2-b4d0-4e3c-99f5-f5ef62c57fe2 + echo $random->uuid(); // 75e6b628-c562-4117-bb76-61c4153455a9 + echo $random->uuid(); // dc446df1-0848-4d05-b501-4af3c220c13d + + // Random number between 0 and $len + echo $random->number(256); // 84 + echo $random->number(256); // 79 + echo $random->number(100); // 29 + echo $random->number(300); // 40 + + // Random base58 string + echo $random->base58(); // 4kUgL2pdQMSCQtjE + echo $random->base58(); // Umjxqf7ZPwh765yR + echo $random->base58(24); // qoXcgmw4A9dys26HaNEdCRj9 + echo $random->base58(7); // 774SJD3vgP + + This class partially borrows SecureRandom library from Ruby + + +Methods +------- + +public **bytes** ([*unknown* $len]) + +Generates a random binary string If $len is not specified, 16 is assumed. It may be larger in future. The result may contain any byte: "x00" - "xFF". + +.. code-block:: php + + bytes(); + + + + +public **hex** ([*unknown* $len]) + +Generates a random hex string If $len is not specified, 16 is assumed. It may be larger in future. The length of the result string is usually greater of $len. + +.. code-block:: php + + hex(10); // a29f470508d5ccb8e289 + + + + +public **base58** ([*unknown* $n]) + +Generates a random base58 string If $len is not specified, 16 is assumed. It may be larger in future. The result may contain alphanumeric characters except 0, O, I and l. It is similar to Base64 but has been modified to avoid both non-alphanumeric characters and letters which might look ambiguous when printed. + +.. code-block:: php + + base58(); // 4kUgL2pdQMSCQtjE + + + + +public **base64** ([*unknown* $len]) + +Generates a random base64 string If $len is not specified, 16 is assumed. It may be larger in future. The length of the result string is usually greater of $len. Size formula: 4 \*( $len / 3) and this need to be rounded up to a multiple of 4. + +.. code-block:: php + + base64(12); // 3rcq39QzGK9fUqh8 + + + + +public **base64Safe** ([*unknown* $len], [*unknown* $padding]) + +Generates a random URL-safe base64 string If $len is not specified, 16 is assumed. It may be larger in future. The length of the result string is usually greater of $len. By default, padding is not generated because "=" may be used as a URL delimiter. The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if $padding is true. See RFC 3548 for the definition of URL-safe base64. + +.. code-block:: php + + base64Safe(); // GD8JojhzSTrqX7Q8J6uug + + + + +public **uuid** () + +Generates a v4 random UUID (Universally Unique IDentifier) The version 4 UUID is purely random (except the version). It doesn't contain meaningful information such as MAC address, time, etc. See RFC 4122 for details of UUID. This algorithm sets the version number (4 bits) as well as two reserved bits. All other bits (the remaining 122 bits) are set using a random or pseudorandom data source. Version 4 UUIDs have the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx where x is any hexadecimal digit and y is one of 8, 9, A, or B (e.g., f47ac10b-58cc-4372-a567-0e02b2c3d479). + +.. code-block:: php + + uuid(); // 1378c906-64bb-4f81-a8d6-4ae1bfcdec22 + + + + +public **number** (*unknown* $len) + +Generates a random number between 0 and $len Returns an integer: 0 <= result <= $len. + +.. code-block:: php + + number(16); // 8 diff --git a/id/api/Phalcon_Session.rst b/id/api/Phalcon_Session.rst new file mode 100644 index 000000000000..66d222069f36 --- /dev/null +++ b/id/api/Phalcon_Session.rst @@ -0,0 +1,8 @@ +Abstract class **Phalcon\\Session** +=================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + diff --git a/id/api/Phalcon_Session_Adapter.rst b/id/api/Phalcon_Session_Adapter.rst new file mode 100644 index 000000000000..43ccb794e937 --- /dev/null +++ b/id/api/Phalcon_Session_Adapter.rst @@ -0,0 +1,226 @@ +Abstract class **Phalcon\\Session\\Adapter** +============================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Base class for Phalcon\\Session adapters + + +Constants +--------- + +*integer* **SESSION_ACTIVE** + +*integer* **SESSION_NONE** + +*integer* **SESSION_DISABLED** + +Methods +------- + +public **__construct** ([*array* $options]) + +Phalcon\\Session\\Adapter constructor + + + +public **start** () + +Starts the session (if headers are already sent the session will not be started) + + + +public **setOptions** (*array* $options) + +Sets session's options + +.. code-block:: php + + setOptions(array( + 'uniqueId' => 'my-private-app' + )); + + + + +public **getOptions** () + +Get internal options + + + +public **setName** (*unknown* $name) + +Set session name + + + +public **getName** () + +Get session name + + + +public **regenerateId** ([*unknown* $deleteOldSession]) + + + + + +public **get** (*unknown* $index, [*unknown* $defaultValue], [*unknown* $remove]) + +Gets a session variable from an application context + +.. code-block:: php + + get('auth', 'yes'); + + + + +public **set** (*unknown* $index, *unknown* $value) + +Sets a session variable in an application context + +.. code-block:: php + + set('auth', 'yes'); + + + + +public **has** (*unknown* $index) + +Check whether a session variable is set in an application context + +.. code-block:: php + + has('auth')); + + + + +public **remove** (*unknown* $index) + +Removes a session variable from an application context + +.. code-block:: php + + remove('auth'); + + + + +public **getId** () + +Returns active session id + +.. code-block:: php + + getId(); + + + + +public **setId** (*unknown* $id) + +Set the current session id + +.. code-block:: php + + setId($id); + + + + +public **isStarted** () + +Check whether the session has been started + +.. code-block:: php + + isStarted()); + + + + +public **destroy** ([*unknown* $removeData]) + +Destroys the active session + +.. code-block:: php + + destroy()); + var_dump($session->destroy(true)); + + + + +public **status** () + +Returns the status of the current session. For PHP 5.3 this function will always return SESSION_NONE + +.. code-block:: php + + status()); + + // PHP 5.4 and above will give meaningful messages, 5.3 gets SESSION_NONE always + if ($session->status() !== $session::SESSION_ACTIVE) { + $session->start(); + } + + + + +public **__get** (*unknown* $index) + +Alias: Gets a session variable from an application context + + + +public **__set** (*unknown* $index, *unknown* $value) + +Alias: Sets a session variable in an application context + + + +public **__isset** (*unknown* $index) + +Alias: Check whether a session variable is set in an application context + + + +public **__unset** (*unknown* $index) + +Alias: Removes a session variable from an application context + + + +public **__destruct** () + +... + + diff --git a/id/api/Phalcon_Session_AdapterInterface.rst b/id/api/Phalcon_Session_AdapterInterface.rst new file mode 100644 index 000000000000..dc1e7d698cca --- /dev/null +++ b/id/api/Phalcon_Session_AdapterInterface.rst @@ -0,0 +1,76 @@ +Interface **Phalcon\\Session\\AdapterInterface** +================================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **start** () + +... + + +abstract public **setOptions** (*array* $options) + +... + + +abstract public **getOptions** () + +... + + +abstract public **get** (*unknown* $index, [*unknown* $defaultValue]) + +... + + +abstract public **set** (*unknown* $index, *unknown* $value) + +... + + +abstract public **has** (*unknown* $index) + +... + + +abstract public **remove** (*unknown* $index) + +... + + +abstract public **getId** () + +... + + +abstract public **isStarted** () + +... + + +abstract public **destroy** ([*unknown* $removeData]) + +... + + +abstract public **regenerateId** ([*unknown* $deleteOldSession]) + +... + + +abstract public **setName** (*unknown* $name) + +... + + +abstract public **getName** () + +... + + diff --git a/id/api/Phalcon_Session_Adapter_Files.rst b/id/api/Phalcon_Session_Adapter_Files.rst new file mode 100644 index 000000000000..5d9810956a25 --- /dev/null +++ b/id/api/Phalcon_Session_Adapter_Files.rst @@ -0,0 +1,227 @@ +Class **Phalcon\\Session\\Adapter\\Files** +========================================== + +*extends* abstract class :doc:`Phalcon\\Session\\Adapter ` + +*implements* :doc:`Phalcon\\Session\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Constants +--------- + +*integer* **SESSION_ACTIVE** + +*integer* **SESSION_NONE** + +*integer* **SESSION_DISABLED** + +Methods +------- + +public **__construct** ([*array* $options]) inherited from Phalcon\\Session\\Adapter + +Phalcon\\Session\\Adapter constructor + + + +public **start** () inherited from Phalcon\\Session\\Adapter + +Starts the session (if headers are already sent the session will not be started) + + + +public **setOptions** (*array* $options) inherited from Phalcon\\Session\\Adapter + +Sets session's options + +.. code-block:: php + + setOptions(array( + 'uniqueId' => 'my-private-app' + )); + + + + +public **getOptions** () inherited from Phalcon\\Session\\Adapter + +Get internal options + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Session\\Adapter + +Set session name + + + +public **getName** () inherited from Phalcon\\Session\\Adapter + +Get session name + + + +public **regenerateId** ([*unknown* $deleteOldSession]) inherited from Phalcon\\Session\\Adapter + + + + + +public **get** (*unknown* $index, [*unknown* $defaultValue], [*unknown* $remove]) inherited from Phalcon\\Session\\Adapter + +Gets a session variable from an application context + +.. code-block:: php + + get('auth', 'yes'); + + + + +public **set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Sets a session variable in an application context + +.. code-block:: php + + set('auth', 'yes'); + + + + +public **has** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Check whether a session variable is set in an application context + +.. code-block:: php + + has('auth')); + + + + +public **remove** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Removes a session variable from an application context + +.. code-block:: php + + remove('auth'); + + + + +public **getId** () inherited from Phalcon\\Session\\Adapter + +Returns active session id + +.. code-block:: php + + getId(); + + + + +public **setId** (*unknown* $id) inherited from Phalcon\\Session\\Adapter + +Set the current session id + +.. code-block:: php + + setId($id); + + + + +public **isStarted** () inherited from Phalcon\\Session\\Adapter + +Check whether the session has been started + +.. code-block:: php + + isStarted()); + + + + +public **destroy** ([*unknown* $removeData]) inherited from Phalcon\\Session\\Adapter + +Destroys the active session + +.. code-block:: php + + destroy()); + var_dump($session->destroy(true)); + + + + +public **status** () inherited from Phalcon\\Session\\Adapter + +Returns the status of the current session. For PHP 5.3 this function will always return SESSION_NONE + +.. code-block:: php + + status()); + + // PHP 5.4 and above will give meaningful messages, 5.3 gets SESSION_NONE always + if ($session->status() !== $session::SESSION_ACTIVE) { + $session->start(); + } + + + + +public **__get** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Gets a session variable from an application context + + + +public **__set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Alias: Sets a session variable in an application context + + + +public **__isset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Check whether a session variable is set in an application context + + + +public **__unset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Removes a session variable from an application context + + + +public **__destruct** () inherited from Phalcon\\Session\\Adapter + +... + + diff --git a/id/api/Phalcon_Session_Adapter_Libmemcached.rst b/id/api/Phalcon_Session_Adapter_Libmemcached.rst new file mode 100644 index 000000000000..7a9dbcc21781 --- /dev/null +++ b/id/api/Phalcon_Session_Adapter_Libmemcached.rst @@ -0,0 +1,283 @@ +Class **Phalcon\\Session\\Adapter\\Libmemcached** +================================================= + +*extends* abstract class :doc:`Phalcon\\Session\\Adapter ` + +*implements* :doc:`Phalcon\\Session\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This adapter store sessions in libmemcached + +.. code-block:: php + + array( + array('host' => 'localhost', 'port' => 11211, 'weight' => 1), + ), + 'client' => array( + Memcached::OPT_HASH => Memcached::HASH_MD5, + Memcached::OPT_PREFIX_KEY => 'prefix.', + ), + 'lifetime' => 3600, + 'prefix' => 'my_' + )); + + $session->start(); + + $session->set('var', 'some-value'); + + echo $session->get('var'); + + + +Constants +--------- + +*integer* **SESSION_ACTIVE** + +*integer* **SESSION_NONE** + +*integer* **SESSION_DISABLED** + +Methods +------- + +public **getLibmemcached** () + +... + + +public **getLifetime** () + +... + + +public **__construct** (*array* $options) + +Phalcon\\Session\\Adapter\\Libmemcached constructor + + + +public **open** () + +... + + +public **close** () + +... + + +public *mixed* **read** (*string* $sessionId) + + + + + +public **write** (*string* $sessionId, *string* $data) + + + + + +public *boolean* **destroy** ([*string* $sessionId]) + + + + + +public **gc** () + + + + + +public **start** () inherited from Phalcon\\Session\\Adapter + +Starts the session (if headers are already sent the session will not be started) + + + +public **setOptions** (*array* $options) inherited from Phalcon\\Session\\Adapter + +Sets session's options + +.. code-block:: php + + setOptions(array( + 'uniqueId' => 'my-private-app' + )); + + + + +public **getOptions** () inherited from Phalcon\\Session\\Adapter + +Get internal options + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Session\\Adapter + +Set session name + + + +public **getName** () inherited from Phalcon\\Session\\Adapter + +Get session name + + + +public **regenerateId** ([*unknown* $deleteOldSession]) inherited from Phalcon\\Session\\Adapter + + + + + +public **get** (*unknown* $index, [*unknown* $defaultValue], [*unknown* $remove]) inherited from Phalcon\\Session\\Adapter + +Gets a session variable from an application context + +.. code-block:: php + + get('auth', 'yes'); + + + + +public **set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Sets a session variable in an application context + +.. code-block:: php + + set('auth', 'yes'); + + + + +public **has** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Check whether a session variable is set in an application context + +.. code-block:: php + + has('auth')); + + + + +public **remove** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Removes a session variable from an application context + +.. code-block:: php + + remove('auth'); + + + + +public **getId** () inherited from Phalcon\\Session\\Adapter + +Returns active session id + +.. code-block:: php + + getId(); + + + + +public **setId** (*unknown* $id) inherited from Phalcon\\Session\\Adapter + +Set the current session id + +.. code-block:: php + + setId($id); + + + + +public **isStarted** () inherited from Phalcon\\Session\\Adapter + +Check whether the session has been started + +.. code-block:: php + + isStarted()); + + + + +public **status** () inherited from Phalcon\\Session\\Adapter + +Returns the status of the current session. For PHP 5.3 this function will always return SESSION_NONE + +.. code-block:: php + + status()); + + // PHP 5.4 and above will give meaningful messages, 5.3 gets SESSION_NONE always + if ($session->status() !== $session::SESSION_ACTIVE) { + $session->start(); + } + + + + +public **__get** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Gets a session variable from an application context + + + +public **__set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Alias: Sets a session variable in an application context + + + +public **__isset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Check whether a session variable is set in an application context + + + +public **__unset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Removes a session variable from an application context + + + +public **__destruct** () inherited from Phalcon\\Session\\Adapter + +... + + diff --git a/id/api/Phalcon_Session_Adapter_Memcache.rst b/id/api/Phalcon_Session_Adapter_Memcache.rst new file mode 100644 index 000000000000..4e399aa9f5da --- /dev/null +++ b/id/api/Phalcon_Session_Adapter_Memcache.rst @@ -0,0 +1,280 @@ +Class **Phalcon\\Session\\Adapter\\Memcache** +============================================= + +*extends* abstract class :doc:`Phalcon\\Session\\Adapter ` + +*implements* :doc:`Phalcon\\Session\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This adapter store sessions in memcache + +.. code-block:: php + + 'my-private-app', + 'host' => '127.0.0.1', + 'port' => 11211, + 'persistent' => true, + 'lifetime' => 3600, + 'prefix' => 'my_' + )); + + $session->start(); + + $session->set('var', 'some-value'); + + echo $session->get('var'); + + + +Constants +--------- + +*integer* **SESSION_ACTIVE** + +*integer* **SESSION_NONE** + +*integer* **SESSION_DISABLED** + +Methods +------- + +public **getMemcache** () + +... + + +public **getLifetime** () + +... + + +public **__construct** ([*array* $options]) + +Phalcon\\Session\\Adapter\\Memcache constructor + + + +public **open** () + +... + + +public **close** () + +... + + +public *mixed* **read** (*string* $sessionId) + + + + + +public **write** (*string* $sessionId, *string* $data) + + + + + +public *boolean* **destroy** ([*string* $sessionId]) + + + + + +public **gc** () + + + + + +public **start** () inherited from Phalcon\\Session\\Adapter + +Starts the session (if headers are already sent the session will not be started) + + + +public **setOptions** (*array* $options) inherited from Phalcon\\Session\\Adapter + +Sets session's options + +.. code-block:: php + + setOptions(array( + 'uniqueId' => 'my-private-app' + )); + + + + +public **getOptions** () inherited from Phalcon\\Session\\Adapter + +Get internal options + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Session\\Adapter + +Set session name + + + +public **getName** () inherited from Phalcon\\Session\\Adapter + +Get session name + + + +public **regenerateId** ([*unknown* $deleteOldSession]) inherited from Phalcon\\Session\\Adapter + + + + + +public **get** (*unknown* $index, [*unknown* $defaultValue], [*unknown* $remove]) inherited from Phalcon\\Session\\Adapter + +Gets a session variable from an application context + +.. code-block:: php + + get('auth', 'yes'); + + + + +public **set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Sets a session variable in an application context + +.. code-block:: php + + set('auth', 'yes'); + + + + +public **has** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Check whether a session variable is set in an application context + +.. code-block:: php + + has('auth')); + + + + +public **remove** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Removes a session variable from an application context + +.. code-block:: php + + remove('auth'); + + + + +public **getId** () inherited from Phalcon\\Session\\Adapter + +Returns active session id + +.. code-block:: php + + getId(); + + + + +public **setId** (*unknown* $id) inherited from Phalcon\\Session\\Adapter + +Set the current session id + +.. code-block:: php + + setId($id); + + + + +public **isStarted** () inherited from Phalcon\\Session\\Adapter + +Check whether the session has been started + +.. code-block:: php + + isStarted()); + + + + +public **status** () inherited from Phalcon\\Session\\Adapter + +Returns the status of the current session. For PHP 5.3 this function will always return SESSION_NONE + +.. code-block:: php + + status()); + + // PHP 5.4 and above will give meaningful messages, 5.3 gets SESSION_NONE always + if ($session->status() !== $session::SESSION_ACTIVE) { + $session->start(); + } + + + + +public **__get** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Gets a session variable from an application context + + + +public **__set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Alias: Sets a session variable in an application context + + + +public **__isset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Check whether a session variable is set in an application context + + + +public **__unset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Removes a session variable from an application context + + + +public **__destruct** () inherited from Phalcon\\Session\\Adapter + +... + + diff --git a/id/api/Phalcon_Session_Adapter_Redis.rst b/id/api/Phalcon_Session_Adapter_Redis.rst new file mode 100644 index 000000000000..a8e02737187c --- /dev/null +++ b/id/api/Phalcon_Session_Adapter_Redis.rst @@ -0,0 +1,281 @@ +Class **Phalcon\\Session\\Adapter\\Redis** +========================================== + +*extends* abstract class :doc:`Phalcon\\Session\\Adapter ` + +*implements* :doc:`Phalcon\\Session\\AdapterInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This adapter store sessions in Redis + +.. code-block:: php + + 'my-private-app', + 'host' => 'localhost', + 'port' => 6379, + 'auth' => 'foobared', + 'persistent' => false, + 'lifetime' => 3600, + 'prefix' => 'my_' + )); + + $session->start(); + + $session->set('var', 'some-value'); + + echo $session->get('var'); + + + +Constants +--------- + +*integer* **SESSION_ACTIVE** + +*integer* **SESSION_NONE** + +*integer* **SESSION_DISABLED** + +Methods +------- + +public **getRedis** () + +... + + +public **getLifetime** () + +... + + +public **__construct** ([*array* $options]) + +Phalcon\\Session\\Adapter\\Redis constructor + + + +public **open** () + +... + + +public **close** () + +... + + +public *mixed* **read** (*string* $sessionId) + + + + + +public **write** (*string* $sessionId, *string* $data) + + + + + +public *boolean* **destroy** ([*string* $sessionId]) + + + + + +public **gc** () + + + + + +public **start** () inherited from Phalcon\\Session\\Adapter + +Starts the session (if headers are already sent the session will not be started) + + + +public **setOptions** (*array* $options) inherited from Phalcon\\Session\\Adapter + +Sets session's options + +.. code-block:: php + + setOptions(array( + 'uniqueId' => 'my-private-app' + )); + + + + +public **getOptions** () inherited from Phalcon\\Session\\Adapter + +Get internal options + + + +public **setName** (*unknown* $name) inherited from Phalcon\\Session\\Adapter + +Set session name + + + +public **getName** () inherited from Phalcon\\Session\\Adapter + +Get session name + + + +public **regenerateId** ([*unknown* $deleteOldSession]) inherited from Phalcon\\Session\\Adapter + + + + + +public **get** (*unknown* $index, [*unknown* $defaultValue], [*unknown* $remove]) inherited from Phalcon\\Session\\Adapter + +Gets a session variable from an application context + +.. code-block:: php + + get('auth', 'yes'); + + + + +public **set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Sets a session variable in an application context + +.. code-block:: php + + set('auth', 'yes'); + + + + +public **has** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Check whether a session variable is set in an application context + +.. code-block:: php + + has('auth')); + + + + +public **remove** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Removes a session variable from an application context + +.. code-block:: php + + remove('auth'); + + + + +public **getId** () inherited from Phalcon\\Session\\Adapter + +Returns active session id + +.. code-block:: php + + getId(); + + + + +public **setId** (*unknown* $id) inherited from Phalcon\\Session\\Adapter + +Set the current session id + +.. code-block:: php + + setId($id); + + + + +public **isStarted** () inherited from Phalcon\\Session\\Adapter + +Check whether the session has been started + +.. code-block:: php + + isStarted()); + + + + +public **status** () inherited from Phalcon\\Session\\Adapter + +Returns the status of the current session. For PHP 5.3 this function will always return SESSION_NONE + +.. code-block:: php + + status()); + + // PHP 5.4 and above will give meaningful messages, 5.3 gets SESSION_NONE always + if ($session->status() !== $session::SESSION_ACTIVE) { + $session->start(); + } + + + + +public **__get** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Gets a session variable from an application context + + + +public **__set** (*unknown* $index, *unknown* $value) inherited from Phalcon\\Session\\Adapter + +Alias: Sets a session variable in an application context + + + +public **__isset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Check whether a session variable is set in an application context + + + +public **__unset** (*unknown* $index) inherited from Phalcon\\Session\\Adapter + +Alias: Removes a session variable from an application context + + + +public **__destruct** () inherited from Phalcon\\Session\\Adapter + +... + + diff --git a/id/api/Phalcon_Session_Bag.rst b/id/api/Phalcon_Session_Bag.rst new file mode 100644 index 000000000000..80ea237aa84c --- /dev/null +++ b/id/api/Phalcon_Session_Bag.rst @@ -0,0 +1,209 @@ +Class **Phalcon\\Session\\Bag** +=============================== + +*implements* :doc:`Phalcon\\Di\\InjectionAwareInterface `, :doc:`Phalcon\\Session\\BagInterface `, IteratorAggregate, Traversable, ArrayAccess, Countable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This component helps to separate session data into "namespaces". Working by this way you can easily create groups of session variables into the application + +.. code-block:: php + + name = "Kimbra Johnson"; + $user->age = 22; + + + +Methods +------- + +public **__construct** (*unknown* $name) + +Phalcon\\Session\\Bag constructor + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the DependencyInjector container + + + +public **getDI** () + +Returns the DependencyInjector container + + + +public **initialize** () + +Initializes the session bag. This method must not be called directly, the class calls it when its internal data is accesed + + + +public **destroy** () + +Destroyes the session bag + +.. code-block:: php + + destroy(); + + + + +public **set** (*unknown* $property, *unknown* $value) + +Sets a value in the session bag + +.. code-block:: php + + set('name', 'Kimbra'); + + + + +public **__set** (*unknown* $property, *unknown* $value) + +Magic setter to assign values to the session bag + +.. code-block:: php + + name = "Kimbra"; + + + + +public **get** (*unknown* $property, [*unknown* $defaultValue]) + +Obtains a value from the session bag optionally setting a default value + +.. code-block:: php + + get('name', 'Kimbra'); + + + + +public **__get** (*unknown* $property) + +Magic getter to obtain values from the session bag + +.. code-block:: php + + name; + + + + +public **has** (*unknown* $property) + +Check whether a property is defined in the internal bag + +.. code-block:: php + + has('name')); + + + + +public **__isset** (*unknown* $property) + +Magic isset to check whether a property is defined in the bag + +.. code-block:: php + + remove('name'); + + + + +public **__unset** (*unknown* $property) + +Magic unset to remove items using the array syntax + +.. code-block:: php + + count(); + + + + +final public *\ArrayIterator* **getIterator** () + + Returns the bag iterator + + + +final public **offsetSet** (*string* $property, *mixed* $value) + + + + + +final public **offsetExists** (*string* $property) + + + + + +final public **offsetUnset** (*string* $property) + + + + + +final public **offsetGet** (*string* $property) + + + + + diff --git a/id/api/Phalcon_Session_BagInterface.rst b/id/api/Phalcon_Session_BagInterface.rst new file mode 100644 index 000000000000..27b465cd23e0 --- /dev/null +++ b/id/api/Phalcon_Session_BagInterface.rst @@ -0,0 +1,51 @@ +Interface **Phalcon\\Session\\BagInterface** +============================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **initialize** () + +... + + +abstract public **destroy** () + +... + + +abstract public **set** (*unknown* $property, *unknown* $value) + +... + + +abstract public **get** (*unknown* $property, [*unknown* $defaultValue]) + +... + + +abstract public **has** (*unknown* $property) + +... + + +abstract public **__set** (*unknown* $property, *unknown* $value) + +... + + +abstract public **__get** (*unknown* $property) + +... + + +abstract public **__isset** (*unknown* $property) + +... + + diff --git a/id/api/Phalcon_Session_Exception.rst b/id/api/Phalcon_Session_Exception.rst new file mode 100644 index 000000000000..dffe824d5aa6 --- /dev/null +++ b/id/api/Phalcon_Session_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Session\\Exception** +===================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Tag.rst b/id/api/Phalcon_Tag.rst new file mode 100644 index 000000000000..d6475ba6e5d0 --- /dev/null +++ b/id/api/Phalcon_Tag.rst @@ -0,0 +1,681 @@ +Class **Phalcon\\Tag** +====================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Phalcon\\Tag is designed to simplify building of HTML tags. It provides a set of helpers to generate HTML in a dynamic way. This component is an abstract class that you can extend to add more helpers. + + +Constants +--------- + +*integer* **HTML32** + +*integer* **HTML401_STRICT** + +*integer* **HTML401_TRANSITIONAL** + +*integer* **HTML401_FRAMESET** + +*integer* **HTML5** + +*integer* **XHTML10_STRICT** + +*integer* **XHTML10_TRANSITIONAL** + +*integer* **XHTML10_FRAMESET** + +*integer* **XHTML11** + +*integer* **XHTML20** + +*integer* **XHTML5** + +Methods +------- + +public static *EscaperInterface* **getEscaper** (*array* $params) + +Obtains the 'escaper' service if required + + + +public static **renderAttributes** (*unknown* $code, *array* $attributes) + +Renders parameters keeping order in their HTML attributes + + + +public static **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) + +Sets the dependency injector container. + + + +public static **getDI** () + +Internally gets the request dispatcher + + + +public static **getUrlService** () + +Returns a URL service from the default DI + + + +public static **getEscaperService** () + +Returns an Escaper service from the default DI + + + +public static **setAutoescape** (*unknown* $autoescape) + +Set autoescape mode in generated html + + + +public static **setDefault** (*string* $id, *string* $value) + +Assigns default values to generated tags by helpers + +.. code-block:: php + + "peter")); + + //Later in the view + echo Phalcon\Tag::textField("name"); //Will have the value "peter" by default + + + + +public static **displayTo** (*string* $id, *string* $value) + +Alias of Phalcon\\Tag::setDefault + + + +public static *boolean* **hasValue** (*string* $name) + +Check if a helper has a default value set using Phalcon\\Tag::setDefault or value from _POST + + + +public static *mixed* **getValue** (*string* $name, [*array* $params]) + +Every helper calls this function to check whether a component has a predefined value using Phalcon\\Tag::setDefault or value from _POST + + + +public static **resetInput** () + +Resets the request and internal values to avoid those fields will have any default value + + + +public static *string* **linkTo** (*array|string* $parameters, [*string* $text], [*boolean* $local]) + +Builds a HTML A tag using framework conventions + +.. code-block:: php + + "btn-primary")); + echo Phalcon\Tag::linkTo("http://phalconphp.com/", "Phalcon", FALSE); + echo Phalcon\Tag::linkTo(array("http://phalconphp.com/", "Phalcon Home", FALSE)); + echo Phalcon\Tag::linkTo(array("http://phalconphp.com/", "Phalcon Home", "local" =>FALSE)); + + + + +final protected static *string* **_inputField** (*string* $type, *array* $parameters, [*boolean* $asValue]) + +Builds generic INPUT tags + + + +final protected static *string* **_inputFieldChecked** (*string* $type, *array* $parameters) + +Builds INPUT tags that implements the checked attribute + + + +public static *string* **colorField** (*array* $parameters) + +Builds a HTML input[type="color"] tag + + + +public static *string* **textField** (*array* $parameters) + +Builds a HTML input[type="text"] tag + +.. code-block:: php + + 30)); + + + + +public static *string* **numericField** (*array* $parameters) + +Builds a HTML input[type="number"] tag + +.. code-block:: php + + "1", "max" => "5")); + + + + +public static *string* **rangeField** (*array* $parameters) + +Builds a HTML input[type="range"] tag + + + +public static *string* **emailField** (*array* $parameters) + +Builds a HTML input[type="email"] tag + +.. code-block:: php + + "14-12-1980")) + + + + +public static *string* **dateTimeField** (*array* $parameters) + +Builds a HTML input[type="datetime"] tag + + + +public static *string* **dateTimeLocalField** (*array* $parameters) + +Builds a HTML input[type="datetime-local"] tag + + + +public static *string* **monthField** (*array* $parameters) + +Builds a HTML input[type="month"] tag + + + +public static *string* **timeField** (*array* $parameters) + +Builds a HTML input[type="time"] tag + + + +public static *string* **weekField** (*array* $parameters) + +Builds a HTML input[type="week"] tag + + + +public static *string* **passwordField** (*array* $parameters) + +Builds a HTML input[type="password"] tag + +.. code-block:: php + + 30)); + + + + +public static *string* **hiddenField** (*array* $parameters) + +Builds a HTML input[type="hidden"] tag + +.. code-block:: php + + "mike")); + + + + +public static *string* **fileField** (*array* $parameters) + +Builds a HTML input[type="file"] tag + +.. code-block:: php + + "Y")); + + + + +public static *string* **radioField** (*array* $parameters) + +Builds a HTML input[type="radio"] tag + +.. code-block:: php + + "hot")) + +Volt syntax: + +.. code-block:: php + + "/img/button.png")); + +Volt syntax: + +.. code-block:: php + + "Active", "I" => "Inactive")) + + + + +public static *string* **select** (*array* $parameters, [*array* $data]) + +Builds a HTML SELECT tag using a Phalcon\\Mvc\\Model resultset as options + +.. code-block:: php + + array("id", "name") + )); + +Volt syntax: + +.. code-block:: php + + 10, "rows" => 4)) + +Volt syntax: + +.. code-block:: php + + "post")); + +Volt syntax: + +.. code-block:: php + + "Some Photo")); + +Volt Syntax: + +.. code-block:: php + + ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Tag_Select.rst b/id/api/Phalcon_Tag_Select.rst new file mode 100644 index 000000000000..dd8db9882f61 --- /dev/null +++ b/id/api/Phalcon_Tag_Select.rst @@ -0,0 +1,32 @@ +Abstract class **Phalcon\\Tag\\Select** +======================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Generates a SELECT html tag using a static array of values or a Phalcon\\Mvc\\Model resultset + + +Methods +------- + +public static **selectField** (*array* $parameters, [*array* $data]) + +Generates a SELECT tag + + + +private static **_optionsFromResultset** (:doc:`Phalcon\\Mvc\\Model\\Resultset ` $resultset, *array* $using, *mixed* $value, *string* $closeOption) + +Generate the OPTION tags based on a resultset + + + +private static **_optionsFromArray** (*array* $data, *mixed* $value, *string* $closeOption) + +Generate the OPTION tags based on an array + + + diff --git a/id/api/Phalcon_Text.rst b/id/api/Phalcon_Text.rst new file mode 100644 index 000000000000..77155f1dd7f2 --- /dev/null +++ b/id/api/Phalcon_Text.rst @@ -0,0 +1,179 @@ +Abstract class **Phalcon\\Text** +================================ + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Provides utilities to work with texts + + +Constants +--------- + +*integer* **RANDOM_ALNUM** + +*integer* **RANDOM_ALPHA** + +*integer* **RANDOM_HEXDEC** + +*integer* **RANDOM_NUMERIC** + +*integer* **RANDOM_NOZERO** + +Methods +------- + +public static **camelize** (*unknown* $str) + +Converts strings to camelize style + +.. code-block:: php + + Source on GitHub` + diff --git a/id/api/Phalcon_Translate_Adapter.rst b/id/api/Phalcon_Translate_Adapter.rst new file mode 100644 index 000000000000..78baff651d4a --- /dev/null +++ b/id/api/Phalcon_Translate_Adapter.rst @@ -0,0 +1,66 @@ +Abstract class **Phalcon\\Translate\\Adapter** +============================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Base class for Phalcon\\Translate adapters + + +Methods +------- + +public **__construct** (*array* $options) + +... + + +public **setInterpolator** (:doc:`Phalcon\\Translate\\InterpolatorInterface ` $interpolator) + +... + + +public *string* **t** (*string* $translateKey, [*array* $placeholders]) + +Returns the translation string of the given key + + + +public *string* **_** (*string* $translateKey, [*array* $placeholders]) + +Returns the translation string of the given key (alias of method 't') + + + +public **offsetSet** (*string* $offset, *string* $value) + +Sets a translation value + + + +public **offsetExists** (*unknown* $translateKey) + +Check whether a translation key exists + + + +public **offsetUnset** (*string* $offset) + +Unsets a translation from the dictionary + + + +public *string* **offsetGet** (*string* $translateKey) + +Returns the translation related to the given key + + + +protected **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Translate_AdapterInterface.rst b/id/api/Phalcon_Translate_AdapterInterface.rst new file mode 100644 index 000000000000..7088bd2b93e1 --- /dev/null +++ b/id/api/Phalcon_Translate_AdapterInterface.rst @@ -0,0 +1,26 @@ +Interface **Phalcon\\Translate\\AdapterInterface** +================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **t** (*unknown* $translateKey, [*unknown* $placeholders]) + +... + + +abstract public **query** (*unknown* $index, [*unknown* $placeholders]) + +... + + +abstract public **exists** (*unknown* $index) + +... + + diff --git a/id/api/Phalcon_Translate_Adapter_Csv.rst b/id/api/Phalcon_Translate_Adapter_Csv.rst new file mode 100644 index 000000000000..fe9371799fbd --- /dev/null +++ b/id/api/Phalcon_Translate_Adapter_Csv.rst @@ -0,0 +1,89 @@ +Class **Phalcon\\Translate\\Adapter\\Csv** +========================================== + +*extends* abstract class :doc:`Phalcon\\Translate\\Adapter ` + +*implements* :doc:`Phalcon\\Translate\\AdapterInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to define translation lists using CSV file + + +Methods +------- + +public **__construct** (*array* $options) + +Phalcon\\Translate\\Adapter\\Csv constructor + + + +private **_load** (*string* $file, *int* $length, *string* $delimiter, *string* $enclosure) + +Load translates from file + + + +public **query** (*unknown* $index, [*unknown* $placeholders]) + +Returns the translation related to the given key + + + +public **exists** (*unknown* $index) + +Check whether is defined a translation key in the internal array + + + +public **setInterpolator** (:doc:`Phalcon\\Translate\\InterpolatorInterface ` $interpolator) inherited from Phalcon\\Translate\\Adapter + +... + + +public *string* **t** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key + + + +public *string* **_** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key (alias of method 't') + + + +public **offsetSet** (*string* $offset, *string* $value) inherited from Phalcon\\Translate\\Adapter + +Sets a translation value + + + +public **offsetExists** (*unknown* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Check whether a translation key exists + + + +public **offsetUnset** (*string* $offset) inherited from Phalcon\\Translate\\Adapter + +Unsets a translation from the dictionary + + + +public *string* **offsetGet** (*string* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Returns the translation related to the given key + + + +protected **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Translate_Adapter_Gettext.rst b/id/api/Phalcon_Translate_Adapter_Gettext.rst new file mode 100644 index 000000000000..71bd34e46892 --- /dev/null +++ b/id/api/Phalcon_Translate_Adapter_Gettext.rst @@ -0,0 +1,155 @@ +Class **Phalcon\\Translate\\Adapter\\Gettext** +============================================== + +*extends* abstract class :doc:`Phalcon\\Translate\\Adapter ` + +*implements* :doc:`Phalcon\\Translate\\AdapterInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Class Gettext + + +Methods +------- + +public **__construct** (*array* $options) + +Phalcon\\Translate\\Adapter\\Gettext constructor + + + +public *string* **query** (*string* $index, [*array* $placeholders]) + +Returns the translation related to the given key + + + +public **exists** (*unknown* $index) + +Check whether is defined a translation key in the internal array + + + +public *string* **nquery** (*string* $msgid1, *string* $msgid2, *int* $count, [*array* $placeholders], [*string* $domain]) + +The plural version of gettext(). Some languages have more than one form for plural messages dependent on the count. + + + +public *string Returns the new current domain.* **setDomain** (*string* $domain) + +Changes the current domain (i.e. the translation file). The passed domain must be one of those passed to the constructor. + + + +public *string Returns the new current domain.* **resetDomain** () + +Sets the default domain + + + +public **setDefaultDomain** (*unknown* $domain) + +Sets the domain default to search within when calls are made to gettext() + + + +public **getDefaultDomain** () + +Gets the default domain + + + +public **setDirectory** (*unknown* $directory) + +Sets the path for a domain + + + +public **getDirectory** (*unknown* $directory) + +Gets the path for a domain + + + +public **setLocale** (*unknown* $category, *unknown* $locale) + +Sets locale information + + + +public **getLocale** () + +Gets locale + + + +public **getCategory** () + +Gets locale category + + + +protected **prepareOptions** (*array* $options) + +Validator for constructor + + + +protected **getOptionsDefault** () + +Gets default options + + + +public **setInterpolator** (:doc:`Phalcon\\Translate\\InterpolatorInterface ` $interpolator) inherited from Phalcon\\Translate\\Adapter + +... + + +public *string* **t** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key + + + +public *string* **_** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key (alias of method 't') + + + +public **offsetSet** (*string* $offset, *string* $value) inherited from Phalcon\\Translate\\Adapter + +Sets a translation value + + + +public **offsetExists** (*unknown* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Check whether a translation key exists + + + +public **offsetUnset** (*string* $offset) inherited from Phalcon\\Translate\\Adapter + +Unsets a translation from the dictionary + + + +public *string* **offsetGet** (*string* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Returns the translation related to the given key + + + +protected **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Translate_Adapter_NativeArray.rst b/id/api/Phalcon_Translate_Adapter_NativeArray.rst new file mode 100644 index 000000000000..7af0dc15eaf6 --- /dev/null +++ b/id/api/Phalcon_Translate_Adapter_NativeArray.rst @@ -0,0 +1,83 @@ +Class **Phalcon\\Translate\\Adapter\\NativeArray** +================================================== + +*extends* abstract class :doc:`Phalcon\\Translate\\Adapter ` + +*implements* :doc:`Phalcon\\Translate\\AdapterInterface `, ArrayAccess + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to define translation lists using PHP arrays + + +Methods +------- + +public **__construct** (*array* $options) + +Phalcon\\Translate\\Adapter\\NativeArray constructor + + + +public **query** (*unknown* $index, [*unknown* $placeholders]) + +Returns the translation related to the given key + + + +public **exists** (*unknown* $index) + +Check whether is defined a translation key in the internal array + + + +public **setInterpolator** (:doc:`Phalcon\\Translate\\InterpolatorInterface ` $interpolator) inherited from Phalcon\\Translate\\Adapter + +... + + +public *string* **t** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key + + + +public *string* **_** (*string* $translateKey, [*array* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Returns the translation string of the given key (alias of method 't') + + + +public **offsetSet** (*string* $offset, *string* $value) inherited from Phalcon\\Translate\\Adapter + +Sets a translation value + + + +public **offsetExists** (*unknown* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Check whether a translation key exists + + + +public **offsetUnset** (*string* $offset) inherited from Phalcon\\Translate\\Adapter + +Unsets a translation from the dictionary + + + +public *string* **offsetGet** (*string* $translateKey) inherited from Phalcon\\Translate\\Adapter + +Returns the translation related to the given key + + + +protected **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) inherited from Phalcon\\Translate\\Adapter + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Translate_Exception.rst b/id/api/Phalcon_Translate_Exception.rst new file mode 100644 index 000000000000..60b61c12a490 --- /dev/null +++ b/id/api/Phalcon_Translate_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Translate\\Exception** +======================================= + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Translate_InterpolatorInterface.rst b/id/api/Phalcon_Translate_InterpolatorInterface.rst new file mode 100644 index 000000000000..ae04616c63dc --- /dev/null +++ b/id/api/Phalcon_Translate_InterpolatorInterface.rst @@ -0,0 +1,16 @@ +Interface **Phalcon\\Translate\\InterpolatorInterface** +======================================================= + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) + +... + + diff --git a/id/api/Phalcon_Translate_Interpolator_AssociativeArray.rst b/id/api/Phalcon_Translate_Interpolator_AssociativeArray.rst new file mode 100644 index 000000000000..481b4aba8c31 --- /dev/null +++ b/id/api/Phalcon_Translate_Interpolator_AssociativeArray.rst @@ -0,0 +1,19 @@ +Class **Phalcon\\Translate\\Interpolator\\AssociativeArray** +============================================================ + +*implements* :doc:`Phalcon\\Translate\\InterpolatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Translate_Interpolator_IndexedArray.rst b/id/api/Phalcon_Translate_Interpolator_IndexedArray.rst new file mode 100644 index 000000000000..6668ef30f3d5 --- /dev/null +++ b/id/api/Phalcon_Translate_Interpolator_IndexedArray.rst @@ -0,0 +1,19 @@ +Class **Phalcon\\Translate\\Interpolator\\IndexedArray** +======================================================== + +*implements* :doc:`Phalcon\\Translate\\InterpolatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +public **replacePlaceholders** (*unknown* $translation, [*unknown* $placeholders]) + +Replaces placeholders by the values passed + + + diff --git a/id/api/Phalcon_Validation.rst b/id/api/Phalcon_Validation.rst new file mode 100644 index 000000000000..b366d7d5c9cc --- /dev/null +++ b/id/api/Phalcon_Validation.rst @@ -0,0 +1,155 @@ +Class **Phalcon\\Validation** +============================= + +*extends* abstract class :doc:`Phalcon\\Di\\Injectable ` + +*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Di\\InjectionAwareInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows to validate data using custom or built-in validators + + +Methods +------- + +public **setValidators** (*unknown* $validators) + +... + + +public **__construct** ([*array* $validators]) + +Phalcon\\Validation constructor + + + +public :doc:`Phalcon\\Validation\\Message\\Group ` **validate** ([*array|object* $data], [*object* $entity]) + +Validate a set of data according to a set of rules + + + +public **add** (*unknown* $field, :doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) + +Adds a validator to a field + + + +public **rule** (*unknown* $field, :doc:`Phalcon\\Validation\\ValidatorInterface ` $validator) + +Alias of `add` method + + + +public **rules** (*unknown* $field, *array* $validators) + +Adds the validators to a field + + + +public :doc:`Phalcon\\Validation ` **setFilters** (*string* $field, *array|string* $filters) + +Adds filters to the field + + + +public *mixed* **getFilters** ([*string* $field]) + +Returns all the filters or a specific one + + + +public **getValidators** () + +Returns the validators added to the validation + + + +public *object* **getEntity** () + +Returns the bound entity + + + +public **setDefaultMessages** ([*array* $messages]) + +Adds default messages to validators + + + +public **getDefaultMessage** (*string* $type) + +Get default message for validator type + + + +public **getMessages** () + +Returns the registered validators + + + +public **setLabels** (*array* $labels) + +Adds labels for fields + + + +public *string* **getLabel** (*string* $field) + +Get label for field + + + +public **appendMessage** (:doc:`Phalcon\\Validation\\MessageInterface ` $message) + +Appends a message to the messages list + + + +public :doc:`Phalcon\\Validation ` **bind** (*object* $entity, *array|object* $data) + +Assigns the data to an entity The entity is used to obtain the validation values + + + +public *mixed* **getValue** (*string* $field) + +Gets the a value to validate in the array/object data source + + + +public **setDI** (:doc:`Phalcon\\DiInterface ` $dependencyInjector) inherited from Phalcon\\Di\\Injectable + +Sets the dependency injector + + + +public **getDI** () inherited from Phalcon\\Di\\Injectable + +Returns the internal dependency injector + + + +public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Di\\Injectable + +Sets the event manager + + + +public **getEventsManager** () inherited from Phalcon\\Di\\Injectable + +Returns the internal event manager + + + +public **__get** (*unknown* $propertyName) inherited from Phalcon\\Di\\Injectable + +Magic method __get + + + diff --git a/id/api/Phalcon_Validation_Exception.rst b/id/api/Phalcon_Validation_Exception.rst new file mode 100644 index 000000000000..2c01155ea688 --- /dev/null +++ b/id/api/Phalcon_Validation_Exception.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Validation\\Exception** +======================================== + +*extends* class :doc:`Phalcon\\Exception ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +final private *Exception* **__clone** () inherited from Exception + +Clone the exception + + + +public **__construct** ([*string* $message], [*int* $code], [*Exception* $previous]) inherited from Exception + +Exception constructor + + + +public **__wakeup** () inherited from Exception + +... + + +final public *string* **getMessage** () inherited from Exception + +Gets the Exception message + + + +final public *int* **getCode** () inherited from Exception + +Gets the Exception code + + + +final public *string* **getFile** () inherited from Exception + +Gets the file in which the exception occurred + + + +final public *int* **getLine** () inherited from Exception + +Gets the line in which the exception occurred + + + +final public *array* **getTrace** () inherited from Exception + +Gets the stack trace + + + +final public *Exception* **getPrevious** () inherited from Exception + +Returns previous Exception + + + +final public *Exception* **getTraceAsString** () inherited from Exception + +Gets the stack trace as a string + + + +public *string* **__toString** () inherited from Exception + +String representation of the exception + + + diff --git a/id/api/Phalcon_Validation_Message.rst b/id/api/Phalcon_Validation_Message.rst new file mode 100644 index 000000000000..310ac936929c --- /dev/null +++ b/id/api/Phalcon_Validation_Message.rst @@ -0,0 +1,82 @@ +Class **Phalcon\\Validation\\Message** +====================================== + +*implements* :doc:`Phalcon\\Validation\\MessageInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Encapsulates validation info generated in the validation process + + +Methods +------- + +public **__construct** (*unknown* $message, [*unknown* $field], [*unknown* $type], [*unknown* $code]) + +Phalcon\\Validation\\Message constructor + + + +public **setType** (*unknown* $type) + +Sets message type + + + +public **getType** () + +Returns message type + + + +public **setMessage** (*unknown* $message) + +Sets verbose message + + + +public **getMessage** () + +Returns verbose message + + + +public **setField** (*unknown* $field) + +Sets field name related to message + + + +public *string* **getField** () + +Returns field name related to message + + + +public **setCode** (*unknown* $code) + +Sets code for the message + + + +public **getCode** () + +Returns the message code + + + +public **__toString** () + +Magic __toString method returns verbose message + + + +public static **__set_state** (*array* $message) + +Magic __set_state helps to recover messsages from serialization + + + diff --git a/id/api/Phalcon_Validation_MessageInterface.rst b/id/api/Phalcon_Validation_MessageInterface.rst new file mode 100644 index 000000000000..0ac7952cb5a3 --- /dev/null +++ b/id/api/Phalcon_Validation_MessageInterface.rst @@ -0,0 +1,56 @@ +Interface **Phalcon\\Validation\\MessageInterface** +=================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **__construct** (*unknown* $message, [*unknown* $field], [*unknown* $type]) + +... + + +abstract public **setType** (*unknown* $type) + +... + + +abstract public **getType** () + +... + + +abstract public **setMessage** (*unknown* $message) + +... + + +abstract public **getMessage** () + +... + + +abstract public **setField** (*unknown* $field) + +... + + +abstract public **getField** () + +... + + +abstract public **__toString** () + +... + + +abstract public static **__set_state** (*array* $message) + +... + + diff --git a/id/api/Phalcon_Validation_Message_Group.rst b/id/api/Phalcon_Validation_Message_Group.rst new file mode 100644 index 000000000000..0150ca75bdec --- /dev/null +++ b/id/api/Phalcon_Validation_Message_Group.rst @@ -0,0 +1,148 @@ +Class **Phalcon\\Validation\\Message\\Group** +============================================= + +*implements* Countable, ArrayAccess, Iterator, Traversable + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Represents a group of validation messages + + +Methods +------- + +public **__construct** ([*array* $messages]) + +Phalcon\\Validation\\Message\\Group constructor + + + +public :doc:`Phalcon\\Validation\\Message ` **offsetGet** (*int* $index) + +Gets an attribute a message using the array syntax + +.. code-block:: php + + ` $message) + +Sets an attribute using the array-syntax + +.. code-block:: php + + ` $message) + +Appends a message to the group + +.. code-block:: php + + appendMessage(new \Phalcon\Validation\Message('This is a message')); + + + + +public **appendMessages** (*\\Phalcon\\Validation\\MessageInterface[]* $messages) + +Appends an array of messages to the group + +.. code-block:: php + + appendMessages($messagesArray); + + + + +public *array* **filter** (*string* $fieldName) + +Filters the message group by field name + + + +public **count** () + +Returns the number of messages in the list + + + +public **rewind** () + +Rewinds the internal iterator + + + +public :doc:`Phalcon\\Validation\\Message ` **current** () + +Returns the current message in the iterator + + + +public **key** () + +Returns the current position/key in the iterator + + + +public **next** () + +Moves the internal iteration pointer to the next position + + + +public **valid** () + +Check if the current message in the iterator is valid + + + +public static :doc:`Phalcon\\Validation\\Message\\Group ` **__set_state** (*array* $group) + +Magic __set_state helps to re-build messages variable when exporting + + + diff --git a/id/api/Phalcon_Validation_Validator.rst b/id/api/Phalcon_Validation_Validator.rst new file mode 100644 index 000000000000..a9553a04fa7c --- /dev/null +++ b/id/api/Phalcon_Validation_Validator.rst @@ -0,0 +1,52 @@ +Abstract class **Phalcon\\Validation\\Validator** +================================================= + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This is a base class for validators + + +Methods +------- + +public **__construct** ([*unknown* $options]) + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) + +Sets an option in the validator + + + +abstract public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $attribute) + +Executes the validation + + + diff --git a/id/api/Phalcon_Validation_ValidatorInterface.rst b/id/api/Phalcon_Validation_ValidatorInterface.rst new file mode 100644 index 000000000000..5bfc52ef7ce4 --- /dev/null +++ b/id/api/Phalcon_Validation_ValidatorInterface.rst @@ -0,0 +1,31 @@ +Interface **Phalcon\\Validation\\ValidatorInterface** +===================================================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Methods +------- + +abstract public **isSetOption** (*unknown* $key) + +... + + +abstract public **hasOption** (*unknown* $key) + +... + + +abstract public **getOption** (*unknown* $key, [*unknown* $defaultValue]) + +... + + +abstract public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $attribute) + +... + + diff --git a/id/api/Phalcon_Validation_Validator_Alnum.rst b/id/api/Phalcon_Validation_Validator_Alnum.rst new file mode 100644 index 000000000000..d2f5043262f3 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Alnum.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Alnum** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check for alphanumeric character(s) + +.. code-block:: php + + add('username', new AlnumValidator(array( + 'message' => ':field must contain only alphanumeric characters' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Alpha.rst b/id/api/Phalcon_Validation_Validator_Alpha.rst new file mode 100644 index 000000000000..a9bd3c0a5ac1 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Alpha.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Alpha** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check for alphabetic character(s) + +.. code-block:: php + + add('username', new AlphaValidator(array( + 'message' => ':field must contain only letters' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Between.rst b/id/api/Phalcon_Validation_Validator_Between.rst new file mode 100644 index 000000000000..23fa32f696d5 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Between.rst @@ -0,0 +1,67 @@ +Class **Phalcon\\Validation\\Validator\\Between** +================================================= + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Validates that a value is between an inclusive range of two values. For a value x, the test is passed if minimum<=x<=maximum. + +.. code-block:: php + + add('name', new Between(array( + 'minimum' => 0, + 'maximum' => 100, + 'message' => 'The price must be between 0 and 100' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Confirmation.rst b/id/api/Phalcon_Validation_Validator_Confirmation.rst new file mode 100644 index 000000000000..9059616eff90 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Confirmation.rst @@ -0,0 +1,72 @@ +Class **Phalcon\\Validation\\Validator\\Confirmation** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks that two values have the same value + +.. code-block:: php + + add('password', new Confirmation(array( + 'message' => 'Password doesn\'t match confirmation', + 'with' => 'confirmPassword' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +final protected **compare** (*unknown* $a, *unknown* $b) + +Compare strings + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_CreditCard.rst b/id/api/Phalcon_Validation_Validator_CreditCard.rst new file mode 100644 index 000000000000..96e6d3e5e073 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_CreditCard.rst @@ -0,0 +1,71 @@ +Class **Phalcon\\Validation\\Validator\\CreditCard** +==================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks if a value has a valid creditcard number + +.. code-block:: php + + add('creditcard', new CreditCardValidator(array( + 'message' => 'The credit card number is not valid' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +private *boolean* **verifyByLuhnAlgorithm** (*string* $number) + +is a simple checksum formula used to validate a variety of identification numbers + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Digit.rst b/id/api/Phalcon_Validation_Validator_Digit.rst new file mode 100644 index 000000000000..54a727274060 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Digit.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Digit** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check for numeric character(s) + +.. code-block:: php + + add('height', new DigitValidator(array( + 'message' => ':field must be numeric' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Email.rst b/id/api/Phalcon_Validation_Validator_Email.rst new file mode 100644 index 000000000000..f4b01500ad60 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Email.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Email** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks if a value has a correct e-mail format + +.. code-block:: php + + add('email', new EmailValidator(array( + 'message' => 'The e-mail is not valid' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_ExclusionIn.rst b/id/api/Phalcon_Validation_Validator_ExclusionIn.rst new file mode 100644 index 000000000000..32758c1e416d --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_ExclusionIn.rst @@ -0,0 +1,66 @@ +Class **Phalcon\\Validation\\Validator\\ExclusionIn** +===================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check if a value is not included into a list of values + +.. code-block:: php + + add('status', new ExclusionIn(array( + 'message' => 'The status must not be A or B', + 'domain' => array('A', 'B') + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_File.rst b/id/api/Phalcon_Validation_Validator_File.rst new file mode 100644 index 000000000000..9ef1783ab370 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_File.rst @@ -0,0 +1,70 @@ +Class **Phalcon\\Validation\\Validator\\File** +============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks if a value has a correct file + +.. code-block:: php + + add('file', new FileValidator(array( + 'maxSize' => '2M', + 'messageSize' => ':field exceeds the max filesize (:max)', + 'allowedTypes' => array('image/jpeg', 'image/png'), + 'messageType' => 'Allowed file types are :types', + 'maxResolution' => '800x600', + 'messageMaxResolution' => 'Max resolution of :field is :max' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Identical.rst b/id/api/Phalcon_Validation_Validator_Identical.rst new file mode 100644 index 000000000000..2e9c0452af4d --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Identical.rst @@ -0,0 +1,66 @@ +Class **Phalcon\\Validation\\Validator\\Identical** +=================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks if a value is identical to other + +.. code-block:: php + + add('terms', new Identical(array( + 'accepted' => 'yes', + 'message' => 'Terms and conditions must be accepted' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_InclusionIn.rst b/id/api/Phalcon_Validation_Validator_InclusionIn.rst new file mode 100644 index 000000000000..02e2f311514c --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_InclusionIn.rst @@ -0,0 +1,66 @@ +Class **Phalcon\\Validation\\Validator\\InclusionIn** +===================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check if a value is included into a list of values + +.. code-block:: php + + add('status', new InclusionIn(array( + 'message' => 'The status must be A or B', + 'domain' => array('A', 'B') + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Numericality.rst b/id/api/Phalcon_Validation_Validator_Numericality.rst new file mode 100644 index 000000000000..8aa328be9212 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Numericality.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Numericality** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check for a valid numeric value + +.. code-block:: php + + add('price', new Numericality(array( + 'message' => ':field is not numeric' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_PresenceOf.rst b/id/api/Phalcon_Validation_Validator_PresenceOf.rst new file mode 100644 index 000000000000..a2f7f100ef16 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_PresenceOf.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\PresenceOf** +==================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Validates that a value is not null or empty string + +.. code-block:: php + + add('name', new PresenceOf(array( + 'message' => 'The name is required' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Regex.rst b/id/api/Phalcon_Validation_Validator_Regex.rst new file mode 100644 index 000000000000..85783a6c9dfb --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Regex.rst @@ -0,0 +1,66 @@ +Class **Phalcon\\Validation\\Validator\\Regex** +=============================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Allows validate if the value of a field matches a regular expression + +.. code-block:: php + + add('created_at', new RegexValidator(array( + 'pattern' => '/^[0-9]{4}[-\/](0[1-9]|1[12])[-\/](0[1-9]|[12][0-9]|3[01])$/', + 'message' => 'The creation date is invalid' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_StringLength.rst b/id/api/Phalcon_Validation_Validator_StringLength.rst new file mode 100644 index 000000000000..8be6dbd227f6 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_StringLength.rst @@ -0,0 +1,68 @@ +Class **Phalcon\\Validation\\Validator\\StringLength** +====================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Validates that a string has the specified maximum and minimum constraints The test is passed if for a string's length L, min<=L<=max, i.e. L must be at least min, and at most max. + +.. code-block:: php + + add('name_last', new StringLength(array( + 'max' => 50, + 'min' => 2, + 'messageMaximum' => 'We don\'t like really long names', + 'messageMinimum' => 'We want more than just their initials' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Uniqueness.rst b/id/api/Phalcon_Validation_Validator_Uniqueness.rst new file mode 100644 index 000000000000..c5c3209d60ac --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Uniqueness.rst @@ -0,0 +1,77 @@ +Class **Phalcon\\Validation\\Validator\\Uniqueness** +==================================================== + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Check that a field is unique in the related table + +.. code-block:: php + + add('username', new UniquenessValidator(array( + 'model' => 'Users', + 'message' => ':field must be unique' + ))); + + Different attribute from the field + +.. code-block:: php + + add('username', new UniquenessValidator(array( + 'model' => 'Users', + 'attribute' => 'nick' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Validation_Validator_Url.rst b/id/api/Phalcon_Validation_Validator_Url.rst new file mode 100644 index 000000000000..9a8fc2440068 --- /dev/null +++ b/id/api/Phalcon_Validation_Validator_Url.rst @@ -0,0 +1,65 @@ +Class **Phalcon\\Validation\\Validator\\Url** +============================================= + +*extends* abstract class :doc:`Phalcon\\Validation\\Validator ` + +*implements* :doc:`Phalcon\\Validation\\ValidatorInterface ` + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +Checks if a value has a url format + +.. code-block:: php + + add('url', new UrlValidator(array( + 'message' => ':field must be a url' + ))); + + + +Methods +------- + +public **validate** (:doc:`Phalcon\\Validation ` $validation, *unknown* $field) + +Executes the validation + + + +public **__construct** ([*unknown* $options]) inherited from Phalcon\\Validation\\Validator + +Phalcon\\Validation\\Validator constructor + + + +public **isSetOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **hasOption** (*unknown* $key) inherited from Phalcon\\Validation\\Validator + +Checks if an option is defined + + + +public **getOption** (*unknown* $key, [*unknown* $defaultValue]) inherited from Phalcon\\Validation\\Validator + +Returns an option in the validator's options Returns null if the option hasn't set + + + +public **setOption** (*unknown* $key, *unknown* $value) inherited from Phalcon\\Validation\\Validator + +Sets an option in the validator + + + diff --git a/id/api/Phalcon_Version.rst b/id/api/Phalcon_Version.rst new file mode 100644 index 000000000000..15a5b41983cc --- /dev/null +++ b/id/api/Phalcon_Version.rst @@ -0,0 +1,78 @@ +Class **Phalcon\\Version** +========================== + +.. role:: raw-html(raw) + :format: html + +:raw-html:`Source on GitHub` + +This class allows to get the installed version of the framework + + +Constants +--------- + +*integer* **VERSION_MAJOR** + +*integer* **VERSION_MEDIUM** + +*integer* **VERSION_MINOR** + +*integer* **VERSION_SPECIAL** + +*integer* **VERSION_SPECIAL_NUMBER** + +Methods +------- + +protected static **_getVersion** () + +Area where the version number is set. The format is as follows: ABBCCDE A - Major version B - Med version (two digits) C - Min version (two digits) D - Special release: 1 = Alpha, 2 = Beta, 3 = RC, 4 = Stable E - Special release version i.e. RC1, Beta2 etc. + + + +final protected static **_getSpecial** (*unknown* $special) + +Translates a number to a special release If Special release = 1 this function will return ALPHA + + + +public static **get** () + +Returns the active version (string) + +.. code-block:: php + + v documentation". +#html_title = "v documentation" + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = 'en/_static/favicon.ico' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['../en/_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +html_domain_indices = True + +# If false, no index is generated. +html_use_index = True + +# If true, the index is split into individual pages for each letter. +html_split_index = True + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'PhalconDocumentationdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'PhalconDocumentation.tex', 'Phalcon PHP Framework Documentation', + 'Phalcon Team', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'phalcondocumentation', 'Phalcon Framework Documentation', + ['Phalcon Team'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------------ + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'PhalconDocumentation', 'Phalcon Framework Documentation', + 'Phalcon Team', 'PhalconDocumentation', 'Phalcon is a web framework delivered as a C extension providing high performance and lower resource consumption.', 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' diff --git a/id/index.rst b/id/index.rst new file mode 100755 index 000000000000..4a86c776dfb8 --- /dev/null +++ b/id/index.rst @@ -0,0 +1,87 @@ +Selamat Datang! +=============== + +Selamat datang di Phalcon framework. Misi kami adalah memberimu tool canggih +untuk mengembangkan website dan aplikasi web yang lebih cepat dengan PHP. + +Apa itu Phalcon? +---------------- + +Phalcon adalah framework PHP full stack open source, ditulis sebagai ekstensi C, dioptimasi untuk performa tinggi. +Anda tidak perlu belajar atau menggunakan bahasa C, karena fungsionalitasnya disediakan sebagai kelas PHP siap untuk Anda gunakan. +Phalcon juga loose-coupled, memungkinkan Anda menggunakan objects sebagai komponen perekat sesuai kebutuhan aplikasi Anda. + +Phalcon tidak hanya tentang performa, tujuan kami adalah membuatnya kokoh, kaya fitur dan mudah digunakan! + +Daftar Isi +---------- + +.. toctree:: + :maxdepth: 3 + + reference/install + reference/tutorial + reference/tutorial-invo + reference/tutorial-invo-2 + reference/tutorial-invo-3 + reference/tutorial-invo-4 + reference/tutorial-vokuro + reference/tutorial-rest + reference/samples + reference/di + reference/mvc + reference/controllers + reference/models + reference/models-metadata + reference/model-transactions + reference/phql + reference/models-cache + reference/odm + reference/views + reference/tags + reference/assets + reference/volt + reference/applications + reference/routing + reference/dispatching + reference/micro + reference/namespaces + reference/events + reference/request + reference/response + reference/cookies + reference/url + reference/flash + reference/session + reference/filter + reference/escaper + reference/validation + reference/forms + reference/config + reference/pagination + reference/cache + reference/security + reference/crypt + reference/acl + reference/translate + reference/loader + reference/logging + reference/annotations + reference/cli + reference/queue + reference/db + reference/intl + reference/migrations + reference/debug + reference/tools + reference/whats-next + reference/unit-testing + api/index + reference/license + +Format lain +----------- + +* `PDF `_ +* `HTML in one Zip `_ +* `ePub `_ diff --git a/id/index.rst~ b/id/index.rst~ new file mode 100755 index 000000000000..c62eee70b993 --- /dev/null +++ b/id/index.rst~ @@ -0,0 +1,87 @@ +Selamat Datang! +=============== + +Selamat datang di Phalcon framework. Misi kami adalah memberimu tool canggih +untuk mengembangkan website dan aplikasi web yang lebih cepat dengan PHP. + +Apa itu Phalcon? +---------------- + +Phalcon adalah framework PHP full stack open source, ditulis sebagai ekstensi C, dioptimasi untuk performa tinggi. +Anda tidak perlu belajar atau menggunakan bahasa C, karena fungsionalitasnya disediakan sebagai kelas PHP siap untuk Anda gunakan. +Phalcon juga loose-coupled, memungkinkan Anda menggunakan objects sebagai komponen perekat sesuai kebutuhan aplikasi Anda. + +Phalcon tidak hanya tentang performa, tujuan kami adalah membuatnya kokoh, kaya fitur dan mudah digunakan! + +Daftar Isi +---------- + +.. toctree:: + :maxdepth: 3 + + reference/install + reference/tutorial + reference/tutorial-invo + reference/tutorial-invo-2 + reference/tutorial-invo-3 + reference/tutorial-invo-4 + reference/tutorial-vokuro + reference/tutorial-rest + reference/samples + reference/di + reference/mvc + reference/controllers + reference/models + reference/models-metadata + reference/model-transactions + reference/phql + reference/models-cache + reference/odm + reference/views + reference/tags + reference/assets + reference/volt + reference/applications + reference/routing + reference/dispatching + reference/micro + reference/namespaces + reference/events + reference/request + reference/response + reference/cookies + reference/url + reference/flash + reference/session + reference/filter + reference/escaper + reference/validation + reference/forms + reference/config + reference/pagination + reference/cache + reference/security + reference/crypt + reference/acl + reference/translate + reference/loader + reference/logging + reference/annotations + reference/cli + reference/queue + reference/db + reference/intl + reference/migrations + reference/debug + reference/tools + reference/whats-next + reference/unit-testing + api/index + reference/license + +Other formats +------------- + +* `PDF `_ +* `HTML in one Zip `_ +* `ePub `_ diff --git a/id/make.bat b/id/make.bat new file mode 100755 index 000000000000..36563b43711c --- /dev/null +++ b/id/make.bat @@ -0,0 +1,190 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\PhalconDocumentation.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PhalconDocumentation.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +:end diff --git a/id/reference/acl.rst b/id/reference/acl.rst new file mode 100755 index 000000000000..ada7cd165807 --- /dev/null +++ b/id/reference/acl.rst @@ -0,0 +1,363 @@ +Access Control Lists (ACL) +========================== + +:doc:`Phalcon\\Acl <../api/Phalcon_Acl>` menghadirkan pengelolaan ACL yang mudah termasuk izin yang melekat padanya. `Access Control Lists`_ (ACL) memungkinkan sebuah aplikasi mengendalikan akses ke area aplikasi dan objek di dalamnya melalui request. Anda disarankan membaca lebih jauh tentang metodologi ACL agar familiar dengan konsepnya. + +Singkatnya, ACL memiliki role dan resource. Resource adalah objek yang mematuhi izin yang didefinisikan terhadapnya oleh ACL. Role adalah objek yang meminta akses ke resource dan dapat diberi atau ditolak oleh mekanisme ACL. + +Menciptakan sebuah ACL +---------------------- +Komponen ini dirancang awalnya bekerja di memori. Hal ini memberikan kemudahan pakai dan kecepatan akses ke semua aspek di daftar. Konstruktor :doc:`Phalcon\\Acl <../api/Phalcon_Acl>` parameter pertama mengharapkan sebuah adapter yang digunakan untuk mengambil informasi terkait control list. Contoh menggunakan adapter memori adalah sebagai berikut: + +.. code-block:: php + + ` mengizinkan akses ke aksi pada resource yang belum didefinisi. Untuk meningkatkan level keamanan access list, kita dapat mendefinisikan level "deny" sebagai level akses default. + +.. code-block:: php + + setDefaultAction(Phalcon\Acl::DENY); + +Menambahkan Role ke ACL +----------------------- +Sebuah role adalah objek yang bisa atau tidak bisa mengakses resource tertentu dalam access list. Sebagai contoh, kita akan mendefinisikan role sebagai sebuah grup orang dalam sebuah organisasi. Kelas :doc:`Phalcon\\Acl\\Role <../api/Phalcon_Acl_Role>` tersedia untuk menciptakan role dengan cara yang lebih terstruktur. Mari kita tambahkan beberapa role ke dalam list yang baru kita ciptakan: + +.. code-block:: php + + addRole($roleGuests); + + // Tambahkan "Designers" role ke ACL tanpa menggunakan Phalcon\Acl\Role + $acl->addRole("Designers"); + +Seperti yang bisa Anda lihat, role didefinisi langsung tanpa menggunakan instance. + +Menambah Resource +----------------- +Resource adalah objeck-objek yang aksesnya terkontrol. Normalnya dalam aplikasi MVC resource mengacu pada kontroler. Meski tidak wajib, kelas :doc:`Phalcon\\Acl\\Resource <../api/Phalcon_Acl_Resource>` dapat digunakan untuk mendefinisikan resource. Hal penting adalah menambahkan aksi atau operasi terkait ke resource sehingga ACL dapat mengerti apa yang harus dikendalikan. + +.. code-block:: php + + addResource($customersResource, "search"); + $acl->addResource($customersResource, array("create", "update")); + +Menentukan Kontrol Akses +------------------------ +Sekarang kita punya role dan resource, saatnya untuk mendefinisikan ACL (yaitu role yang dapat mengakses resource). Bagian ini sangat penting terutama menentukan default level akses "allow" atau "deny". + +.. code-block:: php + + allow("Guests", "Customers", "search"); + $acl->allow("Guests", "Customers", "create"); + $acl->deny("Guests", "Customers", "update"); + +Metode :code:`allow()` memberikan role tersebut akses ke resource tertentu. Metode :code:`deny()` melakukan sebaliknya. + +Meminta ACL +----------- +Setelah daftar sudah terdefinisi. Kita dapat bertanya untuk menguji apakah sebuah role punya izin atau tidak. + +.. code-block:: php + + isAllowed("Guests", "Customers", "edit"); // Mengembalikan 0 + $acl->isAllowed("Guests", "Customers", "search"); // Mengembalikan 1 + $acl->isAllowed("Guests", "Customers", "create"); // Mengembalikan 1 + +Akses berbasis Fungsi +--------------------- +Anda dapat juga menambahkan parameter ke-4 berupa fungsi kustom yang mengembalikan nilai boolean. Fungsi tersebut akan dipanggil ketika menggunakan metode :code:`isAllowed()`. Anda dapat melewatkan parameter sebagai array asosiatif ke metode :code:`isAllowed()` sebagai argumen ke-4 dimana key adalah nama parameter difungsi yang kita definisi. + +.. code-block:: php + + allow("Guests", "Customers", "search",function($a){ + return $a % 2 == 0; + }); + + // Uji apakah role punya akses ke operasi menggunakan fungsi kustom + $acl->isAllowed("Guests","Customers","search",['a'=>4]); // Mengembalikan true + $acl->isAllowed("Guests","Customers","search",['a'=>3]); // Mengembalikan false + +Jika anda tidak menyediakan parameter di metode :code:`isAllowed()` maka perilaku defaultnya adalah :code:`Acl::ALLOW`. Anda dapat mengubahnya dengan menggunakan :code:`setNoArgumentsDefaultAction()`. + +.. code-block:: php + + allow("Guests", "Customers", "search",function($a){ + return $a % 2 == 0; + }); + + // Uji apakah role punya akses ke operasi menggunakan fungsi kustom + $acl->isAllowed("Guests","Customers","search"); // Mengembalikan true + // Ubah aksi default tanpa argumen + $acl->setNoArgumentsDefaultAction(Acl::DENY); + $acl->isAllowed("Guests","Customers","search"); // Mengembalikan false + +Objek sebagai nama role dan nama resource +----------------------------------------- +Anda dapat melewatkan objek sebagai :code:`roleName` and :code:`resourceName`. Kelas anda harus membuat implementasi :doc:`Phalcon\\Acl\\RoleAware <../api/Phalcon_Acl_RoleAware>` untuk :code:`roleName` dan :doc:`Phalcon\\Acl\\ResourceAware <../api/Phalcon_Acl_ResourceAware>` untuk :code:`resourceName`. + +Kelas :code:`UserRole` kita + +.. code-block:: php + + id=$id; + $this->roleName=$roleName; + } + + public function getId() + { + return $this->id; + } + + // Implementasi fungsi dari RoleAware Interface + public function getRoleName() + { + return $this->roleName; + } + } + +dan kelas :code:`ModelResource` + +.. code-block:: php + + id=$id; + $this->resourceName=$resourceName; + $this->userId=$userId; + } + + public function getId() + { + return $this->id; + } + + public function getUserId() + { + return $this->userId; + } + + // Implementasi fungsi ResourceAware Interface + public function getResourceName() + { + return $this->resourceName; + } + } + +Selanjutnya anda dapat menggunakannya dalam metode :code:`isAllowed()`. + +.. code-block:: php + + allow("Guests", "Customers", "search"); + $acl->allow("Guests", "Customers", "create"); + $acl->deny("Guests", "Customers", "update"); + + // Buat objek yang menyediakan roleName dan resourceName + $customer = new ModelResource(1,"Customers",2); + $designer = new UserRole(1,"Designers"); + $guest = new UserRole(2,"Guests"); + $anotherGuest = new UserRole(3,"Guests"); + + // Uji apakah objek user memiliki akses ke operasi pada objek model + $acl->isAllowed($designer,$customer,"search") // Mengembalikan false + $acl->isAllowed($guest,$customer,"search") // Mengembalikan true + $acl->isAllowed($anotherGuest,$customer,"search") // Mengembalikan true + +Anda dapt mengakses objektersebut dalam fungsi kustom Anda di :code:`allow()` atau :code:`deny()`. Mereka otomatis akan diikat ke parameter menggunakan tipe dalam fungsi. + +.. code-block:: php + + allow("Guests", "Customers", "search",function(UserRole $user,ModelResource $model){ // Kelas User dan Model wajib + return $user->getId == $model->getUserId(); + }); + $acl->allow("Guests", "Customers", "create"); + $acl->deny("Guests", "Customers", "update"); + + // Buat objek yang menyediakan roleName and resourceName + $customer = new ModelResource(1,"Customers",2); + $designer = new UserRole(1,"Designers"); + $guest = new UserRole(2,"Guests"); + $anotherGuest = new UserRole(3,"Guests"); + + // Uji apakah objek user memiliki akses ke operasi pada objek model + $acl->isAllowed($designer,$customer,"search") // Mengembalikan false + $acl->isAllowed($guest,$customer,"search") // Mengembalikan true + $acl->isAllowed($anotherGuest,$customer,"search") // Mengembalikan false + +Anda dapat menambah parameter kustom ke fungsi dan melewatkan array asosiatif dalam metode :code:`isAllowed()`. Urutannya juga tidak penting. + +Penurunan Role +-------------- +Anda dapat membangun struktur role kompleks menggunakan inheritansi yang disediakan :doc:`Phalcon\\Acl\\Role <../api/Phalcon_Acl_Role>`. Role dapat diturunkan dari role lain, sehingga memungkinan akses ke himpunan resource yang lebih luas atau lebih sempit. Untuk menggunakan penurunan role, anda perlu melewatkan role turunan sebagai parameter kedua pada pemanggilan metode, ketika menambah role ke daftar. + +.. code-block:: php + + addRole($roleGuests); + + // Tambahkan role "Administrators" yang diturunkan dari "Guests" + $acl->addRole($roleAdmins, $roleGuests); + +Serialisasi Daftar ACL +---------------------- +Untuk meningkatkan performa instance :doc:`Phalcon\\Acl <../api/Phalcon_Acl>` dapat diserialisasi dan disimpan dalam APC, session, file text atau tabel database sehingga mereka dapat dimuat sesukanya tanpa perlu mendefinisi ulang seluruh daftar. Anda dapat melakukannya sebagai berikut: + +.. code-block:: php + + isAllowed("Guests", "Customers", "edit")) { + echo "Access granted!"; + } else { + echo "Access denied :("; + } + +Sangat disarankan menggunakan adapter Memory selama pengembangan dan menggunakan salah satu adapter lain diproduksi. + +Event ACL +--------- +:doc:`Phalcon\\Acl <../api/Phalcon_Acl>` dapat mengirim event ke :doc:`EventsManager ` jika ada. Event dipicu menggunakan tipe "acl". Beberapa event ketika mengembalikan nilai boolean false dapat menghentikan operasi yang aktif. Event berikut ini didukung: + ++-------------------+---------------------------------------------------------+---------------------+ +| Nama Event | Dipicu | Bisa stop operasi? | ++===================+=========================================================+=====================+ +| beforeCheckAccess | Dipicu sebelum menguji apakah role punya akses | Yes | ++-------------------+---------------------------------------------------------+---------------------+ +| afterCheckAccess | Dipicu sesudah menguji apakah role punya akses | No | ++-------------------+---------------------------------------------------------+---------------------+ + +Contoh berikut menunjukkan bagaimana memasang listener ke komponen ini: + +.. code-block:: php + + attach("acl", function ($event, $acl) { + if ($event->getType() == "beforeCheckAccess") { + echo $acl->getActiveRole(), + $acl->getActiveResource(), + $acl->getActiveAccess(); + } + }); + + $acl = new AclList(); + + // Setup $acl + // ... + + // Ikat eventsManager ke komponen ACL + $acl->setEventsManager($eventManagers); + +Implementasi adapter Anda sendiri +--------------------------------- +Interface :doc:`Phalcon\\Acl\\AdapterInterface <../api/Phalcon_Acl_AdapterInterface>` harus diimplementasi untuk menciptakan adapter ACL anda sendiri atau mengubah yang sudah ada. + +.. _Access Control Lists: http://en.wikipedia.org/wiki/Access_control_list diff --git a/id/reference/annotations.rst b/id/reference/annotations.rst new file mode 100644 index 000000000000..f5bb2da8b9d1 --- /dev/null +++ b/id/reference/annotations.rst @@ -0,0 +1,389 @@ +Parser Anotasi +============== + +Ini kali pertama sebuah komponen parser anotasi ditulis dalam C untuk dunia PHP. :code:`Phalcon\Annotations` adalah komponen umum yang menyediakan parsing dan caching anotasi dalam kelas PHP untuk digunakan dalam aplikasi. + +Anotasi dibaca dari docblocks dalam kelas, metode dan properti. Sebuah anotasi dapat ditempatkan di sembarang posisi dalam docblock: + +.. code-block:: php + + get('Example'); + + // Read the annotations in the class' docblock + $annotations = $reflector->getClassAnnotations(); + + // Traverse the annotations + foreach ($annotations as $annotation) { + + // Print the annotation name + echo $annotation->getName(), PHP_EOL; + + // Print the number of arguments + echo $annotation->numberArguments(), PHP_EOL; + + // Print the arguments + print_r($annotation->getArguments()); + } + +Proses pembacaan anotasi sangat cepat, namun, untuk alasan performa diarankan untuk menyimpan anotasi yang sudah diparsing menggunakan adapter. +Adapter menyimpan anotasi yang sudah diproses sehingga menghindari kebutuhan untuk melakukan parsing anotasi terus menerus. + +:doc:`Phalcon\\Annotations\\Adapter\\Memory <../api/Phalcon_Annotations_Adapter_Memory>` dgunakan untuk contoh di atas. Adapter ini hanya menyimpan anotasi selama request berjalan +dan untuk alasan ini, adapter ini hanya cocok untuk tahap pengembangan. Ada adapter lain untuk ditukar ketika aplikasi berada dalam tahap produksi. + +Jenis Anotasi +------------- +Anotasi dapat memiliki parameter atau tidak. Sebuah parameter dapat berupa nilai literal sederhana (string, angka, boolean, null), array, hashed list atau anotasi lain: + +.. code-block:: php + + attach('dispatch', new CacheEnablerPlugin()); + + $dispatcher = new MvcDispatcher(); + + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }; + +CacheEnablerPlugin adalah plugin yang menyadap tiap aksi yang dieksekusi dispatcher dan menghidupkan cache jika diperlukan: + +.. code-block:: php + + annotations->getMethod( + $dispatcher->getControllerClass(), + $dispatcher->getActiveMethod() + ); + + // Check if the method has an annotation 'Cache' + if ($annotations->has('Cache')) { + + // The method has the annotation 'Cache' + $annotation = $annotations->get('Cache'); + + // Get the lifetime + $lifetime = $annotation->getNamedParameter('lifetime'); + + $options = array('lifetime' => $lifetime); + + // Check if there is a user defined cache key + if ($annotation->hasNamedParameter('key')) { + $options['key'] = $annotation->getNamedParameter('key'); + } + + // Enable the cache for the current method + $this->view->cache($options); + } + } + } + +Kita dapat menggunakan anotasi dalam sebuah kontroller: + +.. code-block:: php + + view->article = Articles::find(); + } + + /** + * This is a comment + * + * @Cache(key="my-key", lifetime=86400) + */ + public function showAction($slug) + { + $this->view->article = Articles::findFirstByTitle($slug); + } + } + +Private/Public area dengan Anotasi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Anda dapat menggunakan anotasi untuk memberitahu ACL kontroller mana yang termasuk area adiminstratif: + +.. code-block:: php + + getControllerClass(); + + // Possible method name + $actionName = $dispatcher->getActiveMethod(); + + // Get annotations in the controller class + $annotations = $this->annotations->get($controllerName); + + // The controller is private? + if ($annotations->getClassAnnotations()->has('Private')) { + + // Check if the session variable is active? + if (!$this->session->get('auth')) { + + // The user is no logged redirect to login + $dispatcher->forward( + array( + 'controller' => 'session', + 'action' => 'login' + ) + ); + + return false; + } + } + + // Continue normally + return true; + } + } + +Memilih template untuk ditampilkan +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Di contoh ini kita akan menggunakan anotasi untuk memberi tahu :doc:`Phalcon\\Mvc\\View\\Simple ` template apa yang harus ditampilkan +ketika aksi telah dieksekusi: + +Adapter Anotasi +--------------- +Komponen ini menggunakan adapter untuk cache atau tidak anotasi yang terproses sehingga meningkatkan performa dan menyediakan fasilitas untuk pengembangan/pengujian: + ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| Name | Keterangan | API | ++============+======================================================================================================================================================================================================================================+==========================================================================================+ +| Memory | Anotasi ini dicache di moemori saja. Ketika request berakhir cache dibersihkan dan memuat ulang anotasi di tiap request. Adapter ini cocok untuk tahap pengembangan | :doc:`Phalcon\\Annotations\\Adapter\\Memory <../api/Phalcon_Annotations_Adapter_Memory>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| Files | Anotasi yang sudah diparsing dan diproses disimpan permanent di file PHP untuk menaikkan performa. Adapter ini harus digunakan bersama bytecode cache. | :doc:`Phalcon\\Annotations\\Adapter\\Files <../api/Phalcon_Annotations_Adapter_Files>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| APC | Anotasi yang sudah diparsing dan diproses disimpan permanent di APC cache untuk menaikkan performa. Ini adalah adapter yang lebih cepat | :doc:`Phalcon\\Annotations\\Adapter\\Apc <../api/Phalcon_Annotations_Adapter_Apc>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| XCache | Anotasi yang sudah diparsing dan diproses disimpan permanent di XCache cache untuk menaikkan performa. Ini adalah adapter yang lebih cepat | :doc:`Phalcon\\Annotations\\Adapter\\Xcache <../api/Phalcon_Annotations_Adapter_Xcache>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ + +Implementasi adapter Anda +^^^^^^^^^^^^^^^^^^^^^^^^^ +Interface :doc:`Phalcon\\Annotations\\AdapterInterface <../api/Phalcon_Annotations_AdapterInterface>` harus diimplementasi untuk bisa menciptakan adapter anotasi anda sendiri atau mengembangkan yang sudah ada. + +Sumber Luar +----------- +* `Tutorial: Creating a custom model's initializer with Annotations `_ diff --git a/id/reference/apache.rst b/id/reference/apache.rst new file mode 100644 index 000000000000..10684afc265c --- /dev/null +++ b/id/reference/apache.rst @@ -0,0 +1,117 @@ +Catatan Instalasi Apache +======================== + +Apache_ adalah web server popular dan terkenal yang tersedia di beragam platform. + +Konfigurasi Apache untuk Phalcon +-------------------------------- +Berikut ini adalah konfigurasi yang bisa anda gunakan untuk setup Apache dengan Phalcon. Catatan ini utamanya fokus pada konfigurasi modul mod_rewrite yang memungkinkan penggunaan URL yang ramah dan +:doc:`router component `. Aplikasi biasanya menggunakan struktur berikut: + +.. code-block:: php + + test/ + app/ + controllers/ + models/ + views/ + public/ + css/ + img/ + js/ + index.php + +Directory dalam Document Root utama +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Ini adalah kasus paling umum, aplikasi diinstall pada sembarang direktori dalam document root. +Pada kasus ini, kita menggunakan dua file .htaccess, yang pertama untuk menyembunyikan kode aplikasi dengan mengarahkan semua request ke document root aplikasi (public/). + +.. code-block:: apacheconf + + # test/.htaccess + + + RewriteEngine on + RewriteRule ^$ public/ [L] + RewriteRule ((?s).*) public/$1 [L] + + +File .htaccess kedua diletakkan di direktori public/ , file ini menulis ulang semua URI ke file public/index.php: + +.. code-block:: apacheconf + + # test/public/.htaccess + + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + + +Jika anda tidak ingin menggunakan file .htaccess anda dapat memindahkan konfigurasi ini ke file konfigurasi utama Apache: + +.. code-block:: apacheconf + + + + + RewriteEngine on + RewriteRule ^$ public/ [L] + RewriteRule ((?s).*) public/$1 [L] + + + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + + + + +Virtual Host +^^^^^^^^^^^^ +Konfigurasi kedua memungkinkan anda menginstall aplikasi Phalcon dalam sebuah virtual host: + +.. code-block:: apacheconf + + + + ServerAdmin admin@example.host + DocumentRoot "/var/vhosts/test/public" + DirectoryIndex index.php + ServerName example.host + ServerAlias www.example.host + + + Options All + AllowOverride All + Allow from all + + + + +.. _Apache: http://httpd.apache.org/ + +Atau jika Anda menggunakan Apache 2.4 atau diatasnya: + +.. code-block:: apacheconf + + + + ServerAdmin admin@example.host + DocumentRoot "/var/vhosts/test/public" + DirectoryIndex index.php + ServerName example.host + ServerAlias www.example.host + + + Options All + AllowOverride All + Require all granted + + + + +.. _Apache: http://httpd.apache.org/ diff --git a/id/reference/applications.rst b/id/reference/applications.rst new file mode 100644 index 000000000000..46a7bf7b5b4c --- /dev/null +++ b/id/reference/applications.rst @@ -0,0 +1,520 @@ +Aplikasi MVC +============ + +Semua kerja keras mengatur operasi dalam MVC di Phalcon normalnya dilakukan oleh +:doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>`. Komponen ini membungkus semua operasi kompleks +yang diperlukan dibelakang layar, menciptakan semua komponen yang diperlukan dan menyatukannnya dengan proyek, memungkinkan +pola MVC bekerja sesuai yang diinginkan. + +Aplikasi Modul Tunggal atau Jamak +--------------------------------- +Dengan komponen ini anda dapat menjalankan beragam tipe struktur MVC: + +Modul Tunggal +^^^^^^^^^^^^^ +Aplikasi MVC tunggal terdiri atas satu modul saja. Namespace dapat digunakan namun tidak wajib. +Aplikasi seperti ini memiliki struktur file sebagai berikut: + +.. code-block:: php + + single/ + app/ + controllers/ + models/ + views/ + public/ + css/ + img/ + js/ + +Jika namespace tidak digunakan, file bootstrap berikut dapat digunakan untuk mengatur alir MVC: + +.. code-block:: php + + registerDirs( + array( + '../apps/controllers/', + '../apps/models/' + ) + )->register(); + + $di = new FactoryDefault(); + + // Daftarkan komponen view + $di->set('view', function () { + $view = new View(); + $view->setViewsDir('../apps/views/'); + return $view; + }); + + try { + + $application = new Application($di); + + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo $e->getMessage(); + } + +Jika namespace digunakan, bootstrap berikut bisa dipakai: + +.. code-block:: php + + registerNamespaces( + array( + 'Single\Controllers' => '../apps/controllers/', + 'Single\Models' => '../apps/models/', + ) + )->register(); + + $di = new FactoryDefault(); + + // Daftarkan naespace default untuk dispatcher bagi controller + $di->set('dispatcher', function () { + $dispatcher = new Dispatcher(); + $dispatcher->setDefaultNamespace('Single\Controllers'); + return $dispatcher; + }); + + // Register the view component + $di->set('view', function () { + $view = new View(); + $view->setViewsDir('../apps/views/'); + return $view; + }); + + try { + + $application = new Application($di); + + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo $e->getMessage(); + } + +Modul Jamak +^^^^^^^^^^^ +Sebuah aplikasi dengan module lebih dari satu, menggunakan document root sama untuk lebih dari satu modul. Di kasus ini, struktur file berikut dapat dipakai: + +.. code-block:: php + + multiple/ + apps/ + frontend/ + controllers/ + models/ + views/ + Module.php + backend/ + controllers/ + models/ + views/ + Module.php + public/ + css/ + img/ + js/ + +Tiap direktori dalam apps/ punya struktur MVC sendiri. File Module.php disediakan untuk mengkonfigurasi setting spesifik tiap modul seperti autoloader atau custom services: + +.. code-block:: php + + registerNamespaces( + array( + 'Multiple\Backend\Controllers' => '../apps/backend/controllers/', + 'Multiple\Backend\Models' => '../apps/backend/models/', + ) + ); + + $loader->register(); + } + + /** + * Register specific services for the module + */ + public function registerServices(DiInterface $di) + { + // Registering a dispatcher + $di->set('dispatcher', function () { + $dispatcher = new Dispatcher(); + $dispatcher->setDefaultNamespace("Multiple\Backend\Controllers"); + return $dispatcher; + }); + + // Registering the view component + $di->set('view', function () { + $view = new View(); + $view->setViewsDir('../apps/backend/views/'); + return $view; + }); + } + } + +Sebuah file bootstrap khusus diperlukan untuk memuat arsitektur MVC bermodul jamak: + +.. code-block:: php + + set('router', function () { + + $router = new Router(); + + $router->setDefaultModule("frontend"); + + $router->add( + "/login", + array( + 'module' => 'backend', + 'controller' => 'login', + 'action' => 'index' + ) + ); + + $router->add( + "/admin/products/:action", + array( + 'module' => 'backend', + 'controller' => 'products', + 'action' => 1 + ) + ); + + $router->add( + "/products/:action", + array( + 'controller' => 'products', + 'action' => 1 + ) + ); + + return $router; + }); + + try { + + // Create an application + $application = new Application($di); + + // Register the installed modules + $application->registerModules( + array( + 'frontend' => array( + 'className' => 'Multiple\Frontend\Module', + 'path' => '../apps/frontend/Module.php', + ), + 'backend' => array( + 'className' => 'Multiple\Backend\Module', + 'path' => '../apps/backend/Module.php', + ) + ) + ); + + // Handle the request + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo $e->getMessage(); + } + +Jika anda ingin mengelola konfigurasi modul dalam file bootstrap anda dapat menggunakan fungsi anonim untuk mendaftarkan modul: + +.. code-block:: php + + registerModules( + array( + 'frontend' => function ($di) use ($view) { + $di->setShared('view', function () use ($view) { + $view->setViewsDir('../apps/frontend/views/'); + return $view; + }); + }, + 'backend' => function ($di) use ($view) { + $di->setShared('view', function () use ($view) { + $view->setViewsDir('../apps/backend/views/'); + return $view; + }); + } + ) + ); + +Ketika :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` memiliki module yang terdaftar, penting untuk +tiap route yang cocok mengembalikan module yang sah. Tiap modul yang terdaftar memiliki sebuah kelas terkait yang +menyediakan fungsi-fungsi untuk menyiapkan modul. Tiap definisi modul kelas wajib mengimplementasi dua metode: +registerAutoloaders() dan registerServices(), yang akan dipanggil oleh +:doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` tergantung modul mana yang dijalankan. + +Memahami perilaku default +------------------------- +Jika anda mengikuti :doc:`tutorial ` atau membuat kode menggunakan :doc:`Phalcon Devtools `, +anda mungkin mengenali file bootstrap berikut: + +.. code-block:: php + + handle(); + + $response->send(); + + } catch (\Exception $e) { + echo "Exception: ", $e->getMessage(); + } + +Inti semua kerja kontroller terjadi ketika handle() dipanggil: + +.. code-block:: php + + handle(); + +Bootstrap manual +---------------- +Jika anda ingin menggunakan :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>`, kode di atas dapat diubah seperti berikut: + +.. code-block:: php + + handle(); + + $view = $di['view']; + + $dispatcher = $di['dispatcher']; + + // Pass the processed router parameters to the dispatcher + $dispatcher->setControllerName($router->getControllerName()); + $dispatcher->setActionName($router->getActionName()); + $dispatcher->setParams($router->getParams()); + + // Start the view + $view->start(); + + // Dispatch the request + $dispatcher->dispatch(); + + // Render the related views + $view->render( + $dispatcher->getControllerName(), + $dispatcher->getActionName(), + $dispatcher->getParams() + ); + + // Finish the view + $view->finish(); + + $response = $di['response']; + + // Pass the output of the view to the response + $response->setContent($view->getContent()); + + // Send the response headers + $response->sendHeaders(); + + // Print the response + echo $response->getContent(); + +Pengganti :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` berikut tidak memiliki komponen view membuatnya cocok untuk Rest API: + +.. code-block:: php + + handle(); + + $dispatcher = $di['dispatcher']; + + // Pass the processed router parameters to the dispatcher + $dispatcher->setControllerName($router->getControllerName()); + $dispatcher->setActionName($router->getActionName()); + $dispatcher->setParams($router->getParams()); + + // Dispatch the request + $dispatcher->dispatch(); + + // Get the returned value by the last executed action + $response = $dispatcher->getReturnedValue(); + + // Check if the action returned is a 'response' object + if ($response instanceof Phalcon\Http\ResponseInterface) { + + // Send the response + $response->send(); + } + +Alternatif lain adalah menangkap eksepsi yang dihasilkan oleh dispatcher dan mengarahkan ke aksi lain: + +.. code-block:: php + + handle(); + + $dispatcher = $di['dispatcher']; + + // Lewatkan parameter router yang telah diproses ke dispatcher + $dispatcher->setControllerName($router->getControllerName()); + $dispatcher->setActionName($router->getActionName()); + $dispatcher->setParams($router->getParams()); + + try { + + // Kirim request + $dispatcher->dispatch(); + + } catch (Exception $e) { + + // An exception has occurred, dispatch some controller/action aimed for that + + // Lewatkan parameter router yang telah diproses ke dispatcher + $dispatcher->setControllerName('errors'); + $dispatcher->setActionName('action503'); + + // Kirim request + $dispatcher->dispatch(); + } + + // Get the returned value by the last executed action + $response = $dispatcher->getReturnedValue(); + + // Check if the action returned is a 'response' object + if ($response instanceof Phalcon\Http\ResponseInterface) { + + // Send the response + $response->send(); + } + +Meski implementasi di atas lebih banyak kodenya dibanding menggunakan :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>`, +ia menawarkan alternatif bootstraping aplikasi anda. Tergantung kebutuhan anda, anda mungkin ingin memiliki kendali penuh +terhadap apa yang harus diciptakan dan yang tidak, atau mengganti komponen tertentu dengan milik anda sendiri untuk memperluas fungsionalitas defaultnya. + +Event Aplikasi +-------------- +:doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` mampu mengeirim pesan kejadian ke :doc:`EventsManager ` +(jika ada). Event dipicu menggunakan tipe "application". Event berikut didukung: + ++---------------------+--------------------------------------------------------------+ +| Nama Event | Dipicu | ++=====================+==============================================================+ +| boot | Dieksekusi ketika aplikasi pertama kali menjalankan request | ++---------------------+--------------------------------------------------------------+ +| beforeStartModule | Sebelum inisialisasi modul, hanya bila modul terdaftar | ++---------------------+--------------------------------------------------------------+ +| afterStartModule | Setelah inisialisasi modul, hanya bila modul terdaftar | ++---------------------+--------------------------------------------------------------+ +| beforeHandleRequest | Sebelum eksekusi loop dispatch | ++---------------------+--------------------------------------------------------------+ +| afterHandleRequest | Setelah eksekusi loop dispatch | ++---------------------+--------------------------------------------------------------+ + +Contoh berikut menunjukkan bagaimana memasang listener ke komponen ini: + +.. code-block:: php + + setEventsManager($eventsManager); + + $eventsManager->attach( + "application", + function ($event, $application) { + // ... + } + ); + +Sumber Luar +----------- +* `MVC examples on Github `_ diff --git a/id/reference/assets.rst b/id/reference/assets.rst new file mode 100644 index 000000000000..3abce3451a88 --- /dev/null +++ b/id/reference/assets.rst @@ -0,0 +1,421 @@ +Assets Management +================= + +:code:`Phalcon\Assets` is a component that allows you to manage static resources +such as CSS stylesheets or JavaScript libraries in a web application. + +:doc:`Phalcon\\Assets\\Manager <../api/Phalcon_Assets_Manager>` is available in the services +container, so you can add resources from any part of the application where the container +is available. + +Adding Resources +---------------- +Assets supports two built-in resources: CSS and JavaScripts. You can create other +resources if you need. The assets manager internally stores two default collections +of resources - one for JavaScript and another for CSS. + +You can easily add resources to these collections like follows: + +.. code-block:: php + + assets + ->addCss('css/style.css') + ->addCss('css/index.css'); + + // And some local JavaScript resources + $this->assets + ->addJs('js/jquery.js') + ->addJs('js/bootstrap.min.js'); + } + } + +Then in a view, these resources can be printed: + +.. code-block:: html+php + + + + Some amazing website + assets->outputCss() ?> + + + + + + assets->outputJs() ?> + + + +Volt syntax: + +.. code-block:: html+jinja + + + + Some amazing website + {{ assets.outputCss() }} + + + + + + {{ assets.outputJs() }} + + + +For better pageload performance, it is recommended to place JavaScript at the end of the HTML instead of in the :code:``. + +Local/Remote resources +---------------------- +Local resources are those who are provided by the same application and they're located in the document root +of the application. URLs in local resources are generated by the 'url' service, usually +:doc:`Phalcon\\Mvc\\Url <../api/Phalcon_Mvc_Url>`. + +Remote resources are those such as common libraries like jQuery, Bootstrap, etc. that are provided by a CDN. + +The second parameter of :code:`addCss()` and :code:`addJs()` says whether the resource is local or not (:code:`true` is local, :code:`false` is remote). By default, the assets manager will assume the resource is local: + +.. code-block:: php + + assets + ->addCss('//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css', false) + ->addCss('css/style.css', true) + ->addCss('css/extra.css'); + } + +Collections +----------- +Collections group resources of the same type. The assets manager implicitly creates two collections: :code:`css` and :code:`js`. +You can create additional collections to group specific resources to make it easier to place those resources in the views: + +.. code-block:: php + + assets + ->collection('header') + ->addJs('js/jquery.js') + ->addJs('js/bootstrap.min.js'); + + // Javascripts in the footer + $this->assets + ->collection('footer') + ->addJs('js/jquery.js') + ->addJs('js/bootstrap.min.js'); + +Then in the views: + +.. code-block:: html+php + + + + Some amazing website + assets->outputJs('header') ?> + + + + + + assets->outputJs('footer') ?> + + + +Volt syntax: + +.. code-block:: html+jinja + + + + Some amazing website + {{ assets.outputCss('header') }} + + + + + + {{ assets.outputJs('footer') }} + + + +URL Prefixes +------------ +Collections can be URL-prefixed, this enables you to easily change from one server to another at any moment: + +.. code-block:: php + + assets->collection('footer'); + + if ($config->environment == 'development') { + $scripts->setPrefix('/'); + } else { + $scripts->setPrefix('http:://cdn.example.com/'); + } + + $scripts->addJs('js/jquery.js') + ->addJs('js/bootstrap.min.js'); + +A chainable syntax is available too: + +.. code-block:: php + + collection('header') + ->setPrefix('http://cdn.example.com/') + ->setLocal(false) + ->addJs('js/jquery.js') + ->addJs('js/bootstrap.min.js'); + +Minification/Filtering +---------------------- +:code:`Phalcon\Assets` provides built-in minification of JavaScript and CSS resources. You can create a collection of +resources instructing the Assets Manager which ones must be filtered and which ones must be left as they are. +In addition to the above, Jsmin by Douglas Crockford is part of the core extension offering minification of JavaScript files +for maximum performance. In the CSS land, CSSMin by Ryan Day is also available to minify CSS files: + +The following example shows how to minify a collection of resources: + +.. code-block:: php + + collection('jsFooter') + + // The name of the final output + ->setTargetPath('final.js') + + // The script tag is generated with this URI + ->setTargetUri('production/final.js') + + // This is a remote resource that does not need filtering + ->addJs('code.jquery.com/jquery-1.10.0.min.js', false, false) + + // These are local resources that must be filtered + ->addJs('common-functions.js') + ->addJs('page-functions.js') + + // Join all the resources in a single file + ->join(true) + + // Use the built-in Jsmin filter + ->addFilter(new Phalcon\Assets\Filters\Jsmin()) + + // Use a custom filter + ->addFilter(new MyApp\Assets\Filters\LicenseStamper()); + +A collection can contain JavaScript or CSS +resources but not both. Some resources may be remote, that is, they're obtained by HTTP from a remote source +for further filtering. It is recommended to convert the external resources to local for better performance. + +As seen above, the :code:`addJs()` method is used to add resources to the collection, the second parameter indicates +whether the resource is external or not and the third parameter indicates whether the resource should +be filtered or left as is: + +.. code-block:: php + + collection('jsFooter'); + + // This a remote resource that does not need filtering + $js->addJs('code.jquery.com/jquery-1.10.0.min.js', false, false); + + // These are local resources that must be filtered + $js->addJs('common-functions.js'); + $js->addJs('page-functions.js'); + +Filters are registered in the collection, multiple filters are allowed, content in resources are filtered +in the same order as filters were registered: + +.. code-block:: php + + addFilter(new Phalcon\Assets\Filters\Jsmin()); + + // Use a custom filter + $js->addFilter(new MyApp\Assets\Filters\LicenseStamper()); + +Note that both built-in and custom filters can be transparently applied to collections. +The last step is to decide if all the resources in the collection must be joined into a single file or serve each of them +individually. To tell the collection that all resources must be joined you can use the :code:`join()` method. + +If resources are going to be joined, we need also to define which file will be used to store the resources +and which URI will be used to show it. These settings are set up with :code:`setTargetPath()` and :code:`setTargetUri()`: + +.. code-block:: php + + join(true); + + // The name of the final file path + $js->setTargetPath('public/production/final.js'); + + // The script HTML tag is generated with this URI + $js->setTargetUri('production/final.js'); + +If resources are going to be joined, we need also to define which file will be used to store the resources +and which URI will be used to show it. These settings are set up with :code:`setTargetPath()` and :code:`setTargetUri()`. + +Built-In Filters +^^^^^^^^^^^^^^^^ +Phalcon provides 2 built-in filters to minify both JavaScript and CSS, their C-backend provide +the minimum overhead to perform this task: + ++---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ +| Filter | Description | ++=================================================================================+==============================================================================================================+ +| :doc:`Phalcon\\Assets\\Filters\\Jsmin <../api/Phalcon_Assets_Filters_Jsmin>` | Minifies JavaScript by removing unnecessary characters that are ignored by Javascript interpreters/compilers | ++---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ +| :doc:`Phalcon\\Assets\\Filters\\Cssmin <../api/Phalcon_Assets_Filters_Cssmin>` | Minifies CSS by removing unnecessary characters that are already ignored by browsers | ++---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ + +Custom Filters +^^^^^^^^^^^^^^ +In addition to the built-in filters, you can create your own filters. These can take advantage of existing +and more advanced tools like YUI_, Sass_, Closure_, etc.: + +.. code-block:: php + + _options = $options; + } + + /** + * Do the filtering + * + * @param string $contents + * @return string + */ + public function filter($contents) + { + // Write the string contents into a temporal file + file_put_contents('temp/my-temp-1.css', $contents); + + system( + $this->_options['java-bin'] . + ' -jar ' . + $this->_options['yui'] . + ' --type css '. + 'temp/my-temp-file-1.css ' . + $this->_options['extra-options'] . + ' -o temp/my-temp-file-2.css' + ); + + // Return the contents of file + return file_get_contents("temp/my-temp-file-2.css"); + } + } + +Usage: + +.. code-block:: php + + assets->get('head'); + + // Add/Enable the YUI compressor filter in the collection + $css->addFilter( + new CssYUICompressor( + array( + 'java-bin' => '/usr/local/bin/java', + 'yui' => '/some/path/yuicompressor-x.y.z.jar', + 'extra-options' => '--charset utf8' + ) + ) + ); + +In a previous example, we used a custom filter called :code:`LicenseStamper`: + +.. code-block:: php + + assets->collection('js') as $resource) { + echo Tag::javascriptInclude($resource->getPath()); + } + +.. _YUI: http://yui.github.io/yuicompressor/ +.. _Closure: https://developers.google.com/closure/compiler/?hl=fr +.. _Sass: http://sass-lang.com/ diff --git a/id/reference/built-in.rst b/id/reference/built-in.rst new file mode 100644 index 000000000000..92321ef2c1dc --- /dev/null +++ b/id/reference/built-in.rst @@ -0,0 +1,30 @@ +Using PHP Built-in webserver +============================ + +As of PHP 5.4.0, you can use PHP's on built-in_ web server for development. + +To start the server type: + +.. code-block:: bash + + php -S localhost:8000 -t /public + +If you want to rewrite the URIs to the index.php file use the following router file (.htrouter.php): + +.. code-block:: php + + ` class allowing faster access to frequently used or already processed data. +:doc:`Phalcon\\Cache ` is written in C, achieving higher performance and reducing the overhead when getting items from the backends. +This class uses an internal structure of frontend and backend components. Front-end components act as input sources or +interfaces, while backend components offer storage options to the class. + +When to implement cache? +------------------------ +Although this component is very fast, implementing it in cases that are not needed could lead to a loss of performance rather than gain. +We recommend you check this cases before using a cache: + +* You are making complex calculations that every time return the same result (changing infrequently) +* You are using a lot of helpers and the output generated is almost always the same +* You are accessing database data constantly and these data rarely change + +.. highlights:: + + *NOTE* Even after implementing the cache, you should check the hit ratio of your cache over a period of time. This can easily + be done, especially in the case of Memcache or Apc, with the relevant tools that the backends provide. + +Caching Behavior +---------------- +The caching process is divided into 2 parts: + +* **Frontend**: This part is responsible for checking if a key has expired and perform additional transformations to the data before storing and after retrieving them from the backend- +* **Backend**: This part is responsible for communicating, writing/reading the data required by the frontend. + +Caching Output Fragments +------------------------ +An output fragment is a piece of HTML or text that is cached as is and returned as is. The output is automatically captured +from the ob_* functions or the PHP output so that it can be saved in the cache. The following example demonstrates such usage. +It receives the output generated by PHP and stores it into a file. The contents of the file are refreshed every 172800 seconds (2 days). + +The implementation of this caching mechanism allows us to gain performance by not executing the helper :code:`Phalcon\Tag::linkTo()` +call whenever this piece of code is called. + +.. code-block:: php + + 172800 + ) + ); + + // Create the component that will cache from the "Output" to a "File" backend + // Set the cache file directory - it's important to keep the "/" at the end of + // the value for the folder + $cache = new BackFile( + $frontCache, + array( + "cacheDir" => "../app/cache/" + ) + ); + + // Get/Set the cache file to ../app/cache/my-cache.html + $content = $cache->start("my-cache.html"); + + // If $content is null then the content will be generated for the cache + if ($content === null) { + + // Print date and time + echo date("r"); + + // Generate a link to the sign-up action + echo Tag::linkTo( + array( + "user/signup", + "Sign Up", + "class" => "signup-button" + ) + ); + + // Store the output into the cache file + $cache->save(); + + } else { + + // Echo the cached output + echo $content; + } + +*NOTE* In the example above, our code remains the same, echoing output to the user as it has been doing before. Our cache component +transparently captures that output and stores it in the cache file (when the cache is generated) or it sends it back to the user +pre-compiled from a previous call, thus avoiding expensive operations. + +Caching Arbitrary Data +---------------------- +Caching just data is equally important for your application. Caching can reduce database load by reusing commonly used (but not updated) data, +thus speeding up your application. + +File Backend Example +^^^^^^^^^^^^^^^^^^^^ +One of the caching adapters is 'File'. The only key area for this adapter is the location of where the cache files will be stored. +This is controlled by the cacheDir option which *must* have a backslash at the end of it. + +.. code-block:: php + + 172800 + ) + ); + + // Create the component that will cache "Data" to a "File" backend + // Set the cache file directory - important to keep the "/" at the end of + // the value for the folder + $cache = new BackFile( + $frontCache, + array( + "cacheDir" => "../app/cache/" + ) + ); + + // Try to get cached records + $cacheKey = 'robots_order_id.cache'; + $robots = $cache->get($cacheKey); + if ($robots === null) { + + // $robots is null because of cache expiration or data does not exist + // Make the database call and populate the variable + $robots = Robots::find( + array( + "order" => "id" + ) + ); + + // Store it in the cache + $cache->save($cacheKey, $robots); + } + + // Use $robots :) + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + +Memcached Backend Example +^^^^^^^^^^^^^^^^^^^^^^^^^ +The above example changes slightly (especially in terms of configuration) when we are using a Memcached backend. + +.. code-block:: php + + 3600 + ) + ); + + // Create the component that will cache "Data" to a "Memcached" backend + // Memcached connection settings + $cache = new BackMemCached( + $frontCache, + array( + "servers" => array( + array( + "host" => "127.0.0.1", + "port" => "11211", + "weight" => "1" + ) + ) + ) + ); + + // Try to get cached records + $cacheKey = 'robots_order_id.cache'; + $robots = $cache->get($cacheKey); + if ($robots === null) { + + // $robots is null because of cache expiration or data does not exist + // Make the database call and populate the variable + $robots = Robots::find( + array( + "order" => "id" + ) + ); + + // Store it in the cache + $cache->save($cacheKey, $robots); + } + + // Use $robots :) + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + +Querying the cache +------------------ +The elements added to the cache are uniquely identified by a key. In the case of the File backend, the key is the +actual filename. To retrieve data from the cache, we just have to call it using the unique key. If the key does +not exist, the get method will return null. + +.. code-block:: php + + get("myProducts"); + +If you want to know which keys are stored in the cache you could call the queryKeys method: + +.. code-block:: php + + queryKeys(); + foreach ($keys as $key) { + $data = $cache->get($key); + echo "Key=", $key, " Data=", $data; + } + + // Query keys in the cache that begins with "my-prefix" + $keys = $cache->queryKeys("my-prefix"); + + +Deleting data from the cache +---------------------------- +There are times where you will need to forcibly invalidate a cache entry (due to an update in the cached data). +The only requirement is to know the key that the data have been stored with. + +.. code-block:: php + + delete("someKey"); + + // Delete all items from the cache + $keys = $cache->queryKeys(); + foreach ($keys as $key) { + $cache->delete($key); + } + +Checking cache existence +------------------------ +It is possible to check if a cache already exists with a given key: + +.. code-block:: php + + exists("someKey")) { + echo $cache->get("someKey"); + } else { + echo "Cache does not exists!"; + } + +Lifetime +-------- +A "lifetime" is a time in seconds that a cache could live without expire. By default, all the created caches use the lifetime set in the frontend creation. +You can set a specific lifetime in the creation or retrieving of the data from the cache: + +Setting the lifetime when retrieving: + +.. code-block:: php + + get($cacheKey, 3600); + if ($robots === null) { + + $robots = "some robots"; + + // Store it in the cache + $cache->save($cacheKey, $robots); + } + +Setting the lifetime when saving: + +.. code-block:: php + + get($cacheKey); + if ($robots === null) { + + $robots = "some robots"; + + // Setting the cache when saving data + $cache->save($cacheKey, $robots, 3600); + } + +Multi-Level Cache +----------------- +This feature of the cache component, allows the developer to implement a multi-level cache. This new feature is very useful +because you can save the same data in several cache locations with different lifetimes, reading first from the one with +the faster adapter and ending with the slowest one until the data expires: + +.. code-block:: php + + 3600 + ) + ); + + $fastFrontend = new DataFrontend( + array( + "lifetime" => 86400 + ) + ); + + $slowFrontend = new DataFrontend( + array( + "lifetime" => 604800 + ) + ); + + // Backends are registered from the fastest to the slower + $cache = new Multiple( + array( + new ApcCache( + $ultraFastFrontend, + array( + "prefix" => 'cache', + ) + ), + new MemcacheCache( + $fastFrontend, + array( + "prefix" => 'cache', + "host" => "localhost", + "port" => "11211" + ) + ), + new FileCache( + $slowFrontend, + array( + "prefix" => 'cache', + "cacheDir" => "../app/cache/" + ) + ) + ) + ); + + // Save, saves in every backend + $cache->save('my-key', $data); + +Frontend Adapters +----------------- +The available frontend adapters that are used as interfaces or input sources to the cache are: + ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| Adapter | Description | Example | ++==========+======================================================================================================================================================================+====================================================================================+ +| Output | Read input data from standard PHP output | :doc:`Phalcon\\Cache\\Frontend\\Output <../api/Phalcon_Cache_Frontend_Output>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| Data | It's used to cache any kind of PHP data (big arrays, objects, text, etc). Data is serialized before stored in the backend. | :doc:`Phalcon\\Cache\\Frontend\\Data <../api/Phalcon_Cache_Frontend_Data>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| Base64 | It's used to cache binary data. The data is serialized using base64_encode before be stored in the backend. | :doc:`Phalcon\\Cache\\Frontend\\Base64 <../api/Phalcon_Cache_Frontend_Base64>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| Json | Data is encoded in JSON before be stored in the backend. Decoded after be retrieved. This frontend is useful to share data with other languages or frameworks. | :doc:`Phalcon\\Cache\\Frontend\\Json <../api/Phalcon_Cache_Frontend_Json>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| IgBinary | It's used to cache any kind of PHP data (big arrays, objects, text, etc). Data is serialized using IgBinary before be stored in the backend. | :doc:`Phalcon\\Cache\\Frontend\\Igbinary <../api/Phalcon_Cache_Frontend_Igbinary>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ +| None | It's used to cache any kind of PHP data without serializing them. | :doc:`Phalcon\\Cache\\Frontend\\None <../api/Phalcon_Cache_Frontend_None>` | ++----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+ + +Implementing your own Frontend adapters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The :doc:`Phalcon\\Cache\\FrontendInterface <../api/Phalcon_Cache_FrontendInterface>` interface must be implemented in order to create your own frontend adapters or extend the existing ones. + +Backend Adapters +---------------- +The backend adapters available to store cache data are: + ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| Adapter | Description | Info | Required Extensions | Example | ++===========+================================================+============+=====================+===================================================================================+ +| File | Stores data to local plain files | | | :doc:`Phalcon\\Cache\\Backend\\File <../api/Phalcon_Cache_Backend_File>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| Memcached | Stores data to a memcached server | Memcached_ | memcache_ | :doc:`Phalcon\\Cache\\Backend\\Memcache <../api/Phalcon_Cache_Backend_Memcache>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| APC | Stores data to the Alternative PHP Cache (APC) | APC_ | `APC extension`_ | :doc:`Phalcon\\Cache\\Backend\\Apc <../api/Phalcon_Cache_Backend_Apc>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| Mongo | Stores data to Mongo Database | MongoDb_ | `Mongo`_ | :doc:`Phalcon\\Cache\\Backend\\Mongo <../api/Phalcon_Cache_Backend_Mongo>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| XCache | Stores data in XCache | XCache_ | `xcache extension`_ | :doc:`Phalcon\\Cache\\Backend\\Xcache <../api/Phalcon_Cache_Backend_Xcache>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ +| Redis | Stores data in Redis | Redis_ | `redis extension`_ | :doc:`Phalcon\\Cache\\Backend\\Redis <../api/Phalcon_Cache_Backend_Redis>` | ++-----------+------------------------------------------------+------------+---------------------+-----------------------------------------------------------------------------------+ + +Implementing your own Backend adapters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The :doc:`Phalcon\\Cache\\BackendInterface <../api/Phalcon_Cache_BackendInterface>` interface must be implemented in order to create your own backend adapters or extend the existing ones. + +File Backend Options +^^^^^^^^^^^^^^^^^^^^ +This backend will store cached content into files in the local server. The available options for this backend are: + ++----------+-------------------------------------------------------------+ +| Option | Description | ++==========+=============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++----------+-------------------------------------------------------------+ +| cacheDir | A writable directory on which cached files will be placed | ++----------+-------------------------------------------------------------+ + +Memcached Backend Options +^^^^^^^^^^^^^^^^^^^^^^^^^ +This backend will store cached content on a memcached server. The available options for this backend are: + ++------------+-------------------------------------------------------------+ +| Option | Description | ++============+=============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++------------+-------------------------------------------------------------+ +| host | memcached host | ++------------+-------------------------------------------------------------+ +| port | memcached port | ++------------+-------------------------------------------------------------+ +| persistent | create a persistent connection to memcached? | ++------------+-------------------------------------------------------------+ + +APC Backend Options +^^^^^^^^^^^^^^^^^^^ +This backend will store cached content on Alternative PHP Cache (APC_). The available options for this backend are: + ++------------+-------------------------------------------------------------+ +| Option | Description | ++============+=============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++------------+-------------------------------------------------------------+ + +Mongo Backend Options +^^^^^^^^^^^^^^^^^^^^^ +This backend will store cached content on a MongoDB server. The available options for this backend are: + ++------------+-------------------------------------------------------------+ +| Option | Description | ++============+=============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++------------+-------------------------------------------------------------+ +| server | A MongoDB connection string | ++------------+-------------------------------------------------------------+ +| db | Mongo database name | ++------------+-------------------------------------------------------------+ +| collection | Mongo collection in the database | ++------------+-------------------------------------------------------------+ + +XCache Backend Options +^^^^^^^^^^^^^^^^^^^^^^ +This backend will store cached content on XCache (XCache_). The available options for this backend are: + ++------------+-------------------------------------------------------------+ +| Option | Description | ++============+=============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++------------+-------------------------------------------------------------+ + +Redis Backend Options +^^^^^^^^^^^^^^^^^^^^^ +This backend will store cached content on a Redis server (Redis_). The available options for this backend are: + ++------------+---------------------------------------------------------------+ +| Option | Description | ++============+===============================================================+ +| prefix | A prefix that is automatically prepended to the cache keys | ++------------+---------------------------------------------------------------+ +| host | Redis host | ++------------+---------------------------------------------------------------+ +| port | Redis port | ++------------+---------------------------------------------------------------+ +| auth | Password to authenticate to a password-protected Redis server | ++------------+---------------------------------------------------------------+ +| persistent | Create a persistent connection to Redis | ++------------+---------------------------------------------------------------+ +| index | The index of the Redis database to use | ++------------+---------------------------------------------------------------+ + +There are more adapters available for this components in the `Phalcon Incubator `_ + +.. _Memcached: http://www.php.net/memcache +.. _memcache: http://pecl.php.net/package/memcache +.. _APC: http://php.net/apc +.. _APC extension: http://pecl.php.net/package/APC +.. _MongoDb: http://mongodb.org/ +.. _Mongo: http://pecl.php.net/package/mongo +.. _XCache: http://xcache.lighttpd.net/ +.. _XCache extension: http://pecl.php.net/package/xcache +.. _Redis: http://redis.io/ +.. _redis extension: http://pecl.php.net/package/redis diff --git a/id/reference/cherokee.rst b/id/reference/cherokee.rst new file mode 100644 index 000000000000..185e69cbb78c --- /dev/null +++ b/id/reference/cherokee.rst @@ -0,0 +1,59 @@ +Cherokee Installation Notes +=========================== + +Cherokee_ is a high-performance web server. It is very fast, flexible and easy to configure. + +Configuring Cherokee for Phalcon +-------------------------------- +Cherokee provides a friendly graphical interface to configure almost every setting available in the web server. +Start the cherokee administrator by executing with root /path-to-cherokee/sbin/cherokee-admin + +.. figure:: ../_static/img/cherokee-1.jpg + :align: center + +Create a new virtual host by clicking on 'vServers', then add a new virtual server: + +.. figure:: ../_static/img/cherokee-2.jpg + :align: center + +The recently added virtual server must appear at the left bar of the screen. In the 'Behaviors' tab +you will see a set of default behaviors for this virtual server. Click the 'Rule Management' button. +Remove those labeled as 'Directory /cherokee_themes' and 'Directory /icons': + +.. figure:: ../_static/img/cherokee-3.jpg + :align: center + +Add the 'PHP Language' behavior using the wizard. This behavior allow you to run PHP applications: + +.. figure:: ../_static/img/cherokee-4.jpg + :align: center + +Normally this behavior does not require additional settings. Add another behavior, +this time in the 'Manual Configuration' section. In 'Rule Type' choose 'File Exists', +then make sure the option 'Match any file' is enabled: + +.. figure:: ../_static/img/cherokee-55.jpg + :align: center + +In the 'Handler' tab choose 'List & Send' as handler: + +.. figure:: ../_static/img/cherokee-7.jpg + :align: center + +Edit the 'Default' behavior in order to enable the URL-rewrite engine. Change the handler to 'Redirection', +then add the following regular expression to the engine ^(.*)$: + +.. figure:: ../_static/img/cherokee-6.jpg + :align: center + +Finally, make sure the behaviors have the following order: + +.. figure:: ../_static/img/cherokee-8.jpg + :align: center + +Execute the application in a browser: + +.. figure:: ../_static/img/cherokee-9.jpg + :align: center + +.. _Cherokee: http://www.cherokee-project.com/ diff --git a/id/reference/cli.rst b/id/reference/cli.rst new file mode 100644 index 000000000000..a772fc83ff96 --- /dev/null +++ b/id/reference/cli.rst @@ -0,0 +1,189 @@ +Command Line Applications +========================= + +CLI applications are executed from the command line. They are useful to create cron jobs, scripts, command utilities and more. + +Structure +--------- +A minimal structure of a CLI application will look like this: + +* app/config/config.php +* app/tasks/MainTask.php +* app/cli.php <-- main bootstrap file + +Creating a Bootstrap +-------------------- +As in regular MVC applications, a bootstrap file is used to bootstrap the application. Instead of the index.php bootstrapper in web applications, we use a cli.php file for bootstrapping the application. + +Below is a sample bootstrap that is being used for this example. + +.. code-block:: php + + registerDirs( + array( + APPLICATION_PATH . '/tasks' + ) + ); + $loader->register(); + + // Load the configuration file (if any) + if (is_readable(APPLICATION_PATH . '/config/config.php')) { + $config = include APPLICATION_PATH . '/config/config.php'; + $di->set('config', $config); + } + + // Create a console application + $console = new ConsoleApp(); + $console->setDI($di); + + /** + * Process the console arguments + */ + $arguments = array(); + foreach ($argv as $k => $arg) { + if ($k == 1) { + $arguments['task'] = $arg; + } elseif ($k == 2) { + $arguments['action'] = $arg; + } elseif ($k >= 3) { + $arguments['params'][] = $arg; + } + } + + // Define global constants for the current task and action + define('CURRENT_TASK', (isset($argv[1]) ? $argv[1] : null)); + define('CURRENT_ACTION', (isset($argv[2]) ? $argv[2] : null)); + + try { + // Handle incoming arguments + $console->handle($arguments); + } catch (\Phalcon\Exception $e) { + echo $e->getMessage(); + exit(255); + } + +This piece of code can be run using: + +.. code-block:: bash + + $ php app/cli.php + + This is the default task and the default action + +Tasks +----- +Tasks work similar to controllers. Any CLI application needs at least a MainTask and a mainAction and every task needs to have a mainAction which will run if no action is given explicitly. + +Below is an example of the app/tasks/MainTask.php file: + +.. code-block:: php + + setShared('console', $console); + + try { + // Handle incoming arguments + $console->handle($arguments); + } catch (\Phalcon\Exception $e) { + echo $e->getMessage(); + exit(255); + } + +Then you can use the console inside of any task. Below is an example of a modified MainTask.php: + +.. code-block:: php + + console->handle( + array( + 'task' => 'main', + 'action' => 'test' + ) + ); + } + + public function testAction() + { + echo "\nI will get printed too!\n"; + } + } + +However, it's a better idea to extend :doc:`Phalcon\\Cli\\Task <../api/Phalcon_Cli_Task>` and implement this kind of logic there. diff --git a/id/reference/config.rst b/id/reference/config.rst new file mode 100755 index 000000000000..a60366592a81 --- /dev/null +++ b/id/reference/config.rst @@ -0,0 +1,184 @@ +Membaca Konfigurasi +=================== + +:doc:`Phalcon\\Config <../api/Phalcon_Config>` adalah komponen yang digunakan untuk membaca file konfigurasi beragam format (menggunakan adapter) ke dalam objek PHP untuk digunakan dalam aplikasi. + +File Adapters +------------- +Adapter yang tersedia: + ++-----------+---------------------------------------------------------------------------------------------------------+ +| Tipe File | Keterangan | ++===========+=========================================================================================================+ +| Ini | Menggunakan file INI untuk menyimpan setting. Didalamnya adapter menggunakan fungsi PHP parse_ini_file. | ++-----------+---------------------------------------------------------------------------------------------------------+ +| Array | Menggunakan array PHP multi dimensi untuk menyimpan setting. Adapter ini menawarkan performa terbaik. | ++-----------+---------------------------------------------------------------------------------------------------------+ + +Array Native +------------ +Contoh berikut menunjukkan bagaimana mengubah array native ke objek :doc:`Phalcon\\Config <../api/Phalcon_Config>`. Pilihan ini menawarkan performa terbaik karena tidak ada file yang dibaca selama request. + +.. code-block:: php + + array( + "adapter" => "Mysql", + "host" => "localhost", + "username" => "scott", + "password" => "cheetah", + "dbname" => "test_db" + ), + "app" => array( + "controllersDir" => "../app/controllers/", + "modelsDir" => "../app/models/", + "viewsDir" => "../app/views/" + ), + "mysetting" => "the-value" + ); + + $config = new Config($settings); + + echo $config->app->controllersDir, "\n"; + echo $config->database->username, "\n"; + echo $config->mysetting, "\n"; + +Jika anda ingi mengelola projek anda lebih baik anda dapat menyimpan array ke file lain dan membacanya. + +.. code-block:: php + + ` menggunakan fungsi PHP parse_ini_file untuk membaca file. Seksi file dipecah menjadi sub setting untuk akses lebih mudah. + +.. code-block:: ini + + [database] + adapter = Mysql + host = localhost + username = scott + password = cheetah + dbname = test_db + + [phalcon] + controllersDir = "../app/controllers/" + modelsDir = "../app/models/" + viewsDir = "../app/views/" + + [models] + metadata.adapter = "Memory" + +Anda dapat membaca file sebagai berikut: + +.. code-block:: php + + phalcon->controllersDir, "\n"; + echo $config->database->username, "\n"; + echo $config->models->metadata->adapter, "\n"; + +Menggabung Konfigurasi +---------------------- +:doc:`Phalcon\\Config <../api/Phalcon_Config>` dapat menggabung properti satu objek konfigurasi ke lainnya secara rekursif. +Properti baru ditambahkan dan properti yang sudah ada diperbarui. + +.. code-block:: php + + array( + 'host' => 'localhost', + 'dbname' => 'test_db' + ), + 'debug' => 1 + ) + ); + + $config2 = new Config( + array( + 'database' => array( + 'dbname' => 'production_db', + 'username' => 'scott', + 'password' => 'secret' + ), + 'logging' => 1 + ) + ); + + $config->merge($config2); + + print_r($config); + +Kode di atas menghasilkan berikut: + +.. code-block:: html + + Phalcon\Config Object + ( + [database] => Phalcon\Config Object + ( + [host] => localhost + [dbname] => production_db + [username] => scott + [password] => secret + ) + [debug] => 1 + [logging] => 1 + ) + +Ada lebih banyak adapter tersedia untuk komponen ini di `Phalcon Incubator `_ + +Injeksi ketergantungan Konfigurasi +---------------------------------- +Ada dapat menginjeksi ketergantungan terhadap konfigurasi ke kontroller yang memungkinkan kita menggunakan :doc:`Phalcon\\Config <../api/Phalcon_Config>` dalam :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. Agar dapat melakukannya, tambahkan kode berikut dalam script dependency injector. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Sekarang dalam kontroller anda dapat mengakses konfigurasi memanfaatkan fitur depedency injection dengan nama `config` seperti kode berikut: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/id/reference/controllers.rst b/id/reference/controllers.rst new file mode 100644 index 000000000000..ff1f7f89eadf --- /dev/null +++ b/id/reference/controllers.rst @@ -0,0 +1,443 @@ +Using Controllers +================= + +The controllers provide a number of methods that are called actions. Actions are methods on a controller that handle requests. By default all +public methods on a controller map to actions and are accessible by a URL. Actions are responsible for interpreting the request and creating +the response. Usually responses are in the form of a rendered view, but there are other ways to create responses as well. + +For instance, when you access a URL like this: http://localhost/blog/posts/show/2015/the-post-title Phalcon by default will decompose each +part like this: + ++-----------------------+----------------+ +| **Phalcon Directory** | blog | ++-----------------------+----------------+ +| **Controller** | posts | ++-----------------------+----------------+ +| **Action** | show | ++-----------------------+----------------+ +| **Parameter** | 2015 | ++-----------------------+----------------+ +| **Parameter** | the-post-title | ++-----------------------+----------------+ + +In this case, the PostsController will handle this request. There is no a special location to put controllers in an application, they +could be loaded using :doc:`autoloaders `, so you're free to organize your controllers as you need. + +Controllers must have the suffix "Controller" while actions the suffix "Action". A sample of a controller is as follows: + +.. code-block:: php + + `. By doing this, the controller can have easy access to +the application services. + +Parameters without a default value are handled as required. Setting optional values for parameters is done as usual in PHP: + +.. code-block:: php + + dispatcher->getParam('year'); + $postTitle = $this->dispatcher->getParam('postTitle'); + } + } + +Dispatch Loop +------------- +The dispatch loop will be executed within the Dispatcher until there are no actions left to be executed. In the previous example only one +action was executed. Now we'll see how "forward" can provide a more complex flow of operation in the dispatch loop, by forwarding +execution to a different controller/action. + +.. code-block:: php + + flash->error("You don't have permission to access this area"); + + // Forward flow to another action + $this->dispatcher->forward( + array( + "controller" => "users", + "action" => "signin" + ) + ); + } + } + +If users don't have permissions to access a certain action then will be forwarded to the Users controller, signin action. + +.. code-block:: php + + `. + +Initializing Controllers +------------------------ +:doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>` offers the initialize method, which is executed first, before any +action is executed on a controller. The use of the "__construct" method is not recommended. + +.. code-block:: php + + settings = array( + "mySetting" => "value" + ); + } + + public function saveAction() + { + if ($this->settings["mySetting"] == "value") { + // ... + } + } + } + +.. highlights:: + + Method 'initialize' is only called if the event 'beforeExecuteRoute' is executed with success. This avoid + that application logic in the initializer cannot be executed without authorization. + +If you want to execute some initialization logic just after build the controller object you can implement the +method 'onConstruct': + +.. code-block:: php + + ` then it has easy access to the service +container in application. For example, if we have registered a service like this: + +.. code-block:: php + + set('storage', function () { + return new Storage('/some/directory'); + }, true); + +Then, we can access to that service in several ways: + +.. code-block:: php + + storage->save('/some/file'); + + // Accessing the service from the DI + $this->di->get('storage')->save('/some/file'); + + // Another way to access the service using the magic getter + $this->di->getStorage()->save('/some/file'); + + // Another way to access the service using the magic getter + $this->getDi()->getStorage()->save('/some/file'); + + // Using the array-syntax + $this->di['storage']->save('/some/file'); + } + } + +If you're using Phalcon as a full-stack framework, you can read the services provided :doc:`by default ` in the framework. + +Request and Response +-------------------- +Assuming that the framework provides a set of pre-registered services. We explain how to interact with the HTTP environment. +The "request" service contains an instance of :doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` and the "response" +contains a :doc:`Phalcon\\Http\\Response <../api/Phalcon_Http_Response>` representing what is going to be sent back to the client. + +.. code-block:: php + + request->isPost() == true) { + // Access POST data + $customerName = $this->request->getPost("name"); + $customerBorn = $this->request->getPost("born"); + } + } + } + +The response object is not usually used directly, but is built up before the execution of the action, sometimes - like in +an afterDispatch event - it can be useful to access the response directly: + +.. code-block:: php + + response->setStatusCode(404, "Not Found"); + } + } + +Learn more about the HTTP environment in their dedicated articles :doc:`request ` and :doc:`response `. + +Session Data +------------ +Sessions help us maintain persistent data between requests. You could access a :doc:`Phalcon\\Session\\Bag <../api/Phalcon_Session_Bag>` +from any controller to encapsulate data that needs to be persistent. + +.. code-block:: php + + persistent->name = "Michael"; + } + + public function welcomeAction() + { + echo "Welcome, ", $this->persistent->name; + } + } + +Using Services as Controllers +----------------------------- +Services may act as controllers, controllers classes are always requested from the services container. Accordingly, +any other class registered with its name can easily replace a controller: + +.. code-block:: php + + set('IndexController', function () { + $component = new Component(); + return $component; + }); + + // Register a namespaced controller as a service + $di->set('Backend\Controllers\IndexController', function () { + $component = new Component(); + return $component; + }); + +Creating a Base Controller +-------------------------- +Some application features like access control lists, translation, cache, and template engines are often common to many +controllers. In cases like these the creation of a "base controller" is encouraged to ensure your code stays DRY_. A base +controller is simply a class that extends the :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>` and encapsulates +the common functionality that all controllers must have. In turn, your controllers extend the "base controller" and have +access to the common functionality. + +This class could be located anywhere, but for organizational conventions we recommend it to be in the controllers folder, +e.g. apps/controllers/ControllerBase.php. We may require this file directly in the bootstrap file or cause to be +loaded using any autoloader: + +.. code-block:: php + + ` events, implementing methods with those event names allow +you to implement hook points before/after the actions are executed: + +.. code-block:: php + + getActionName() == 'save') { + + $this->flash->error("You don't have permission to save posts"); + + $this->dispatcher->forward( + array( + 'controller' => 'home', + 'action' => 'index' + ) + ); + + return false; + } + } + + public function afterExecuteRoute($dispatcher) + { + // Executed after every found action + } + } + +.. _DRY: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself diff --git a/id/reference/cookies.rst b/id/reference/cookies.rst new file mode 100644 index 000000000000..45300513fee6 --- /dev/null +++ b/id/reference/cookies.rst @@ -0,0 +1,92 @@ +Cookies Management +================== + +Cookies_ are a very useful way to store small pieces of data on the client's machine that can be retrieved even +if the user closes his/her browser. :doc:`Phalcon\\Http\\Response\\Cookies <../api/Phalcon_Http_Response_Cookies>` +acts as a global bag for cookies. Cookies are stored in this bag during the request execution and are sent +automatically at the end of the request. + +Basic Usage +----------- +You can set/get cookies by just accessing the 'cookies' service in any part of the application where services can be +accessed: + +.. code-block:: php + + cookies->has('remember-me')) { + + // Get the cookie + $rememberMe = $this->cookies->get('remember-me'); + + // Get the cookie's value + $value = $rememberMe->getValue(); + } + } + + public function startAction() + { + $this->cookies->set('remember-me', 'some value', time() + 15 * 86400); + } + + public function logoutAction() + { + // Delete the cookie + $this->cookies->get('remember-me')->delete(); + } + } + +Encryption/Decryption of Cookies +-------------------------------- +By default, cookies are automatically encrypted before being sent to the client and are decrypted when retrieved from the user. +This protection allows unauthorized users to see the cookies' contents in the client (browser). +Despite this protection, sensitive data should not be stored in cookies. + +You can disable encryption in the following way: + +.. code-block:: php + + set('cookies', function () { + $cookies = new Cookies(); + + $cookies->useEncryption(false); + + return $cookies; + }); + +If you wish to use encryption, a global key must be set in the 'crypt' service: + +.. code-block:: php + + set('crypt', function () { + $crypt = new Crypt(); + + $crypt->setKey('#1dj8$=dp?.ak//j1V$'); // Use your own key! + + return $crypt; + }); + +.. highlights:: + + Sending cookies data without encryption to clients including complex objects structures, resultsets, + service information, etc. could expose internal application details that could be used by an attacker + to attack the application. If you do not want to use encryption, we highly recommend you only send very + basic cookie data like numbers or small string literals. + +.. _Cookies: http://en.wikipedia.org/wiki/HTTP_cookie diff --git a/id/reference/crypt.rst b/id/reference/crypt.rst new file mode 100644 index 000000000000..6a77c25f961d --- /dev/null +++ b/id/reference/crypt.rst @@ -0,0 +1,154 @@ +Encryption/Decryption +===================== + +Phalcon provides encryption facilities via the :doc:`Phalcon\\Crypt <../api/Phalcon_Crypt>` component. +This class offers simple object-oriented wrappers to the openssl_ PHP's encryption library. + +By default, this component provides secure encryption using AES-256-CFB. + +.. highlights:: + You must use a key length corresponding to the current algorithm. + For the algorithm used by default it is 32 bytes. + + +Basic Usage +----------- +This component is designed to provide a very simple usage: + +.. code-block:: php + + encrypt($text, $key); + + echo $crypt->decrypt($encrypted, $key); + +You can use the same instance to encrypt/decrypt several times: + +.. code-block:: php + + 'This is a secret text', + 'other-key' => 'This is a very secret' + ); + + foreach ($texts as $key => $text) { + + // Perform the encryption + $encrypted = $crypt->encrypt($text, $key); + + // Now decrypt + echo $crypt->decrypt($encrypted, $key); + } + +Encryption Options +------------------ +The following options are available to change the encryption behavior: + ++------------+---------------------------------------------------------------------------------------------------+ +| Name | Description | ++============+===================================================================================================+ +| Cipher | The cipher is one of the encryption algorithms supported by openssl. You can see a list here_ | ++------------+---------------------------------------------------------------------------------------------------+ + +Example: + +.. code-block:: php + + setCipher('bf-cbc'); + + $key = 'le password'; + $text = 'This is a secret text'; + + echo $crypt->encrypt($text, $key); + +Base64 Support +-------------- +In order for encryption to be properly transmitted (emails) or displayed (browsers) base64_ encoding is usually applied to encrypted texts: + +.. code-block:: php + + encryptBase64($text, $key); + + echo $crypt->decryptBase64($encrypt, $key); + +Setting up an Encryption service +-------------------------------- +You can set up the encryption component in the services container in order to use it from any part of the application: + +.. code-block:: php + + set('crypt', function () { + + $crypt = new Crypt(); + + // Set a global encryption key + $crypt->setKey('%31.1e$i86e$f!8jz'); + + return $crypt; + }, true); + +Then, for example, in a controller you can use it as follows: + +.. code-block:: php + + request->getPost('text'); + + $secret->content = $this->crypt->encrypt($text); + + if ($secret->save()) { + $this->flash->success('Secret was successfully created!'); + } + } + } + +.. _openssl: http://www.php.net/manual/en/book.openssl.php +.. _here: http://www.php.net/manual/en/function.openssl-get-cipher-methods.php +.. _base64: http://www.php.net/manual/en/function.base64-encode.php diff --git a/id/reference/db.rst b/id/reference/db.rst new file mode 100644 index 000000000000..a9bf2b0a7d58 --- /dev/null +++ b/id/reference/db.rst @@ -0,0 +1,826 @@ +Database Abstraction Layer +========================== + +:doc:`Phalcon\\Db <../api/Phalcon_Db>` is the component behind :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` that powers the model layer +in the framework. It consists of an independent high-level abstraction layer for database systems completely written in C. + +This component allows for a lower level database manipulation than using traditional models. + +.. highlights:: + + This guide is not intended to be a complete documentation of available methods and their arguments. Please visit the :doc:`API <../api/index>` + for a complete reference. + +Database Adapters +----------------- +This component makes use of adapters to encapsulate specific database system details. Phalcon uses PDO_ to connect to databases. The following +database engines are supported: + ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Name | Description | API | ++============+======================================================================================================================================================================================================================================+=========================================================================================+ +| MySQL | Is the world's most used relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Mysql <../api/Phalcon_Db_Adapter_Pdo_Mysql>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| PostgreSQL | PostgreSQL is a powerful, open source relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Postgresql <../api/Phalcon_Db_Adapter_Pdo_Postgresql>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | ++------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + +Implementing your own adapters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The :doc:`Phalcon\\Db\\AdapterInterface <../api/Phalcon_Db_AdapterInterface>` interface must be implemented in order to create your own +database adapters or extend the existing ones. + +Database Dialects +----------------- +Phalcon encapsulates the specific details of each database engine in dialects. Those provide common functions and SQL generator to the adapters. + ++------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ +| Name | Description | API | ++============+=====================================================+================================================================================+ +| MySQL | SQL specific dialect for MySQL database system | :doc:`Phalcon\\Db\\Dialect\\Mysql <../api/Phalcon_Db_Dialect_MySQL>` | ++------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ +| PostgreSQL | SQL specific dialect for PostgreSQL database system | :doc:`Phalcon\\Db\\Dialect\\Postgresql <../api/Phalcon_Db_Dialect_Postgresql>` | ++------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ +| SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | ++------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ + +Implementing your own dialects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The :doc:`Phalcon\\Db\\DialectInterface <../api/Phalcon_Db_DialectInterface>` interface must be implemented in order to create your own database dialects or extend the existing ones. + +Connecting to Databases +----------------------- +To create a connection it's necessary instantiate the adapter class. It only requires an array with the connection parameters. The example +below shows how to create a connection passing both required and optional parameters: + +.. code-block:: php + + "127.0.0.1", + "username" => "mike", + "password" => "sigma", + "dbname" => "test_db" + ); + + // Optional + $config["persistent"] = false; + + // Create a connection + $connection = new \Phalcon\Db\Adapter\Pdo\Mysql($config); + +.. code-block:: php + + "localhost", + "username" => "postgres", + "password" => "secret1", + "dbname" => "template" + ); + + // Optional + $config["schema"] = "public"; + + // Create a connection + $connection = new \Phalcon\Db\Adapter\Pdo\Postgresql($config); + +.. code-block:: php + + "/path/to/database.db" + ); + + // Create a connection + $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); + +Setting up additional PDO options +--------------------------------- +You can set PDO options at connection time by passing the parameters 'options': + +.. code-block:: php + + "localhost", + "username" => "root", + "password" => "sigma", + "dbname" => "test_db", + "options" => array( + PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES \'UTF8\'", + PDO::ATTR_CASE => PDO::CASE_LOWER + ) + ) + ); + +Finding Rows +------------ +:doc:`Phalcon\\Db <../api/Phalcon_Db>` provides several methods to query rows from tables. The specific SQL syntax of the target database engine is required in this case: + +.. code-block:: php + + query($sql); + + // Print each robot name + while ($robot = $result->fetch()) { + echo $robot["name"]; + } + + // Get all rows in an array + $robots = $connection->fetchAll($sql); + foreach ($robots as $robot) { + echo $robot["name"]; + } + + // Get only the first row + $robot = $connection->fetchOne($sql); + +By default these calls create arrays with both associative and numeric indexes. You can change this behavior by using :code:`Phalcon\Db\Result::setFetchMode()`. This method receives a constant, defining which kind of index is required. + ++---------------------------------+-----------------------------------------------------------+ +| Constant | Description | ++=================================+===========================================================+ +| :code:`Phalcon\Db::FETCH_NUM` | Return an array with numeric indexes | ++---------------------------------+-----------------------------------------------------------+ +| :code:`Phalcon\Db::FETCH_ASSOC` | Return an array with associative indexes | ++---------------------------------+-----------------------------------------------------------+ +| :code:`Phalcon\Db::FETCH_BOTH` | Return an array with both associative and numeric indexes | ++---------------------------------+-----------------------------------------------------------+ +| :code:`Phalcon\Db::FETCH_OBJ` | Return an object instead of an array | ++---------------------------------+-----------------------------------------------------------+ + +.. code-block:: php + + query($sql); + + $result->setFetchMode(Phalcon\Db::FETCH_NUM); + while ($robot = $result->fetch()) { + echo $robot[0]; + } + +The :code:`Phalcon\Db::query()` returns an instance of :doc:`Phalcon\\Db\\Result\\Pdo <../api/Phalcon_Db_Result_Pdo>`. These objects encapsulate all the functionality related to the returned resultset i.e. traversing, seeking specific records, count etc. + +.. code-block:: php + + query($sql); + + // Traverse the resultset + while ($robot = $result->fetch()) { + echo $robot["name"]; + } + + // Seek to the third row + $result->seek(2); + $robot = $result->fetch(); + + // Count the resultset + echo $result->numRows(); + +Binding Parameters +------------------ +Bound parameters is also supported in :doc:`Phalcon\\Db <../api/Phalcon_Db>`. Although there is a minimal performance impact by using +bound parameters, you are encouraged to use this methodology so as to eliminate the possibility of your code being subject to SQL +injection attacks. Both string and positional placeholders are supported. Binding parameters can simply be achieved as follows: + +.. code-block:: php + + query($sql, array("Wall-E")); + + // Binding with named placeholders + $sql = "INSERT INTO `robots`(name`, year) VALUES (:name, :year)"; + $success = $connection->query($sql, array("name" => "Astro Boy", "year" => 1952)); + +When using numeric placeholders, you will need to define them as integers i.e. 1 or 2. In this case "1" or "2" +are considered strings and not numbers, so the placeholder could not be successfully replaced. With any adapter +data are automatically escaped using `PDO Quote `_. + +This function takes into account the connection charset, so its recommended to define the correct charset +in the connection parameters or in your database server configuration, as a wrong +charset will produce undesired effects when storing or retrieving data. + +Also, you can pass your parameters directly to the execute/query methods. In this case +bound parameters are directly passed to PDO: + +.. code-block:: php + + query($sql, array(1 => "Wall-E")); + +Inserting/Updating/Deleting Rows +-------------------------------- +To insert, update or delete rows, you can use raw SQL or use the preset functions provided by the class: + +.. code-block:: php + + execute($sql); + + // With placeholders + $sql = "INSERT INTO `robots`(`name`, `year`) VALUES (?, ?)"; + $success = $connection->execute($sql, array('Astro Boy', 1952)); + + // Generating dynamically the necessary SQL + $success = $connection->insert( + "robots", + array("Astro Boy", 1952), + array("name", "year") + ); + + // Generating dynamically the necessary SQL (another syntax) + $success = $connection->insertAsDict( + "robots", + array( + "name" => "Astro Boy", + "year" => 1952 + ) + ); + + // Updating data with a raw SQL statement + $sql = "UPDATE `robots` SET `name` = 'Astro boy' WHERE `id` = 101"; + $success = $connection->execute($sql); + + // With placeholders + $sql = "UPDATE `robots` SET `name` = ? WHERE `id` = ?"; + $success = $connection->execute($sql, array('Astro Boy', 101)); + + // Generating dynamically the necessary SQL + $success = $connection->update( + "robots", + array("name"), + array("New Astro Boy"), + "id = 101" // Warning! In this case values are not escaped + ); + + // Generating dynamically the necessary SQL (another syntax) + $success = $connection->updateAsDict( + "robots", + array( + "name" => "New Astro Boy" + ), + "id = 101" // Warning! In this case values are not escaped + ); + + // With escaping conditions + $success = $connection->update( + "robots", + array("name"), + array("New Astro Boy"), + array( + 'conditions' => 'id = ?', + 'bind' => array(101), + 'bindTypes' => array(PDO::PARAM_INT) // Optional parameter + ) + ); + $success = $connection->updateAsDict( + "robots", + array( + "name" => "New Astro Boy" + ), + array( + 'conditions' => 'id = ?', + 'bind' => array(101), + 'bindTypes' => array(PDO::PARAM_INT) // Optional parameter + ) + ); + + // Deleting data with a raw SQL statement + $sql = "DELETE `robots` WHERE `id` = 101"; + $success = $connection->execute($sql); + + // With placeholders + $sql = "DELETE `robots` WHERE `id` = ?"; + $success = $connection->execute($sql, array(101)); + + // Generating dynamically the necessary SQL + $success = $connection->delete("robots", "id = ?", array(101)); + +Transactions and Nested Transactions +------------------------------------ +Working with transactions is supported as it is with PDO. Perform data manipulation inside transactions +often increase the performance on most database systems: + +.. code-block:: php + + begin(); + + // Execute some SQL statements + $connection->execute("DELETE `robots` WHERE `id` = 101"); + $connection->execute("DELETE `robots` WHERE `id` = 102"); + $connection->execute("DELETE `robots` WHERE `id` = 103"); + + // Commit if everything goes well + $connection->commit(); + + } catch (Exception $e) { + // An exception has occurred rollback the transaction + $connection->rollback(); + } + +In addition to standard transactions, :doc:`Phalcon\\Db <../api/Phalcon_Db>` provides built-in support for `nested transactions`_ +(if the database system used supports them). When you call begin() for a second time a nested transaction +is created: + +.. code-block:: php + + begin(); + + // Execute some SQL statements + $connection->execute("DELETE `robots` WHERE `id` = 101"); + + try { + + // Start a nested transaction + $connection->begin(); + + // Execute these SQL statements into the nested transaction + $connection->execute("DELETE `robots` WHERE `id` = 102"); + $connection->execute("DELETE `robots` WHERE `id` = 103"); + + // Create a save point + $connection->commit(); + + } catch (Exception $e) { + // An error has occurred, release the nested transaction + $connection->rollback(); + } + + // Continue, executing more SQL statements + $connection->execute("DELETE `robots` WHERE `id` = 104"); + + // Commit if everything goes well + $connection->commit(); + + } catch (Exception $e) { + // An exception has occurred rollback the transaction + $connection->rollback(); + } + +Database Events +--------------- +:doc:`Phalcon\\Db <../api/Phalcon_Db>` is able to send events to a :doc:`EventsManager ` if it's present. Some events when returning boolean false could stop the active operation. The following events are supported: + ++---------------------+-----------------------------------------------------------+---------------------+ +| Event Name | Triggered | Can stop operation? | ++=====================+===========================================================+=====================+ +| afterConnect | After a successfully connection to a database system | No | ++---------------------+-----------------------------------------------------------+---------------------+ +| beforeQuery | Before send a SQL statement to the database system | Yes | ++---------------------+-----------------------------------------------------------+---------------------+ +| afterQuery | After send a SQL statement to database system | No | ++---------------------+-----------------------------------------------------------+---------------------+ +| beforeDisconnect | Before close a temporal database connection | No | ++---------------------+-----------------------------------------------------------+---------------------+ +| beginTransaction | Before a transaction is going to be started | No | ++---------------------+-----------------------------------------------------------+---------------------+ +| rollbackTransaction | Before a transaction is rollbacked | No | ++---------------------+-----------------------------------------------------------+---------------------+ +| commitTransaction | Before a transaction is committed | No | ++---------------------+-----------------------------------------------------------+---------------------+ + +Bind an EventsManager to a connection is simple, :doc:`Phalcon\\Db <../api/Phalcon_Db>` will trigger the events with the type "db": + +.. code-block:: php + + attach('db', $dbListener); + + $connection = new Connection( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // Assign the eventsManager to the db adapter instance + $connection->setEventsManager($eventsManager); + +Stop SQL operations are very useful if for example you want to implement some last-resource SQL injector checker: + +.. code-block:: php + + attach('db:beforeQuery', function ($event, $connection) { + + // Check for malicious words in SQL statements + if (preg_match('/DROP|ALTER/i', $connection->getSQLStatement())) { + // DROP/ALTER operations aren't allowed in the application, + // this must be a SQL injection! + return false; + } + + // It's OK + return true; + }); + +Profiling SQL Statements +------------------------ +:doc:`Phalcon\\Db <../api/Phalcon_Db>` includes a profiling component called :doc:`Phalcon\\Db\\Profiler <../api/Phalcon_Db_Profiler>`, that is used to analyze the performance of database operations so as to diagnose performance problems and discover bottlenecks. + +Database profiling is really easy With :doc:`Phalcon\\Db\\Profiler <../api/Phalcon_Db_Profiler>`: + +.. code-block:: php + + attach('db', function ($event, $connection) use ($profiler) { + if ($event->getType() == 'beforeQuery') { + // Start a profile with the active connection + $profiler->startProfile($connection->getSQLStatement()); + } + if ($event->getType() == 'afterQuery') { + // Stop the active profile + $profiler->stopProfile(); + } + }); + + // Assign the events manager to the connection + $connection->setEventsManager($eventsManager); + + $sql = "SELECT buyer_name, quantity, product_name " + . "FROM buyers " + . "LEFT JOIN products ON buyers.pid = products.id"; + + // Execute a SQL statement + $connection->query($sql); + + // Get the last profile in the profiler + $profile = $profiler->getLastProfile(); + + echo "SQL Statement: ", $profile->getSQLStatement(), "\n"; + echo "Start Time: ", $profile->getInitialTime(), "\n"; + echo "Final Time: ", $profile->getFinalTime(), "\n"; + echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "\n"; + +You can also create your own profile class based on :doc:`Phalcon\\Db\\Profiler <../api/Phalcon_Db_Profiler>` to record real time statistics of the statements sent to the database system: + +.. code-block:: php + + getSQLStatement(); + } + + /** + * Executed after the SQL statement was sent to the db server + */ + public function afterEndProfile(Item $profile) + { + echo $profile->getTotalElapsedSeconds(); + } + } + + // Create an Events Manager + $eventsManager = new EventsManager(); + + // Create a listener + $dbProfiler = new DbProfiler(); + + // Attach the listener listening for all database events + $eventsManager->attach('db', $dbProfiler); + +Logging SQL Statements +---------------------- +Using high-level abstraction components such as :doc:`Phalcon\\Db <../api/Phalcon_Db>` to access a database, it is difficult to understand which statements are sent to the database system. :doc:`Phalcon\\Logger <../api/Phalcon_Logger>` interacts with :doc:`Phalcon\\Db <../api/Phalcon_Db>`, providing logging capabilities on the database abstraction layer. + +.. code-block:: php + + attach('db', function ($event, $connection) use ($logger) { + if ($event->getType() == 'beforeQuery') { + $logger->log($connection->getSQLStatement(), Logger::INFO); + } + }); + + // Assign the eventsManager to the db adapter instance + $connection->setEventsManager($eventsManager); + + // Execute some SQL statement + $connection->insert( + "products", + array("Hot pepper", 3.50), + array("name", "price") + ); + +As above, the file *app/logs/db.log* will contain something like this: + +.. code-block:: php + + [Sun, 29 Apr 12 22:35:26 -0500][DEBUG][Resource Id #77] INSERT INTO products + (name, price) VALUES ('Hot pepper', 3.50) + + +Implementing your own Logger +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can implement your own logger class for database queries, by creating a class that implements a single method called "log". +The method needs to accept a string as the first argument. You can then pass your logging object to :code:`Phalcon\Db::setLogger()`, +and from then on any SQL statement executed will call that method to log the results. + +Describing Tables/Views +----------------------- +:doc:`Phalcon\\Db <../api/Phalcon_Db>` also provides methods to retrieve detailed information about tables and views: + +.. code-block:: php + + listTables("test_db"); + + // Is there a table 'robots' in the database? + $exists = $connection->tableExists("robots"); + + // Get name, data types and special features of 'robots' fields + $fields = $connection->describeColumns("robots"); + foreach ($fields as $field) { + echo "Column Type: ", $field["Type"]; + } + + // Get indexes on the 'robots' table + $indexes = $connection->describeIndexes("robots"); + foreach ($indexes as $index) { + print_r($index->getColumns()); + } + + // Get foreign keys on the 'robots' table + $references = $connection->describeReferences("robots"); + foreach ($references as $reference) { + // Print referenced columns + print_r($reference->getReferencedColumns()); + } + +A table description is very similar to the MySQL describe command, it contains the following information: + ++-------+----------------------------------------------------+ +| Index | Description | ++=======+====================================================+ +| Field | Field's name | ++-------+----------------------------------------------------+ +| Type | Column Type | ++-------+----------------------------------------------------+ +| Key | Is the column part of the primary key or an index? | ++-------+----------------------------------------------------+ +| Null | Does the column allow null values? | ++-------+----------------------------------------------------+ + +Methods to get information about views are also implemented for every supported database system: + +.. code-block:: php + + listViews("test_db"); + + // Is there a view 'robots' in the database? + $exists = $connection->viewExists("robots"); + +Creating/Altering/Dropping Tables +--------------------------------- +Different database systems (MySQL, Postgresql etc.) offer the ability to create, alter or drop tables with the use of +commands such as CREATE, ALTER or DROP. The SQL syntax differs based on which database system is used. +:doc:`Phalcon\\Db <../api/Phalcon_Db>` offers a unified interface to alter tables, without the need to +differentiate the SQL syntax based on the target storage system. + +Creating Tables +^^^^^^^^^^^^^^^ +The following example shows how to create a table: + +.. code-block:: php + + createTable( + "robots", + null, + array( + "columns" => array( + new Column( + "id", + array( + "type" => Column::TYPE_INTEGER, + "size" => 10, + "notNull" => true, + "autoIncrement" => true, + "primary" => true, + ) + ), + new Column( + "name", + array( + "type" => Column::TYPE_VARCHAR, + "size" => 70, + "notNull" => true, + ) + ), + new Column( + "year", + array( + "type" => Column::TYPE_INTEGER, + "size" => 11, + "notNull" => true, + ) + ) + ) + ) + ); + +:code:`Phalcon\Db::createTable()` accepts an associative array describing the table. Columns are defined with the class +:doc:`Phalcon\\Db\\Column <../api/Phalcon_Db_Column>`. The table below shows the options available to define a column: + ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| Option | Description | Optional | ++=================+============================================================================================================================================+==========+ +| "type" | Column type. Must be a :doc:`Phalcon\\Db\\Column <../api/Phalcon_Db_Column>` constant (see below for a list) | No | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "primary" | True if the column is part of the table's primary key | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "size" | Some type of columns like VARCHAR or INTEGER may have a specific size | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "scale" | DECIMAL or NUMBER columns may be have a scale to specify how many decimals should be stored | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "unsigned" | INTEGER columns may be signed or unsigned. This option does not apply to other types of columns | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "notNull" | Column can store null values? | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "default" | Default value (when used with :code:`"notNull" => true`). | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "autoIncrement" | With this attribute column will filled automatically with an auto-increment integer. Only one column in the table can have this attribute. | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "bind" | One of the BIND_TYPE_* constants telling how the column must be binded before save it | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "first" | Column must be placed at first position in the column order | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "after" | Column must be placed after indicated column | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ + +:doc:`Phalcon\\Db <../api/Phalcon_Db>` supports the following database column types: + +* :code:`Phalcon\Db\Column::TYPE_INTEGER` +* :code:`Phalcon\Db\Column::TYPE_DATE` +* :code:`Phalcon\Db\Column::TYPE_VARCHAR` +* :code:`Phalcon\Db\Column::TYPE_DECIMAL` +* :code:`Phalcon\Db\Column::TYPE_DATETIME` +* :code:`Phalcon\Db\Column::TYPE_CHAR` +* :code:`Phalcon\Db\Column::TYPE_TEXT` + +The associative array passed in :code:`Phalcon\Db::createTable()` can have the possible keys: + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+ +| Index | Description | Optional | ++==============+========================================================================================================================================+==========+ +| "columns" | An array with a set of table columns defined with :doc:`Phalcon\\Db\\Column <../api/Phalcon_Db_Column>` | No | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "indexes" | An array with a set of table indexes defined with :doc:`Phalcon\\Db\\Index <../api/Phalcon_Db_Index>` | Yes | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "references" | An array with a set of table references (foreign keys) defined with :doc:`Phalcon\\Db\\Reference <../api/Phalcon_Db_Reference>` | Yes | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "options" | An array with a set of table creation options. These options often relate to the database system in which the migration was generated. | Yes | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+ + +Altering Tables +^^^^^^^^^^^^^^^ +As your application grows, you might need to alter your database, as part of a refactoring or adding new features. +Not all database systems allow to modify existing columns or add columns between two existing ones. :doc:`Phalcon\\Db <../api/Phalcon_Db>` +is limited by these constraints. + +.. code-block:: php + + addColumn( + "robots", + null, + new Column( + "robot_type", + array( + "type" => Column::TYPE_VARCHAR, + "size" => 32, + "notNull" => true, + "after" => "name" + ) + ) + ); + + // Modifying an existing column + $connection->modifyColumn( + "robots", + null, + new Column( + "name", + array( + "type" => Column::TYPE_VARCHAR, + "size" => 40, + "notNull" => true + ) + ) + ); + + // Deleting the column "name" + $connection->dropColumn( + "robots", + null, + "name" + ); + +Dropping Tables +^^^^^^^^^^^^^^^ +Examples on dropping tables: + +.. code-block:: php + + dropTable("robots"); + + // Drop table robot from database "machines" + $connection->dropTable("robots", "machines"); + +.. _PDO: http://www.php.net/manual/en/book.pdo.php +.. _`nested transactions`: http://en.wikipedia.org/wiki/Nested_transaction diff --git a/id/reference/debug.rst b/id/reference/debug.rst new file mode 100755 index 000000000000..35ab6b57fbf5 --- /dev/null +++ b/id/reference/debug.rst @@ -0,0 +1,277 @@ +Debugging Applications +====================== + +.. figure:: ../_static/img/xdebug-1.jpg + :align: center + +PHP offers tools to debug applications with notices, warnings, errors and exceptions. The `Exception class`_ offers information such as the file, +line, message, numeric code, backtrace etc. on where an error occurred. OOP frameworks like Phalcon mainly use this class to encapsulate +this functionality and provide information back to the developer or user. + +Despite being written in C, Phalcon executes methods in the PHP userland, providing the debug capability that any other application or framework +written in PHP has. + +Catching Exceptions +------------------- +Throughout the tutorials and examples of the Phalcon documentation, there is a common element that is catching exceptions. This is a try/catch block: + +.. code-block:: php + + ` extends the +PHP `Exception class`_ and is used to understand whether the exception came from Phalcon or PHP itself. + +All exceptions generated by PHP are based on the `Exception class`_, and have at least the following elements: + +.. code-block:: php + + ` is the same as PHP's `Exception class`_: + +.. code-block:: php + + getMessage(), "\n"; + echo " File=", $e->getFile(), "\n"; + echo " Line=", $e->getLine(), "\n"; + echo $e->getTraceAsString(); + } + +It's therefore easy to find which file and line of the application's code generated the exception, as well as the components involved in +generating the exception: + +.. code-block:: html + + PDOException: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' + (using password: NO) + File=/Applications/MAMP/htdocs/invo/public/index.php + Line=74 + #0 [internal function]: PDO->__construct('mysql:host=loca...', 'root', '', Array) + #1 [internal function]: Phalcon\Db\Adapter\Pdo->connect(Array) + #2 /Applications/MAMP/htdocs/invo/public/index.php(74): + Phalcon\Db\Adapter\Pdo->__construct(Array) + #3 [internal function]: {closure}() + #4 [internal function]: call_user_func_array(Object(Closure), Array) + #5 [internal function]: Phalcon\Di->_factory(Object(Closure), Array) + #6 [internal function]: Phalcon\Di->get('db', Array) + #7 [internal function]: Phalcon\Di->getShared('db') + #8 [internal function]: Phalcon\Mvc\Model->getConnection() + #9 [internal function]: Phalcon\Mvc\Model::_getOrCreateResultset('Users', Array, true) + #10 /Applications/MAMP/htdocs/invo/app/controllers/SessionController.php(83): + Phalcon\Mvc\Model::findFirst('email='demo@pha...') + #11 [internal function]: SessionController->startAction() + #12 [internal function]: call_user_func_array(Array, Array) + #13 [internal function]: Phalcon\Mvc\Dispatcher->dispatch() + #14 /Applications/MAMP/htdocs/invo/public/index.php(114): Phalcon\Mvc\Application->handle() + #15 {main} + +As you can see from the above output the Phalcon's classes and methods are displayed just like any other component, and even showing the +parameters that were invoked in every call. The method `Exception::getTrace`_ provides additional information if needed. + +Debug component +--------------- +Phalcon provides a debug component that allows the developer to easily find errors produced in an application +created with the framework. + +The following screencast explains how it works: + +.. raw:: html + +
+ +
+ +To enable it, add the following to your bootstrap: + +.. code-block:: php + + listen(); + +Any Try/Catch blocks must be removed or disabled to make this component work properly. + +Reflection and Introspection +---------------------------- +Any instance of a Phalcon class offers exactly the same behavior than a PHP normal one. It's possible to use the +`Reflection API`_ or simply print any object to show how is its internal state: + +.. code-block:: php + + + [_module:protected] => + [_controller:protected] => + [_action:protected] => + [_params:protected] => Array + ( + ) + [_routes:protected] => Array + ( + [0] => Phalcon\Mvc\Router\Route Object + ( + [_pattern:protected] => #^/([a-zA-Z0-9\_]+)[/]{0,1}$# + [_compiledPattern:protected] => #^/([a-zA-Z0-9\_]+)[/]{0,1}$# + [_paths:protected] => Array + ( + [controller] => 1 + ) + + [_methods:protected] => + [_id:protected] => 0 + [_name:protected] => + ) + + [1] => Phalcon\Mvc\Router\Route Object + ( + [_pattern:protected] => #^/([a-zA-Z0-9\_]+)/([a-zA-Z0-9\_]+)(/.*)*$# + [_compiledPattern:protected] => #^/([a-zA-Z0-9\_]+)/([a-zA-Z0-9\_]+)(/.*)*$# + [_paths:protected] => Array + ( + [controller] => 1 + [action] => 2 + [params] => 3 + ) + [_methods:protected] => + [_id:protected] => 1 + [_name:protected] => + ) + ) + [_matchedRoute:protected] => + [_matches:protected] => + [_wasMatched:protected] => + [_defaultModule:protected] => + [_defaultController:protected] => + [_defaultAction:protected] => + [_defaultParams:protected] => Array + ( + ) + ) + +Using XDebug +------------ +XDebug_ is an amazing tool that complements the debugging of PHP applications. It is also a C extension for PHP, and you can use it together +with Phalcon without additional configuration or side effects. + +The following screencast shows a Xdebug session with Phalcon: + +.. raw:: html + +
+ +
+ +Once you have xdebug installed, you can use its API to get a more detailed information about exceptions and messages. + +.. highlights:: + + We highly recommend use at least XDebug 2.2.3 for a better compatibility with Phalcon + +The following example implements xdebug_print_function_stack_ to stop the execution and generate a backtrace: + +.. code-block:: php + + request->getPost("name", "string"); + $email = $this->request->getPost("email", "email"); + + // Stop execution and show a backtrace + return xdebug_print_function_stack("stop here!"); + + $user = new Users(); + $user->name = $name; + $user->email = $email; + + // Store and check for errors + $user->save(); + } + } + +In this instance, Xdebug will also show us the variables in the local scope, and a backtrace as well: + +.. code-block:: html + + Xdebug: stop here! in /Applications/MAMP/htdocs/tutorial/app/controllers/SignupController.php + on line 19 + + Call Stack: + 0.0383 654600 1. {main}() /Applications/MAMP/htdocs/tutorial/public/index.php:0 + 0.0392 663864 2. Phalcon\Mvc\Application->handle() + /Applications/MAMP/htdocs/tutorial/public/index.php:37 + 0.0418 738848 3. SignupController->registerAction() + /Applications/MAMP/htdocs/tutorial/public/index.php:0 + 0.0419 740144 4. xdebug_print_function_stack() + /Applications/MAMP/htdocs/tutorial/app/controllers/SignupController.php:19 + +Xdebug provides several ways to get debug and trace information regarding the execution of your application using Phalcon. You can +check the `XDebug documentation`_ for more information. + +.. _`Pretty Exceptions`: https://github.com/phalcon/pretty-exceptions +.. _Exception class: http://www.php.net/manual/en/language.exceptions.php +.. _`Reflection API`: http://php.net/manual/en/book.reflection.php +.. _`Exception::getTrace`: http://www.php.net/manual/en/exception.gettrace.php +.. _XDebug: http://xdebug.org +.. _XDebug documentation: http://xdebug.org/docs +.. _xdebug_print_function_stack: http://xdebug.org/docs/stack_trace diff --git a/id/reference/di.rst b/id/reference/di.rst new file mode 100644 index 000000000000..f5f0be15582d --- /dev/null +++ b/id/reference/di.rst @@ -0,0 +1,1068 @@ +Dependency Injection/Service Location +************************************* + +The following example is a bit lengthy, but it attempts to explain why Phalcon uses service location and dependency injection. +First, let's pretend we are developing a component called SomeComponent. This performs a task that is not important now. +Our component has some dependency that is a connection to a database. + +In this first example, the connection is created inside the component. This approach is impractical; due to the fact +we cannot change the connection parameters or the type of database system because the component only works as created. + +.. code-block:: php + + "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // ... + } + } + + $some = new SomeComponent(); + $some->someDbTask(); + +To solve this, we have created a setter that injects the dependency externally before using it. For now, this seems to be +a good solution: + +.. code-block:: php + + _connection = $connection; + } + + public function someDbTask() + { + $connection = $this->_connection; + + // ... + } + } + + $some = new SomeComponent(); + + // Create the connection + $connection = new Connection( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // Inject the connection in the component + $some->setConnection($connection); + + $some->someDbTask(); + +Now consider that we use this component in different parts of the application and +then we will need to create the connection several times before passing it to the component. +Using some kind of global registry where we obtain the connection instance and not have +to create it again and again could solve this: + +.. code-block:: php + + "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + } + } + + class SomeComponent + { + protected $_connection; + + /** + * Sets the connection externally + */ + public function setConnection($connection) + { + $this->_connection = $connection; + } + + public function someDbTask() + { + $connection = $this->_connection; + + // ... + } + } + + $some = new SomeComponent(); + + // Pass the connection defined in the registry + $some->setConnection(Registry::getConnection()); + + $some->someDbTask(); + +Now, let's imagine that we must implement two methods in the component, the first always needs to create a new connection and the second always needs to use a shared connection: + +.. code-block:: php + + "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + } + + /** + * Creates a connection only once and returns it + */ + public static function getSharedConnection() + { + if (self::$_connection===null) { + $connection = self::_createConnection(); + self::$_connection = $connection; + } + + return self::$_connection; + } + + /** + * Always returns a new connection + */ + public static function getNewConnection() + { + return self::_createConnection(); + } + } + + class SomeComponent + { + protected $_connection; + + /** + * Sets the connection externally + */ + public function setConnection($connection) + { + $this->_connection = $connection; + } + + /** + * This method always needs the shared connection + */ + public function someDbTask() + { + $connection = $this->_connection; + + // ... + } + + /** + * This method always needs a new connection + */ + public function someOtherDbTask($connection) + { + + } + } + + $some = new SomeComponent(); + + // This injects the shared connection + $some->setConnection(Registry::getSharedConnection()); + + $some->someDbTask(); + + // Here, we always pass a new connection as parameter + $some->someOtherDbTask(Registry::getNewConnection()); + +So far we have seen how dependency injection solved our problems. Passing dependencies as arguments instead +of creating them internally in the code makes our application more maintainable and decoupled. However, in the long-term, +this form of dependency injection has some disadvantages. + +For instance, if the component has many dependencies, we will need to create multiple setter arguments to pass +the dependencies or create a constructor that pass them with many arguments, additionally creating dependencies +before using the component, every time, makes our code not as maintainable as we would like: + +.. code-block:: php + + setConnection($connection); + $some->setSession($session); + $some->setFileSystem($fileSystem); + $some->setFilter($filter); + $some->setSelector($selector); + +Think if we had to create this object in many parts of our application. In the future, if we do not require any of the dependencies, +we need to go through the entire code base to remove the parameter in any constructor or setter where we injected the code. To solve this, +we return again to a global registry to create the component. However, it adds a new layer of abstraction before creating +the object: + +.. code-block:: php + + _di = $di; + } + + public function someDbTask() + { + // Get the connection service + // Always returns a new connection + $connection = $this->_di->get('db'); + } + + public function someOtherDbTask() + { + // Get a shared connection service, + // this will return the same connection everytime + $connection = $this->_di->getShared('db'); + + // This method also requires an input filtering service + $filter = $this->_di->get('filter'); + } + } + + $di = new Di(); + + // Register a "db" service in the container + $di->set('db', function () { + return new Connection( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + }); + + // Register a "filter" service in the container + $di->set('filter', function () { + return new Filter(); + }); + + // Register a "session" service in the container + $di->set('session', function () { + return new Session(); + }); + + // Pass the service container as unique parameter + $some = new SomeComponent($di); + + $some->someDbTask(); + +The component can now simply access the service it requires when it needs it, if it does not require a service it is not even initialized, +saving resources. The component is now highly decoupled. For example, we can replace the manner in which connections are created, +their behavior or any other aspect of them and that would not affect the component. + +Our approach +============ +:doc:`Phalcon\\Di <../api/Phalcon_Di>` is a component implementing Dependency Injection and Location of services and it's itself a container for them. + +Since Phalcon is highly decoupled, :doc:`Phalcon\\Di <../api/Phalcon_Di>` is essential to integrate the different components of the framework. The developer can +also use this component to inject dependencies and manage global instances of the different classes used in the application. + +Basically, this component implements the `Inversion of Control`_ pattern. Applying this, the objects do not receive their dependencies +using setters or constructors, but requesting a service dependency injector. This reduces the overall complexity since there is only +one way to get the required dependencies within a component. + +Additionally, this pattern increases testability in the code, thus making it less prone to errors. + +Registering services in the Container +===================================== +The framework itself or the developer can register services. When a component A requires component B (or an instance of its class) to operate, it +can request component B from the container, rather than creating a new instance component B. + +This way of working gives us many advantages: + +* We can easily replace a component with one created by ourselves or a third party. +* We have full control of the object initialization, allowing us to set these objects, as needed before delivering them to components. +* We can get global instances of components in a structured and unified way. + +Services can be registered using several types of definitions: + +.. code-block:: php + + set("request", 'Phalcon\Http\Request'); + + // Using an anonymous function, the instance will be lazy loaded + $di->set("request", function () { + return new Request(); + }); + + // Registering an instance directly + $di->set("request", new Request()); + + // Using an array definition + $di->set( + "request", + array( + "className" => 'Phalcon\Http\Request' + ) + ); + +The array syntax is also allowed to register services: + +.. code-block:: php + + 'Phalcon\Http\Request' + ); + +In the examples above, when the framework needs to access the request data, it will ask for the service identified as ‘request’ in the container. +The container in turn will return an instance of the required service. A developer might eventually replace a component when he/she needs. + +Each of the methods (demonstrated in the examples above) used to set/register a service has advantages and disadvantages. It is up to the +developer and the particular requirements that will designate which one is used. + +Setting a service by a string is simple, but lacks flexibility. Setting services using an array offers a lot more flexibility, but makes the +code more complicated. The lambda function is a good balance between the two, but could lead to more maintenance than one would expect. + +:doc:`Phalcon\\Di <../api/Phalcon_Di>` offers lazy loading for every service it stores. Unless the developer chooses to instantiate an object directly and store it +in the container, any object stored in it (via array, string, etc.) will be lazy loaded i.e. instantiated only when requested. + +Simple Registration +------------------- +As seen before, there are several ways to register services. These we call simple: + +String +^^^^^^ +This type expects the name of a valid class, returning an object of the specified class, if the class is not loaded it will be instantiated using an auto-loader. +This type of definition does not allow to specify arguments for the class constructor or parameters: + +.. code-block:: php + + set('request', 'Phalcon\Http\Request'); + +Object +^^^^^^ +This type expects an object. Due to the fact that object does not need to be resolved as it is +already an object, one could say that it is not really a dependency injection, +however it is useful if you want to force the returned dependency to always be +the same object/value: + +.. code-block:: php + + set('request', new Request()); + +Closures/Anonymous functions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +This method offers greater freedom to build the dependency as desired, however, it is difficult to +change some of the parameters externally without having to completely change the definition of dependency: + +.. code-block:: php + + set("db", function () { + return new PdoMysql( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "blog" + ) + ); + }); + +Some of the limitations can be overcome by passing additional variables to the closure's environment: + +.. code-block:: php + + set("db", function () use ($config) { + return new PdoMysql( + array( + "host" => $config->host, + "username" => $config->username, + "password" => $config->password, + "dbname" => $config->name + ) + ); + }); + +Complex Registration +-------------------- +If it is required to change the definition of a service without instantiating/resolving the service, +then, we need to define the services using the array syntax. Define a service using an array definition +can be a little more verbose: + +.. code-block:: php + + set('logger', array( + 'className' => 'Phalcon\Logger\Adapter\File', + 'arguments' => array( + array( + 'type' => 'parameter', + 'value' => '../apps/logs/error.log' + ) + ) + )); + + // Using an anonymous function + $di->set('logger', function () { + return new LoggerFile('../apps/logs/error.log'); + }); + +Both service registrations above produce the same result. The array definition however, allows for alteration of the service parameters if needed: + +.. code-block:: php + + getService('logger')->setClassName('MyCustomLogger'); + + // Change the first parameter without instantiating the logger + $di->getService('logger')->setParameter(0, array( + 'type' => 'parameter', + 'value' => '../apps/logs/error.log' + )); + +In addition by using the array syntax you can use three types of dependency injection: + +Constructor Injection +^^^^^^^^^^^^^^^^^^^^^ +This injection type passes the dependencies/arguments to the class constructor. +Let's pretend we have the following component: + +.. code-block:: php + + _response = $response; + $this->_someFlag = $someFlag; + } + } + +The service can be registered this way: + +.. code-block:: php + + set('response', array( + 'className' => 'Phalcon\Http\Response' + )); + + $di->set('someComponent', array( + 'className' => 'SomeApp\SomeComponent', + 'arguments' => array( + array('type' => 'service', 'name' => 'response'), + array('type' => 'parameter', 'value' => true) + ) + )); + +The service "response" (:doc:`Phalcon\\Http\\Response <../api/Phalcon_Http_Response>`) is resolved to be passed as the first argument of the constructor, +while the second is a boolean value (true) that is passed as it is. + +Setter Injection +^^^^^^^^^^^^^^^^ +Classes may have setters to inject optional dependencies, our previous class can be changed to accept the dependencies with setters: + +.. code-block:: php + + _response = $response; + } + + public function setFlag($someFlag) + { + $this->_someFlag = $someFlag; + } + } + +A service with setter injection can be registered as follows: + +.. code-block:: php + + set('response', array( + 'className' => 'Phalcon\Http\Response' + )); + + $di->set( + 'someComponent', + array( + 'className' => 'SomeApp\SomeComponent', + 'calls' => array( + array( + 'method' => 'setResponse', + 'arguments' => array( + array( + 'type' => 'service', + 'name' => 'response' + ) + ) + ), + array( + 'method' => 'setFlag', + 'arguments' => array( + array( + 'type' => 'parameter', + 'value' => true + ) + ) + ) + ) + ) + ); + +Properties Injection +^^^^^^^^^^^^^^^^^^^^ +A less common strategy is to inject dependencies or parameters directly into public attributes of the class: + +.. code-block:: php + + set( + 'response', + array( + 'className' => 'Phalcon\Http\Response' + ) + ); + + $di->set( + 'someComponent', + array( + 'className' => 'SomeApp\SomeComponent', + 'properties' => array( + array( + 'name' => 'response', + 'value' => array( + 'type' => 'service', + 'name' => 'response' + ) + ), + array( + 'name' => 'someFlag', + 'value' => array( + 'type' => 'parameter', + 'value' => true + ) + ) + ) + ) + ); + +Supported parameter types include the following: + ++-------------+----------------------------------------------------------+---------------------------------------------------------------------------------------------+ +| Type | Description | Example | ++=============+==========================================================+=============================================================================================+ +| parameter | Represents a literal value to be passed as parameter | :code:`array('type' => 'parameter', 'value' => 1234)` | ++-------------+----------------------------------------------------------+---------------------------------------------------------------------------------------------+ +| service | Represents another service in the service container | :code:`array('type' => 'service', 'name' => 'request')` | ++-------------+----------------------------------------------------------+---------------------------------------------------------------------------------------------+ +| instance | Represents an object that must be built dynamically | :code:`array('type' => 'instance', 'className' => 'DateTime', 'arguments' => array('now'))` | ++-------------+----------------------------------------------------------+---------------------------------------------------------------------------------------------+ + +Resolving a service whose definition is complex may be slightly slower than simple definitions seen previously. However, +these provide a more robust approach to define and inject services. + +Mixing different types of definitions is allowed, everyone can decide what is the most appropriate way to register the services +according to the application needs. + +Resolving Services +================== +Obtaining a service from the container is a matter of simply calling the "get" method. A new instance of the service will be returned: + +.. code-block:: php + + get("request"); + +Or by calling through the magic method: + +.. code-block:: php + + getRequest(); + +Or using the array-access syntax: + +.. code-block:: php + + get("MyComponent", array("some-parameter", "other")); + +Events +------ +:doc:`Phalcon\\Di <../api/Phalcon_Di>` is able to send events to an :doc:`EventsManager ` if it is present. +Events are triggered using the type "di". Some events when returning boolean false could stop the active operation. +The following events are supported: + ++----------------------+---------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+ +| Event Name | Triggered | Can stop operation? | Triggered on | ++======================+=================================================================================================================================+=====================+====================+ +| beforeServiceResolve | Triggered before resolve service. Listeners receive the service name and the parameters passed to it. | No | Listeners | ++----------------------+---------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+ +| afterServiceResolve | Triggered after resolve service. Listeners receive the service name, instance, and the parameters passed to it. | No | Listeners | ++----------------------+---------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+ + +Shared services +=============== +Services can be registered as "shared" services this means that they always will act as singletons_. Once the service is resolved for the first time +the same instance of it is returned every time a consumer retrieve the service from the container: + +.. code-block:: php + + setShared('session', function () { + $session = new SessionFiles(); + $session->start(); + return $session; + }); + + $session = $di->get('session'); // Locates the service for the first time + $session = $di->getSession(); // Returns the first instantiated object + +An alternative way to register shared services is to pass "true" as third parameter of "set": + +.. code-block:: php + + set('session', function () { + // ... + }, true); + +If a service isn't registered as shared and you want to be sure that a shared instance will be accessed every time +the service is obtained from the DI, you can use the 'getShared' method: + +.. code-block:: php + + getShared("request"); + +Manipulating services individually +================================== +Once a service is registered in the service container, you can retrieve it to manipulate it individually: + +.. code-block:: php + + set('request', 'Phalcon\Http\Request'); + + // Get the service + $requestService = $di->getService('request'); + + // Change its definition + $requestService->setDefinition(function () { + return new Request(); + }); + + // Change it to shared + $requestService->setShared(true); + + // Resolve the service (return a Phalcon\Http\Request instance) + $request = $requestService->resolve(); + +Instantiating classes via the Service Container +=============================================== +When you request a service to the service container, if it can't find out a service with the same name it'll try to load a class with +the same name. With this behavior we can replace any class by another simply by registering a service with its name: + +.. code-block:: php + + set('IndexController', function () { + $component = new Component(); + return $component; + }, true); + + // Register a controller as a service + $di->set('MyOtherComponent', function () { + // Actually returns another component + $component = new AnotherComponent(); + return $component; + }); + + // Create an instance via the service container + $myComponent = $di->get('MyOtherComponent'); + +You can take advantage of this, always instantiating your classes via the service container (even if they aren't registered as services). The DI will +fallback to a valid autoloader to finally load the class. By doing this, you can easily replace any class in the future by implementing a definition +for it. + +Automatic Injecting of the DI itself +==================================== +If a class or component requires the DI itself to locate services, the DI can automatically inject itself to the instances it creates, +to do this, you need to implement the :doc:`Phalcon\\Di\\InjectionAwareInterface <../api/Phalcon_Di_InjectionAwareInterface>` in your classes: + +.. code-block:: php + + _di = $di; + } + + public function getDi() + { + return $this->_di; + } + } + +Then once the service is resolved, the :code:`$di` will be passed to :code:`setDi()` automatically: + +.. code-block:: php + + set('myClass', 'MyClass'); + + // Resolve the service (NOTE: $myClass->setDi($di) is automatically called) + $myClass = $di->get('myClass'); + +Avoiding service resolution +=========================== +Some services are used in each of the requests made to the application, eliminate the process of resolving the service +could add some small improvement in performance. + +.. code-block:: php + + set('router', $router); + +Organizing services in files +============================ +You can better organize your application by moving the service registration to individual files instead of +doing everything in the application's bootstrap: + +.. code-block:: php + + set('router', function () { + return include "../app/config/routes.php"; + }); + +Then in the file ("../app/config/routes.php") return the object resolved: + +.. code-block:: php + + post('/login'); + + return $router; + +Accessing the DI in a static way +================================ +If needed you can access the latest DI created in a static function in the following way: + +.. code-block:: php + + getSession(); + } + } + +Factory Default DI +================== +Although the decoupled character of Phalcon offers us great freedom and flexibility, maybe we just simply want to use it as a full-stack +framework. To achieve this, the framework provides a variant of :doc:`Phalcon\\Di <../api/Phalcon_Di>` called :doc:`Phalcon\\Di\\FactoryDefault <../api/Phalcon_Di_FactoryDefault>`. This class automatically +registers the appropriate services bundled with the framework to act as full-stack. + +.. code-block:: php + + ` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| router | Routing Service | :doc:`Phalcon\\Mvc\\Router <../api/Phalcon_Mvc_Router>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| url | URL Generator Service | :doc:`Phalcon\\Mvc\\Url <../api/Phalcon_Mvc_Url>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| request | HTTP Request Environment Service | :doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| response | HTTP Response Environment Service | :doc:`Phalcon\\Http\\Response <../api/Phalcon_Http_Response>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| cookies | HTTP Cookies Management Service | :doc:`Phalcon\\Http\\Response\\Cookies <../api/Phalcon_Http_Response_Cookies>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| filter | Input Filtering Service | :doc:`Phalcon\\Filter <../api/Phalcon_Filter>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| flash | Flash Messaging Service | :doc:`Phalcon\\Flash\\Direct <../api/Phalcon_Flash_Direct>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| flashSession | Flash Session Messaging Service | :doc:`Phalcon\\Flash\\Session <../api/Phalcon_Flash_Session>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| session | Session Service | :doc:`Phalcon\\Session\\Adapter\\Files <../api/Phalcon_Session_Adapter_Files>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| eventsManager | Events Management Service | :doc:`Phalcon\\Events\\Manager <../api/Phalcon_Events_Manager>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| db | Low-Level Database Connection Service | :doc:`Phalcon\\Db <../api/Phalcon_Db>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| security | Security helpers | :doc:`Phalcon\\Security <../api/Phalcon_Security>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| crypt | Encrypt/Decrypt data | :doc:`Phalcon\\Crypt <../api/Phalcon_Crypt>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| tag | HTML generation helpers | :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| escaper | Contextual Escaping | :doc:`Phalcon\\Escaper <../api/Phalcon_Escaper>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| annotations | Annotations Parser | :doc:`Phalcon\\Annotations\\Adapter\\Memory <../api/Phalcon_Annotations_Adapter_Memory>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| modelsManager | Models Management Service | :doc:`Phalcon\\Mvc\\Model\\Manager <../api/Phalcon_Mvc_Model_Manager>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| modelsMetadata | Models Meta-Data Service | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Memory <../api/Phalcon_Mvc_Model_MetaData_Memory>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| transactionManager | Models Transaction Manager Service | :doc:`Phalcon\\Mvc\\Model\\Transaction\\Manager <../api/Phalcon_Mvc_Model_Transaction_Manager>` | Yes | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| modelsCache | Cache backend for models cache | None | No | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ +| viewsCache | Cache backend for views fragments | None | No | ++---------------------+---------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ + +Implementing your own DI +======================== +The :doc:`Phalcon\\DiInterface <../api/Phalcon_DiInterface>` interface must be implemented to create your own DI replacing the one provided by Phalcon or extend the current one. + +.. _`Inversion of Control`: http://en.wikipedia.org/wiki/Inversion_of_control +.. _singletons: http://en.wikipedia.org/wiki/Singleton_pattern diff --git a/id/reference/dispatching.rst b/id/reference/dispatching.rst new file mode 100755 index 000000000000..c091c1c03775 --- /dev/null +++ b/id/reference/dispatching.rst @@ -0,0 +1,561 @@ +Dispatching Controllers +======================= + +:doc:`Phalcon\\Mvc\\Dispatcher <../api/Phalcon_Mvc_Dispatcher>` is the component responsible for instantiating controllers and executing the required actions +on them in an MVC application. Understanding its operation and capabilities helps us get more out of the services provided by the framework. + +The Dispatch Loop +----------------- +This is an important process that has much to do with the MVC flow itself, especially with the controller part. The work occurs within the controller +dispatcher. The controller files are read, loaded, and instantiated. Then the required actions are executed. If an action forwards the flow to another +controller/action, the controller dispatcher starts again. To better illustrate this, the following example shows approximately the process performed +within :doc:`Phalcon\\Mvc\\Dispatcher <../api/Phalcon_Mvc_Dispatcher>`: + +.. code-block:: php + + ` is able to send events to an :doc:`EventsManager ` if it is present. Events are triggered using the type "dispatch". Some events when returning boolean false could stop the active operation. The following events are supported: + ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| Event Name | Triggered | Can stop operation? | Triggered on | ++======================+================================================================================================================================================================================================================+=====================+=======================+ +| beforeDispatchLoop | Triggered before entering in the dispatch loop. At this point the dispatcher don't know if the controller or the actions to be executed exist. The Dispatcher only knows the information passed by the Router. | Yes | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| beforeDispatch | Triggered after entering in the dispatch loop. At this point the dispatcher don't know if the controller or the actions to be executed exist. The Dispatcher only knows the information passed by the Router. | Yes | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| beforeExecuteRoute | Triggered before executing the controller/action method. At this point the dispatcher has been initialized the controller and know if the action exist. | Yes | Listeners/Controllers | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| initialize | Allow to globally initialize the controller in the request | No | Controllers | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| afterExecuteRoute | Triggered after executing the controller/action method. As operation cannot be stopped, only use this event to make clean up after execute the action | No | Listeners/Controllers | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| beforeNotFoundAction | Triggered when the action was not found in the controller | Yes | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| beforeException | Triggered before the dispatcher throws any exception | Yes | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| afterDispatch | Triggered after executing the controller/action method. As operation cannot be stopped, only use this event to make clean up after execute the action | Yes | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ +| afterDispatchLoop | Triggered after exiting the dispatch loop | No | Listeners | ++----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------+ + +The :doc:`INVO ` tutorial shows how to take advantage of dispatching events implementing a security filter with :doc:`Acl ` + +The following example demonstrates how to attach listeners to this component: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an event manager + $eventsManager = new EventsManager(); + + // Attach a listener for type "dispatch" + $eventsManager->attach("dispatch", function (Event $event, $dispatcher) { + // ... + }); + + $dispatcher = new MvcDispatcher(); + + // Bind the eventsManager to the view component + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + + }, true); + +An instantiated controller automatically acts as a listener for dispatch events, so you can implement methods as callbacks: + +.. code-block:: php + + ` object as their first parameter - methods in controllers do not. + +Forwarding to other actions +--------------------------- +The dispatch loop allows us to forward the execution flow to another controller/action. This is very useful to check if the user can +access to certain options, redirect users to other screens or simply reuse code. + +.. code-block:: php + + dispatcher->forward( + array( + "controller" => "posts", + "action" => "index" + ) + ); + } + } + +Keep in mind that making a "forward" is not the same as making a HTTP redirect. Although they apparently got the same result. +The "forward" doesn't reload the current page, all the redirection occurs in a single request, while the HTTP redirect needs two requests +to complete the process. + +More forwarding examples: + +.. code-block:: php + + dispatcher->forward( + array( + "action" => "search" + ) + ); + + // Forward flow to another action in the current controller + // passing parameters + $this->dispatcher->forward( + array( + "action" => "search", + "params" => array(1, 2, 3) + ) + ); + +A forward action accepts the following parameters: + ++----------------+--------------------------------------------------------+ +| Parameter | Triggered | ++================+========================================================+ +| controller | A valid controller name to forward to. | ++----------------+--------------------------------------------------------+ +| action | A valid action name to forward to. | ++----------------+--------------------------------------------------------+ +| params | An array of parameters for the action | ++----------------+--------------------------------------------------------+ +| namespace | A valid namespace name where the controller is part of | ++----------------+--------------------------------------------------------+ + +Preparing Parameters +-------------------- +Thanks to the hooks points provided by :doc:`Phalcon\\Mvc\\Dispatcher <../api/Phalcon_Mvc_Dispatcher>` you can easily +adapt your application to any URL schema: + +For example, you want your URLs look like: http://example.com/controller/key1/value1/key2/value + +Parameters by default are passed as they come in the URL to actions, you can transform them to the desired schema: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + // Attach a listener + $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) { + + $keyParams = array(); + $params = $dispatcher->getParams(); + + // Use odd parameters as keys and even as values + foreach ($params as $number => $value) { + if ($number & 1) { + $keyParams[$params[$number - 1]] = $value; + } + } + + // Override parameters + $dispatcher->setParams($keyParams); + }); + + $dispatcher = new MvcDispatcher(); + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +If the desired schema is: http://example.com/controller/key1:value1/key2:value, the following code is required: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + // Attach a listener + $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) { + + $keyParams = array(); + $params = $dispatcher->getParams(); + + // Explode each parameter as key,value pairs + foreach ($params as $number => $value) { + $parts = explode(':', $value); + $keyParams[$parts[0]] = $parts[1]; + } + + // Override parameters + $dispatcher->setParams($keyParams); + }); + + $dispatcher = new MvcDispatcher(); + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +Getting Parameters +------------------ +When a route provides named parameters you can receive them in a controller, a view or any other component that extends +:doc:`Phalcon\\Di\\Injectable <../api/Phalcon_Di_Injectable>`. + +.. code-block:: php + + dispatcher->getParam("title"); + + // Get the post's year passed in the URL as parameter + // or prepared in an event also filtering it + $year = $this->dispatcher->getParam("year", "int"); + + // ... + } + } + +Preparing actions +----------------- +You can also define an arbitrary schema for actions before be dispatched. + +Camelize action names +^^^^^^^^^^^^^^^^^^^^^ +If the original URL is: http://example.com/admin/products/show-latest-products, +and for example you want to camelize 'show-latest-products' to 'ShowLatestProducts', +the following code is required: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + // Camelize actions + $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) { + $dispatcher->setActionName(Text::camelize($dispatcher->getActionName())); + }); + + $dispatcher = new MvcDispatcher(); + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +Remove legacy extensions +^^^^^^^^^^^^^^^^^^^^^^^^ +If the original URL always contains a '.php' extension: + +http://example.com/admin/products/show-latest-products.php +http://example.com/admin/products/index.php + +You can remove it before dispatch the controller/action combination: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + // Remove extension before dispatch + $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) { + + // Remove extension + $action = preg_replace('/\.php$/', '', $dispatcher->getActionName()); + + // Override action + $dispatcher->setActionName($action); + }); + + $dispatcher = new MvcDispatcher(); + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +Inject model instances +^^^^^^^^^^^^^^^^^^^^^^ +In this example, the developer wants to inspect the parameters that an action will receive in order to dynamically +inject model instances. + +The controller looks like: + +.. code-block:: php + + view->post = $post; + } + } + +Method 'showAction' receives an instance of the model \Posts, the developer could inspect this +before dispatch the action preparing the parameter accordingly: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) { + + // Possible controller class name + $controllerName = $dispatcher->getControllerClass(); + + // Possible method name + $actionName = $dispatcher->getActiveMethod(); + + try { + + // Get the reflection for the method to be executed + $reflection = new \ReflectionMethod($controllerName, $actionName); + + // Check parameters + foreach ($reflection->getParameters() as $parameter) { + + // Get the expected model name + $className = $parameter->getClass()->name; + + // Check if the parameter expects a model instance + if (is_subclass_of($className, Model::class)) { + + $model = $className::findFirstById($dispatcher->getParams()[0]); + + // Override the parameters by the model instance + $dispatcher->setParams(array($model)); + } + } + + } catch (\Exception $e) { + // An exception has occurred, maybe the class or action does not exist? + } + + }); + + $dispatcher = new MvcDispatcher(); + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +The above example has been simplified for academic purposes. +A developer can improve it to inject any kind of dependency or model in actions before be executed. + +Handling Not-Found Exceptions +----------------------------- +Using the :doc:`EventsManager ` it's possible to insert a hook point before the dispatcher throws an exception when the controller/action combination wasn't found: + +.. code-block:: php + + setShared('dispatcher', function () { + + // Create an EventsManager + $eventsManager = new EventsManager(); + + // Attach a listener + $eventsManager->attach("dispatch:beforeException", function ($event, $dispatcher, $exception) { + + // Handle 404 exceptions + if ($exception instanceof DispatchException) { + $dispatcher->forward( + array( + 'controller' => 'index', + 'action' => 'show404' + ) + ); + + return false; + } + + // Alternative way, controller or action doesn't exist + switch ($exception->getCode()) { + case Dispatcher::EXCEPTION_HANDLER_NOT_FOUND: + case Dispatcher::EXCEPTION_ACTION_NOT_FOUND: + $dispatcher->forward( + array( + 'controller' => 'index', + 'action' => 'show404' + ) + ); + + return false; + } + }); + + $dispatcher = new MvcDispatcher(); + + // Bind the EventsManager to the dispatcher + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + + }, true); + +Of course, this method can be moved onto independent plugin classes, allowing more than one class +take actions when an exception is produced in the dispatch loop: + +.. code-block:: php + + forward(array( + 'controller' => 'index', + 'action' => 'show404' + )); + return false; + } + + // Handle other exceptions + $dispatcher->forward(array( + 'controller' => 'index', + 'action' => 'show503' + )); + + return false; + } + } + +.. highlights:: + + Only exceptions produced by the dispatcher and exceptions produced in the executed action + are notified in the 'beforeException' events. Exceptions produced in listeners or + controller events are redirected to the latest try/catch. + +Implementing your own Dispatcher +-------------------------------- +The :doc:`Phalcon\\Mvc\\DispatcherInterface <../api/Phalcon_Mvc_DispatcherInterface>` interface must be implemented to create your own dispatcher +replacing the one provided by Phalcon. diff --git a/id/reference/escaper.rst b/id/reference/escaper.rst new file mode 100644 index 000000000000..e1820fc4df1d --- /dev/null +++ b/id/reference/escaper.rst @@ -0,0 +1,168 @@ +Contextual Escaping +=================== + +Websites and web applications are vulnerable to XSS_ attacks and although PHP provides escaping functionality, in some contexts +it is not sufficient/appropriate. :doc:`Phalcon\\Escaper <../api/Phalcon_Escaper>` provides contextual escaping and is written in Zephir, providing +the minimal overhead when escaping different kinds of texts. + +We designed this component based on the `XSS (Cross Site Scripting) Prevention Cheat Sheet`_ created by the OWASP_. + +Additionally, this component relies on mbstring_ to support almost any charset. + +To illustrate how this component works and why it is important, consider the following example: + +.. code-block:: html+php + + '; + + // Malicious CSS class name + $className = ';`('; + + // Malicious CSS font name + $fontName = 'Verdana"'; + + // Malicious Javascript text + $javascriptText = "';Hello"; + + // Create an escaper + $e = new Phalcon\Escaper(); + + ?> + + + + + + <?php echo $e->escapeHtml($maliciousTitle); ?> + + + + + + + +
hello
+ + + + + + +Which produces the following: + +.. figure:: ../_static/img/escape.jpeg + :align: center + +Every text was escaped according to its context. Use the appropriate context is important to avoid XSS attacks. + +Escaping HTML +------------- +The most common situation when inserting unsafe data is between HTML tags: + +.. code-block:: html + +
+ +You can escape those data using the :code:`escapeHtml` method: + +.. code-block:: html+php + +
escapeHtml('>

myattack

'); ?> + +Which produces: + +.. code-block:: html + +
></div><h1>myattack</h1>
+ +Escaping HTML Attributes +------------------------ +Escaping HTML attributes is different from escaping HTML content. The escaper works by changing every non-alphanumeric +character to the form. This kind of escaping is intended to most simpler attributes excluding complex ones like 'href' or 'url': + +.. code-block:: html + +
Hello
+ +You can escape a HTML attribute by using the :code:`escapeHtmlAttr` method: + +.. code-block:: html+php + +

Hello">

Hello
+ +Which produces: + +.. code-block:: html + +
Hello
+ +Escaping URLs +------------- +Some HTML attributes like 'href' or 'url' need to be escaped differently: + +.. code-block:: html + + Some link + +You can escape a HTML attribute by using the :code:`escapeUrl` method: + +.. code-block:: html+php + + Some link + +Which produces: + +.. code-block:: html + + Some link + +Escaping CSS +------------ +CSS identifiers/values can be escaped too: + +.. code-block:: html + + Some link + +You can escape a HTML attribute by using the :code:`escapeCss` method: + +.. code-block:: html+php + + Some link + +Which produces: + +.. code-block:: html + + Some link + +Escaping JavaScript +------------------- +Strings to be inserted into JavaScript code also must be properly escaped: + +.. code-block:: html + + + +You can escape a HTML attribute by using the :code:`escapeJs` method: + +.. code-block:: html+php + + + +.. code-block:: html + + + +.. _OWASP: https://www.owasp.org +.. _XSS: https://www.owasp.org/index.php/XSS +.. _`XSS (Cross Site Scripting) Prevention Cheat Sheet`: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet +.. _mbstring: http://php.net/manual/en/book.mbstring.php diff --git a/id/reference/events.rst b/id/reference/events.rst new file mode 100644 index 000000000000..7cd57de18f9e --- /dev/null +++ b/id/reference/events.rst @@ -0,0 +1,378 @@ +Events Manager +============== + +The purpose of this component is to intercept the execution of most of the other components of the framework by creating "hook points". These hook +points allow the developer to obtain status information, manipulate data or change the flow of execution during the process of a component. + +Usage Example +------------- +In the following example, we use the EventsManager to listen for events produced in a MySQL connection managed by :doc:`Phalcon\\Db <../api/Phalcon_Db>`. +First, we need a listener object to do this. We created a class whose methods are the events we want to listen: + +.. code-block:: php + + attach('db', $dbListener); + + $connection = new DbAdapter( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // Assign the eventsManager to the db adapter instance + $connection->setEventsManager($eventsManager); + + // Send a SQL command to the database server + $connection->query("SELECT * FROM products p WHERE p.status = 1"); + +In order to log all the SQL statements executed by our application, we need to use the event “afterQuery”. The first parameter passed to +the event listener contains contextual information about the event that is running, the second is the connection itself. + +.. code-block:: php + + _logger = new Logger("../apps/logs/db.log"); + } + + public function afterQuery($event, $connection) + { + $this->_logger->log($connection->getSQLStatement(), \Phalcon\Logger::INFO); + } + } + +As part of this example, we will also implement the :doc:`Phalcon\\Db\\Profiler <../api/Phalcon_Db_Profiler>` to detect the SQL statements that are taking longer to execute than expected: + +.. code-block:: php + + _profiler = new Profiler(); + $this->_logger = new Logger("../apps/logs/db.log"); + } + + /** + * This is executed if the event triggered is 'beforeQuery' + */ + public function beforeQuery($event, $connection) + { + $this->_profiler->startProfile($connection->getSQLStatement()); + } + + /** + * This is executed if the event triggered is 'afterQuery' + */ + public function afterQuery($event, $connection) + { + $this->_logger->log($connection->getSQLStatement(), Logger::INFO); + $this->_profiler->stopProfile(); + } + + public function getProfiler() + { + return $this->_profiler; + } + } + +The resulting profile data can be obtained from the listener: + +.. code-block:: php + + execute("SELECT * FROM products p WHERE p.status = 1"); + + foreach ($dbListener->getProfiler()->getProfiles() as $profile) { + echo "SQL Statement: ", $profile->getSQLStatement(), "\n"; + echo "Start Time: ", $profile->getInitialTime(), "\n"; + echo "Final Time: ", $profile->getFinalTime(), "\n"; + echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "\n"; + } + +In a similar manner we can register a lambda function to perform the task instead of a separate listener class (as seen above): + +.. code-block:: php + + attach('db', function ($event, $connection) { + if ($event->getType() == 'afterQuery') { + echo $connection->getSQLStatement(); + } + }); + +Creating components that trigger Events +--------------------------------------- +You can create components in your application that trigger events to an EventsManager. As a consequence, there may exist listeners +that react to these events when generated. In the following example we're creating a component called "MyComponent". +This component is EventsManager aware (it implements :doc:`Phalcon\\Events\\EventsAwareInterface <../api/Phalcon_Events_EventsAwareInterface>`); when its :code:`someTask()` method is executed it triggers two events to any listener in the EventsManager: + +.. code-block:: php + + _eventsManager = $eventsManager; + } + + public function getEventsManager() + { + return $this->_eventsManager; + } + + public function someTask() + { + $this->_eventsManager->fire("my-component:beforeSomeTask", $this); + + // Do some task + echo "Here, someTask\n"; + + $this->_eventsManager->fire("my-component:afterSomeTask", $this); + } + } + +Note that events produced by this component are prefixed with "my-component". This is a unique word that helps us +identify events that are generated from certain component. You can even generate events outside the component with +the same name. Now let's create a listener to this component: + +.. code-block:: php + + setEventsManager($eventsManager); + + // Attach the listener to the EventsManager + $eventsManager->attach('my-component', new SomeListener()); + + // Execute methods in the component + $myComponent->someTask(); + +As :code:`someTask()` is executed, the two methods in the listener will be executed, producing the following output: + +.. code-block:: php + + Here, beforeSomeTask + Here, someTask + Here, afterSomeTask + +Additional data may also passed when triggering an event using the third parameter of :code:`fire()`: + +.. code-block:: php + + fire("my-component:afterSomeTask", $this, $extraData); + +In a listener the third parameter also receives this data: + +.. code-block:: php + + attach('my-component', function ($event, $component, $data) { + print_r($data); + }); + + // Receiving the data from the event context + $eventsManager->attach('my-component', function ($event, $component) { + print_r($event->getData()); + }); + +If a listener it is only interested in listening to a specific type of event you can attach a listener directly: + +.. code-block:: php + + attach('my-component:beforeSomeTask', function ($event, $component) { + // ... + }); + +Event Propagation/Cancellation +------------------------------ +Many listeners may be added to the same event manager. This means that for the same type of event many listeners can be notified. +The listeners are notified in the order they were registered in the EventsManager. Some events are cancelable, indicating that +these may be stopped preventing other listeners are notified about the event: + +.. code-block:: php + + attach('db', function ($event, $connection) { + + // We stop the event if it is cancelable + if ($event->isCancelable()) { + // Stop the event, so other listeners will not be notified about this + $event->stop(); + } + + // ... + + }); + +By default events are cancelable, even most of events produced by the framework are cancelables. You can fire a not-cancelable event +by passing :code:`false` in the fourth parameter of :code:`fire()`: + +.. code-block:: php + + fire("my-component:afterSomeTask", $this, $extraData, false); + +Listener Priorities +------------------- +When attaching listeners you can set a specific priority. With this feature you can attach listeners indicating the order +in which they must be called: + +.. code-block:: php + + enablePriorities(true); + + $eventsManager->attach('db', new DbListener(), 150); // More priority + $eventsManager->attach('db', new DbListener(), 100); // Normal priority + $eventsManager->attach('db', new DbListener(), 50); // Less priority + +Collecting Responses +-------------------- +The events manager can collect every response returned by every notified listener. This example explains how it works: + +.. code-block:: php + + collectResponses(true); + + // Attach a listener + $eventsManager->attach('custom:custom', function () { + return 'first response'; + }); + + // Attach a listener + $eventsManager->attach('custom:custom', function () { + return 'second response'; + }); + + // Fire the event + $eventsManager->fire('custom:custom', null); + + // Get all the collected responses + print_r($eventsManager->getResponses()); + +The above example produces: + +.. code-block:: html + + Array ( [0] => first response [1] => second response ) + +Implementing your own EventsManager +----------------------------------- +The :doc:`Phalcon\\Events\\ManagerInterface <../api/Phalcon_Events_ManagerInterface>` interface must be implemented to create your own +EventsManager replacing the one provided by Phalcon. diff --git a/id/reference/filter.rst b/id/reference/filter.rst new file mode 100644 index 000000000000..8a5751ee5e61 --- /dev/null +++ b/id/reference/filter.rst @@ -0,0 +1,195 @@ +Filtering and Sanitizing +======================== + +Sanitizing user input is a critical part of software development. Trusting or neglecting to sanitize user input could lead to unauthorized +access to the content of your application, mainly user data, or even the server your application is hosted on. + +.. figure:: ../_static/img/sql.png + :align: center + +`Full image (from xkcd)`_ + +The :doc:`Phalcon\\Filter <../api/Phalcon_Filter>` component provides a set of commonly used filters and data sanitizing helpers. It provides object-oriented wrappers around the PHP filter extension. + +Sanitizing data +--------------- +Sanitizing is the process which removes specific characters from a value, that are not required or desired by the user or application. +By sanitizing input we ensure that application integrity will be intact. + +.. code-block:: php + + sanitize("some(one)@exa\mple.com", "email"); + + // Returns "hello" + $filter->sanitize("hello<<", "string"); + + // Returns "100019" + $filter->sanitize("!100a019", "int"); + + // Returns "100019.01" + $filter->sanitize("!100a019.01a", "float"); + + +Sanitizing from Controllers +--------------------------- +You can access a :doc:`Phalcon\\Filter <../api/Phalcon_Filter>` object from your controllers when accessing GET or POST input data +(through the request object). The first parameter is the name of the variable to be obtained; the second is the filter to be applied on it. + +.. code-block:: php + + request->getPost("price", "double"); + + // Sanitizing email from input + $email = $this->request->getPost("customerEmail", "email"); + } + } + +Filtering Action Parameters +--------------------------- +The next example shows you how to sanitize the action parameters within a controller action: + +.. code-block:: php + + filter->sanitize($productId, "int"); + } + } + +Filtering data +-------------- +In addition to sanitizing, :doc:`Phalcon\\Filter <../api/Phalcon_Filter>` also provides filtering by removing or modifying input data to +the format we expect. + +.. code-block:: php + + sanitize("

Hello

", "striptags"); + + // Returns "Hello" + $filter->sanitize(" Hello ", "trim"); + + +Types of Built-in Filters +------------------------- +The following are the built-in filters provided by this component: + ++-----------+---------------------------------------------------------------------------+ +| Name | Description | ++===========+===========================================================================+ +| string | Strip tags and escapes HTML entities, including single and double quotes. | ++-----------+---------------------------------------------------------------------------+ +| email | Remove all characters except letters, digits and !#$%&*+-/=?^_`{\|}~@.[]. | ++-----------+---------------------------------------------------------------------------+ +| int | Remove all characters except digits, plus and minus sign. | ++-----------+---------------------------------------------------------------------------+ +| float | Remove all characters except digits, dot, plus and minus sign. | ++-----------+---------------------------------------------------------------------------+ +| alphanum | Remove all characters except [a-zA-Z0-9] | ++-----------+---------------------------------------------------------------------------+ +| striptags | Applies the strip_tags_ function | ++-----------+---------------------------------------------------------------------------+ +| trim | Applies the trim_ function | ++-----------+---------------------------------------------------------------------------+ +| lower | Applies the strtolower_ function | ++-----------+---------------------------------------------------------------------------+ +| upper | Applies the strtoupper_ function | ++-----------+---------------------------------------------------------------------------+ + +Creating your own Filters +------------------------- +You can add your own filters to :doc:`Phalcon\\Filter <../api/Phalcon_Filter>`. The filter function could be an anonymous function: + +.. code-block:: php + + add('md5', function ($value) { + return preg_replace('/[^0-9a-f]/', '', $value); + }); + + // Sanitize with the "md5" filter + $filtered = $filter->sanitize($possibleMd5, "md5"); + +Or, if you prefer, you can implement the filter in a class: + +.. code-block:: php + + add('ipv4', new IPv4Filter()); + + // Sanitize with the "ipv4" filter + $filteredIp = $filter->sanitize("127.0.0.1", "ipv4"); + +Complex Sanitizing and Filtering +-------------------------------- +PHP itself provides an excellent filter extension you can use. Check out its documentation: `Data Filtering at PHP Documentation`_ + +Implementing your own Filter +---------------------------- +The :doc:`Phalcon\\FilterInterface <../api/Phalcon_FilterInterface>` interface must be implemented to create your own filtering service +replacing the one provided by Phalcon. + +.. _Full image (from xkcd): http://xkcd.com/327/ +.. _Data Filtering at PHP Documentation: http://www.php.net/manual/en/book.filter.php +.. _strip_tags: http://www.php.net/manual/en/function.strip-tags.php +.. _trim: http://www.php.net/manual/en/function.trim.php +.. _strtolower: http://www.php.net/manual/en/function.strtolower.php +.. _strtoupper: http://www.php.net/manual/en/function.strtoupper.php diff --git a/id/reference/flash.rst b/id/reference/flash.rst new file mode 100644 index 000000000000..ed7fdbe0c103 --- /dev/null +++ b/id/reference/flash.rst @@ -0,0 +1,190 @@ +Flashing Messages +================= + +Flash messages are used to notify the user about the state of actions he/she made or simply show information to the users. +These kinds of messages can be generated using this component. + +Adapters +-------- +This component makes use of adapters to define the behavior of the messages after being passed to the Flasher: + ++---------+-----------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+ +| Adapter | Description | API | ++=========+===============================================================================================+============================================================================+ +| Direct | Directly outputs the messages passed to the flasher | :doc:`Phalcon\\Flash\\Direct <../api/Phalcon_Flash_Direct>` | ++---------+-----------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+ +| Session | Temporarily stores the messages in session, then messages can be printed in the next request | :doc:`Phalcon\\Flash\\Session <../api/Phalcon_Flash_Session>` | ++---------+-----------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+ + +Usage +----- +Usually the Flash Messaging service is requested from the services container, +if you're using :doc:`Phalcon\\Di\\FactoryDefault <../api/Phalcon_Di_FactoryDefault>` +then :doc:`Phalcon\\Flash\\Direct <../api/Phalcon_Flash_Direct>` is automatically registered as "flash" service: + +.. code-block:: php + + set('flash', function () { + return new FlashDirect(); + }); + +This way, you can use it in controllers or views by injecting the service in the required scope: + +.. code-block:: php + + flash->success("The post was correctly saved!"); + } + } + +There are four built-in message types supported: + +.. code-block:: php + + flash->error("too bad! the form had errors"); + $this->flash->success("yes!, everything went very smoothly"); + $this->flash->notice("this a very important information"); + $this->flash->warning("best check yo self, you're not looking too good."); + +You can add messages with your own types: + +.. code-block:: php + + flash->message("debug", "this is debug message, you don't say"); + +Printing Messages +----------------- +Messages sent to the flash service are automatically formatted with HTML: + +.. code-block:: html + +
too bad! the form had errors
+
yes!, everything went very smoothly
+
this a very important information
+
best check yo self, you're not looking too good.
+ +As you can see, CSS classes are added automatically to the DIVs. These classes allow you to define the graphical presentation +of the messages in the browser. The CSS classes can be overridden, for example, if you're using Twitter bootstrap, classes can be configured as: + +.. code-block:: php + + set('flash', function () { + $flash = new FlashDirect( + array( + 'error' => 'alert alert-danger', + 'success' => 'alert alert-success', + 'notice' => 'alert alert-info', + 'warning' => 'alert alert-warning' + ) + ); + + return $flash; + }); + +Then the messages would be printed as follows: + +.. code-block:: html + +
too bad! the form had errors
+
yes!, everything went very smoothly
+
this a very important information
+
best check yo self, you're not looking too good.
+ +Implicit Flush vs. Session +-------------------------- +Depending on the adapter used to send the messages, it could be producing output directly, or be temporarily storing the messages in session to be shown later. +When should you use each? That usually depends on the type of redirection you do after sending the messages. For example, +if you make a "forward" is not necessary to store the messages in session, but if you do a HTTP redirect then, they need to be stored in session: + +.. code-block:: php + + flash->success("Your information was stored correctly!"); + + // Forward to the index action + return $this->dispatcher->forward( + array( + "action" => "index" + ) + ); + } + } + +Or using a HTTP redirection: + +.. code-block:: php + + flashSession->success("Your information was stored correctly!"); + + // Make a full HTTP redirection + return $this->response->redirect("contact/index"); + } + } + +In this case you need to manually print the messages in the corresponding view: + +.. code-block:: html+php + + + +

flashSession->output() ?>

+ +The attribute 'flashSession' is how the flash was previously set into the dependency injection container. +You need to start the :doc:`session ` first to successfully use the flashSession messenger. diff --git a/id/reference/forms.rst b/id/reference/forms.rst new file mode 100644 index 000000000000..980eec37baa4 --- /dev/null +++ b/id/reference/forms.rst @@ -0,0 +1,565 @@ +Forms +===== + +:code:`Phalcon\Forms` is a component that aids you in the creation and maintenance of forms in web applications. + +The following example shows its basic usage: + +.. code-block:: php + + add(new Text("name")); + + $form->add(new Text("telephone")); + + $form->add( + new Select( + "telephoneType", + array( + 'H' => 'Home', + 'C' => 'Cell' + ) + ) + ); + +Forms can be rendered based on the form definition: + +.. code-block:: html+php + +

Contacts

+ +
+ +

+ + render("name"); ?> +

+ +

+ + render("telephone"); ?> +

+ +

+ + render("telephoneType"); ?> +

+ +

+ +

+ +
+ +Each element in the form can be rendered as required by the developer. Internally, +:doc:`Phalcon\\Tag <../api/Phalcon_Tag>` is used to produce the correct HTML for each element and you can pass additional HTML attributes as the second parameter of :code:`render()`: + +.. code-block:: html+php + +

+ + render("name", array('maxlength' => 30, 'placeholder' => 'Type your name')); ?> +

+ +HTML attributes also can be set in the element's definition: + +.. code-block:: php + + add( + new Text( + "name", + array( + 'maxlength' => 30, + 'placeholder' => 'Type your name' + ) + ) + ); + +Initializing forms +------------------ +As seen before, forms can be initialized outside the form class by adding elements to it. You can re-use code or organize your form +classes implementing the form in a separated file: + +.. code-block:: php + + add(new Text("name")); + + $this->add(new Text("telephone")); + + $this->add( + new Select( + "telephoneType", + TelephoneTypes::find(), + array( + 'using' => array( + 'id', + 'name' + ) + ) + ) + ); + } + } + +:doc:`Phalcon\\Forms\\Form <../api/Phalcon_Forms_Form>` extends :doc:`Phalcon\\Di\\Injectable <../api/Phalcon_Di_Injectable>` +so you have access to the application services if needed: + +.. code-block:: php + + security->getToken(); + } + + public function initialize() + { + // Set the same form as entity + $this->setEntity($this); + + // Add a text element to capture the 'email' + $this->add(new Text("email")); + + // Add a text element to put a hidden CSRF + $this->add(new Hidden("csrf")); + } + } + +The associated entity added to the form in the initialization and custom user options are passed to the form constructor: + +.. code-block:: php + + add(new Hidden('id')); + } else { + $this->add(new Text('id')); + } + + $this->add(new Text('name')); + } + } + +In the form's instantiation you must use: + +.. code-block:: php + + true + ) + ); + +Validation +---------- +Phalcon forms are integrated with the :doc:`validation ` component to offer instant validation. Built-in or +custom validators could be set to each element: + +.. code-block:: php + + addValidator( + new PresenceOf( + array( + 'message' => 'The name is required' + ) + ) + ); + + $name->addValidator( + new StringLength( + array( + 'min' => 10, + 'messageMinimum' => 'The name is too short' + ) + ) + ); + + $form->add($name); + +Then you can validate the form according to the input entered by the user: + +.. code-block:: php + + isValid($_POST)) { + foreach ($form->getMessages() as $message) { + echo $message, '
'; + } + } + +Validators are executed in the same order as they were registered. + +By default messages generated by all the elements in the form are joined so they can be traversed using a single foreach, +you can change this behavior to get the messages separated by the field: + +.. code-block:: php + + getMessages(false) as $attribute => $messages) { + echo 'Messages generated by ', $attribute, ':', "\n"; + + foreach ($messages as $message) { + echo $message, '
'; + } + } + +Or get specific messages for an element: + +.. code-block:: php + + getMessagesFor('name') as $message) { + echo $message, '
'; + } + +Filtering +--------- +A form is also able to filter data before it is validated. You can set filters in each element: + +Setting User Options +-------------------- +Forms + Entities +---------------- +An entity such as a model/collection/plain instance or just a plain PHP class can be linked to the form in order to set default values +in the form's elements or assign the values from the form to the entity easily: + +.. code-block:: php + + add(new Text("name")); + + $form->add(new Text("year")); + +Once the form is rendered if there is no default values assigned to the elements it will use the ones provided by the entity: + +.. code-block:: html+php + + render('name'); ?> + +You can validate the form and assign the values from the user input in the following way: + +.. code-block:: php + + bind($_POST, $robot); + + // Check if the form is valid + if ($form->isValid()) { + + // Save the entity + $robot->save(); + } + +Setting up a plain class as entity also is possible: + +.. code-block:: php + + add( + new Select( + "timezone", + array( + 'America/New_York' => 'New York', + 'Europe/Amsterdam' => 'Amsterdam', + 'America/Sao_Paulo' => 'Sao Paulo', + 'Asia/Tokyo' => 'Tokyo' + ) + ) + ); + + $form->add( + new Select( + "receiveEmails", + array( + 'Yes' => 'Yes, please!', + 'No' => 'No, thanks' + ) + ) + ); + +Entities can implement getters, which have a higher precedence than public properties. These methods +give you more freedom to produce values: + +.. code-block:: php + + ` namespace: + ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Name | Description | Example | ++==============+==================================================================================================================================================================+===================================================================+ +| Text | Generate INPUT[type=text] elements | :doc:`Example <../api/Phalcon_Forms_Element_Text>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Password | Generate INPUT[type=password] elements | :doc:`Example <../api/Phalcon_Forms_Element_Password>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Select | Generate SELECT tag (combo lists) elements based on choices | :doc:`Example <../api/Phalcon_Forms_Element_Select>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Check | Generate INPUT[type=check] elements | :doc:`Example <../api/Phalcon_Forms_Element_Check>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Textarea | Generate TEXTAREA elements | :doc:`Example <../api/Phalcon_Forms_Element_TextArea>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Hidden | Generate INPUT[type=hidden] elements | :doc:`Example <../api/Phalcon_Forms_Element_Hidden>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| File | Generate INPUT[type=file] elements | :doc:`Example <../api/Phalcon_Forms_Element_File>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Date | Generate INPUT[type=date] elements | :doc:`Example <../api/Phalcon_Forms_Element_Date>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Numeric | Generate INPUT[type=number] elements | :doc:`Example <../api/Phalcon_Forms_Element_Numeric>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Submit | Generate INPUT[type=submit] elements | :doc:`Example <../api/Phalcon_Forms_Element_Submit>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ + +Event Callbacks +--------------- +Whenever forms are implemented as classes, the callbacks: :code:`beforeValidation()` and :code:`afterValidation()` can be implemented +in the form's class to perform pre-validations and post-validations: + +.. code-block:: html+php + + + getMessagesFor($element->getName()); + + if (count($messages)) { + // Print each element + echo '
'; + foreach ($messages as $message) { + echo $message; + } + echo '
'; + } + + echo '

'; + echo ''; + echo $element; + echo '

'; + + } + ?> + + + +Or reuse the logic in your form class: + +.. code-block:: php + + get($name); + + // Get any generated messages for the current element + $messages = $this->getMessagesFor($element->getName()); + + if (count($messages)) { + // Print each element + echo '
'; + foreach ($messages as $message) { + echo $this->flash->error($message); + } + echo '
'; + } + + echo '

'; + echo ''; + echo $element; + echo '

'; + } + } + +In the view: + +.. code-block:: php + + renderDecorated('name'); + + echo $element->renderDecorated('telephone'); + +Creating Form Elements +---------------------- +In addition to the form elements provided by Phalcon you can create your own custom elements: + +.. code-block:: php + + forms->set('login', new LoginForm()); + +Using the unique name, forms can be accessed in any part of the application: + +.. code-block:: php + + forms->get('login')->render(); + +External Resources +------------------ +* `Vökuró `_, is a sample application that uses the forms builder to create and manage forms, [`Github `_] diff --git a/id/reference/install.rst b/id/reference/install.rst new file mode 100755 index 000000000000..89623766745f --- /dev/null +++ b/id/reference/install.rst @@ -0,0 +1,166 @@ +Installation +============ +PHP extensions require a slightly different installation method to a traditional PHP-based library or framework. +You can either download a binary package for the system of your choice or build it from the sources. + +Windows +------- +To use phalcon on Windows you can download_ a DLL library. Edit your php.ini file and then append at the end: + +.. code-block:: bash + + extension=php_phalcon.dll + +Restart your webserver. + +The following screencast is a step-by-step guide to install Phalcon on Windows: + +.. raw:: html + +
+ +Related Guides +^^^^^^^^^^^^^^ +.. toctree:: + :maxdepth: 1 + + xampp + wamp + +Linux/Solaris +------------- +On a Linux/Solaris system you can easily compile and install the extension from the source code: + +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) + +Specific packages for common platforms: + +.. code-block:: bash + + # Ubuntu + sudo apt-get install php5-dev libpcre3-dev gcc make php5-mysql + + # Suse + sudo yast -i gcc make autoconf 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 + +Compilation +^^^^^^^^^^^ +Creating the extension: + +.. code-block:: bash + + git clone --depth=1 git://github.com/phalcon/cphalcon.git + cd cphalcon/build + sudo ./install + +Add extension to your PHP configuration: + +.. code-block:: bash + + # Suse: Add a file called phalcon.ini in /etc/php5/conf.d/ with this content: + extension=phalcon.so + + # CentOS/RedHat/Fedora: Add a file called phalcon.ini in /etc/php.d/ with this content: + extension=phalcon.so + + # Ubuntu/Debian with apache2: Add a file called 30-phalcon.ini in /etc/php5/apache2/conf.d/ with this content: + extension=phalcon.so + + # Ubuntu/Debian with php5-fpm: Add a file called 30-phalcon.ini in /etc/php5/fpm/conf.d/ with this content: + extension=phalcon.so + + # Ubuntu/Debian with php5-cli: Add a file called 30-phalcon.ini in /etc/php5/cli/conf.d/ with this content: + extension=phalcon.so + +Restart the webserver. + +If you are running Ubuntu/Debian with php5-fpm, restart it: + +.. code-block:: bash + + sudo service php5-fpm restart + +Phalcon automatically detects your architecture, however, you can force the compilation for a specific architecture: + +.. code-block:: bash + + cd cphalcon/build + sudo ./install 32bits + sudo ./install 64bits + sudo ./install safe + +If the automatic installer fails try building the extension manually: + +.. code-block:: bash + + cd cphalcon/build/64bits + export CFLAGS="-O2 --fvisibility=hidden" + ./configure --enable-phalcon + make && sudo make install + +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.4 development resources +* XCode + +.. code-block:: bash + + # brew + brew tap homebrew/homebrew-php + brew install php54-phalcon + brew install php55-phalcon + brew install php56-phalcon + + # MacPorts + sudo port install php54-phalcon + sudo port install php55-phalcon + sudo port install php56-phalcon + +Add extension to your PHP configuration. + +FreeBSD +------- +A port is available for FreeBSD. Just only need these simple line commands to install it: + +.. code-block:: bash + + pkg_add -r phalcon + +or + +.. code-block:: bash + + export CFLAGS="-O2 --fvisibility=hidden" + cd /usr/ports/www/phalcon && make install clean + +Installation Notes +------------------ +Installation notes for Web Servers: + +.. toctree:: + :maxdepth: 1 + + apache + nginx + cherokee + built-in + +.. _download: http://phalconphp.com/en/download diff --git a/id/reference/intl.rst b/id/reference/intl.rst new file mode 100755 index 000000000000..dcd7e7fb9856 --- /dev/null +++ b/id/reference/intl.rst @@ -0,0 +1,119 @@ +Internationalization +==================== + +Phalcon is written in C as an extension for PHP. There is a PECL_ extension that offers internationalization functions to PHP applications called intl_. +Starting from PHP 5.4/5.5 this extension is bundled with PHP. Its documentation can be found in the pages of the official `PHP manual`_. + +Phalcon does not offer this functionality, since creating such a component would be replicating existing code. + +In the examples below, we will show you how to implement the intl_ extension's functionality into Phalcon powered applications. + +.. highlights:: + This guide is not intended to be a complete documentation of the intl_ extension. Please visit its the documentation_ of the extension for a reference. + +Find out best available Locale +------------------------------ +There are several ways to find out the best available locale using intl_. One of them is to check the HTTP "Accept-Language" header: + +.. code-block:: php + + format(array(4560)); + + // Prints USD$ 4,560.5 + $formatter = new MessageFormatter("en_US", "USD$ {0, number}"); + echo $formatter->format(array(4560.50)); + + // Prints ARS$ 1.250,25 + $formatter = new MessageFormatter("es_AR", "ARS$ {0, number}"); + echo $formatter->format(array(1250.25)); + +Message formatting using time and date patterns: + +.. code-block:: php + + format($values); + + // Prints "À 15:53:01 le 19 avr. 2015, il y avait une perturbation sur la planète 7." + $pattern = "À {1, time} le {1, date}, il y avait une perturbation sur la planète {0, number}."; + $formatter = new MessageFormatter("fr_FR", $pattern); + echo $formatter->format($values); + +Locale-Sensitive comparison +--------------------------- +The Collator_ class provides string comparison capability with support for appropriate locale-sensitive sort orderings. Check the +examples below on the usage of this class: + +.. code-block:: php + + setStrength(Collator::PRIMARY); + var_dump($collator->compare("una canción", "una cancion")); + + // Returns that the strings are not equal + $collator->setStrength(Collator::DEFAULT_VALUE); + var_dump($collator->compare("una canción", "una cancion")); + +Transliteration +--------------- +Transliterator_ provides transliteration of strings: + +.. code-block:: php + + transliterate($string); // garconetudiantoulecole + +.. _PECL: http://pecl.php.net/package/intl +.. _intl: http://pecl.php.net/package/intl +.. _PHP manual: http://www.php.net/manual/en/intro.intl.php +.. _documentation: http://www.php.net/manual/en/book.intl.php +.. _MessageFormatter: http://www.php.net/manual/en/class.messageformatter.php +.. _Collator: http://www.php.net/manual/en/class.collator.php +.. _Transliterator: http://www.php.net/manual/en/class.transliterator.php diff --git a/id/reference/license.rst b/id/reference/license.rst new file mode 100755 index 000000000000..82052114cfe7 --- /dev/null +++ b/id/reference/license.rst @@ -0,0 +1,15 @@ +License +======= + +Phalcon is brought to you by the Phalcon Team! [`Twitter`_ - `Google Plus`_ - `Github`_] + +The Phalcon PHP Framework is released under the `new BSD license`_. Except where otherwise noted, content on +this site is licensed under the `Creative Commons Attribution 3.0 License`_. + +If you love Phalcon please return something to the community! :) + +.. _Twitter: https://twitter.com/#!/phalconphp +.. _Google Plus: https://plus.google.com/u/0/102376109340560896457/posts +.. _Github: https://github.com/phalcon +.. _new BSD license: https://github.com/phalcon/cphalcon/blob/master/docs/LICENSE.md +.. _Creative Commons Attribution 3.0 License: http://creativecommons.org/licenses/by/3.0/ diff --git a/id/reference/linuxtools.rst b/id/reference/linuxtools.rst new file mode 100644 index 000000000000..cb168e378374 --- /dev/null +++ b/id/reference/linuxtools.rst @@ -0,0 +1,41 @@ +Phalcon Developer Tools di Linux +================================ + +Langkah berikut akan memandu anda melalui proses menginstal Phalcon Developer Tools untuk Linux. + +Prasyarat +--------- +Ekstensi PHP Phalcon diperlukan untuk menjalankan Phalcon Tools. Jika belum menginstall, silakan lihat :doc:`Installation ` untuk instruksi. + +Download +-------- +Anda dapat mendownload cross platform package berisi developer tools dari bagian Download_. Anda dapat juga clone dari Github_. + +Buka terminal dan ketik perintah berikut: + +.. figure:: ../_static/img/linux-1.png + :align: center + +Lalu masuk ke folder di mana tools diclone dan jalankan ". ./phalcon.sh", (Jangan lupa titik di awal perintah): + +.. figure:: ../_static/img/linux-2.png + :align: center + +Buat symbolink ke script phalcon.php: + +.. code-block:: bash + + ln -s ~/phalcon-devtools/phalcon.php /usr/bin/phalcon + + chmod ugo+x /usr/bin/phalcon + +Selamat Phalcon tools anda sudah terinstall! + +Panduan Terkait +^^^^^^^^^^^^^^^ +* :doc:`Menggunakan Developer Tools ` +* :doc:`Instalasi pada Windows ` +* :doc:`Instalasi pada Mac ` + +.. _Download: http://phalconphp.com/download +.. _Github: https://github.com/phalcon/phalcon-devtools diff --git a/id/reference/loader.rst b/id/reference/loader.rst new file mode 100755 index 000000000000..27bfd906acb9 --- /dev/null +++ b/id/reference/loader.rst @@ -0,0 +1,270 @@ +Universal Class Loader +====================== + +:doc:`Phalcon\\Loader <../api/Phalcon_Loader>` is a component that allows you to load project classes automatically, +based on some predefined rules. Since this component is written in C, it provides the lowest overhead in +reading and interpreting external PHP files. + +The behavior of this component is based on the PHP's capability of `autoloading classes`_. If a class that does +not exist is used in any part of the code, a special handler will try to load it. +:doc:`Phalcon\\Loader <../api/Phalcon_Loader>` serves as the special handler for this operation. +By loading classes on a need to load basis, the overall performance is increased since the only file +reads that occur are for the files needed. This technique is called `lazy initialization`_. + +With this component you can load files from other projects or vendors, this autoloader is `PSR-0 `_ and `PSR-4 `_ compliant. + +:doc:`Phalcon\\Loader <../api/Phalcon_Loader>` offers four options to autoload classes. You can use them one at a time or combine them. + +Registering Namespaces +---------------------- +If you're organizing your code using namespaces, or external libraries do so, the registerNamespaces() provides the autoloading mechanism. It +takes an associative array, which keys are namespace prefixes and their values are directories where the classes are located in. The namespace +separator will be replaced by the directory separator when the loader try to find the classes. Remember always to add a trailing slash at +the end of the paths. + +.. code-block:: php + + registerNamespaces( + array( + "Example\Base" => "vendor/example/base/", + "Example\Adapter" => "vendor/example/adapter/", + "Example" => "vendor/example/" + ) + ); + + // Register autoloader + $loader->register(); + + // The required class will automatically include the + // file vendor/example/adapter/Some.php + $some = new Example\Adapter\Some(); + +Registering Prefixes +-------------------- +This strategy is similar to the namespaces strategy. It takes an associative array, which keys are prefixes and their values are directories +where the classes are located in. The namespace separator and the "_" underscore character will be replaced by the directory separator when +the loader try to find the classes. Remember always to add a trailing slash at the end of the paths. + +.. code-block:: php + + registerPrefixes( + array( + "Example_Base" => "vendor/example/base/", + "Example_Adapter" => "vendor/example/adapter/", + "Example_" => "vendor/example/" + ) + ); + + // Register autoloader + $loader->register(); + + // The required class will automatically include the + // file vendor/example/adapter/Some.php + $some = new Example_Adapter_Some(); + +Registering Directories +----------------------- +The third option is to register directories, in which classes could be found. This option is not recommended in terms of performance, +since Phalcon will need to perform a significant number of file stats on each folder, looking for the file with the same name as the class. +It's important to register the directories in relevance order. Remember always add a trailing slash at the end of the paths. + +.. code-block:: php + + registerDirs( + array( + "library/MyComponent/", + "library/OtherComponent/Other/", + "vendor/example/adapters/", + "vendor/example/" + ) + ); + + // Register autoloader + $loader->register(); + + // The required class will automatically include the file from + // the first directory where it has been located + // i.e. library/OtherComponent/Other/Some.php + $some = new Some(); + +Registering Classes +------------------- +The last option is to register the class name and its path. This autoloader can be very useful when the folder convention of the +project does not allow for easy retrieval of the file using the path and the class name. This is the fastest method of autoloading. +However the more your application grows, the more classes/files need to be added to this autoloader, which will effectively make +maintenance of the class list very cumbersome and it is not recommended. + +.. code-block:: php + + registerClasses( + array( + "Some" => "library/OtherComponent/Other/Some.php", + "Example\Base" => "vendor/example/adapters/Example/BaseClass.php" + ) + ); + + // Register autoloader + $loader->register(); + + // Requiring a class will automatically include the file it references + // in the associative array + // i.e. library/OtherComponent/Other/Some.php + $some = new Some(); + +Additional file extensions +-------------------------- +Some autoloading strategies such as "prefixes", "namespaces" or "directories" automatically append the "php" extension at the end of the checked file. If you +are using additional extensions you could set it with the method "setExtensions". Files are checked in the order as it were defined: + +.. code-block:: php + + setExtensions(array("php", "inc", "phb")); + +Modifying current strategies +---------------------------- +Additional auto-loading data can be added to existing values in the following way: + +.. code-block:: php + + registerDirs( + array( + "../app/library/", + "../app/plugins/" + ), + true + ); + +Passing "true" as second parameter will merge the current values with new ones in any strategy. + +Security Layer +-------------- +:doc:`Phalcon\\Loader <../api/Phalcon_Loader>` offers a security layer sanitizing by default class names avoiding possible inclusion of unauthorized files. +Consider the following example: + +.. code-block:: php + + ` removes any invalid character from the class name +reducing the possibility of being attacked. + +Autoloading Events +------------------ +In the following example, the EventsManager is working with the class loader, allowing us to obtain debugging information regarding the flow of operation: + +.. code-block:: php + + registerNamespaces( + array( + 'Example\\Base' => 'vendor/example/base/', + 'Example\\Adapter' => 'vendor/example/adapter/', + 'Example' => 'vendor/example/' + ) + ); + + // Listen all the loader events + $eventsManager->attach('loader', function ($event, $loader) { + if ($event->getType() == 'beforeCheckPath') { + echo $loader->getCheckedPath(); + } + }); + + $loader->setEventsManager($eventsManager); + + $loader->register(); + +Some events when returning boolean false could stop the active operation. The following events are supported: + ++------------------+---------------------------------------------------------------------------------------------------------------------+---------------------+ +| Event Name | Triggered | Can stop operation? | ++==================+=====================================================================================================================+=====================+ +| beforeCheckClass | Triggered before starting the autoloading process | Yes | ++------------------+---------------------------------------------------------------------------------------------------------------------+---------------------+ +| pathFound | Triggered when the loader locate a class | No | ++------------------+---------------------------------------------------------------------------------------------------------------------+---------------------+ +| afterCheckClass | Triggered after finish the autoloading process. If this event is launched the autoloader didn't find the class file | No | ++------------------+-----------------------------------------------------------+---------------------------------------------------------+---------------------+ + +Troubleshooting +--------------- +Some things to keep in mind when using the universal autoloader: + +* Auto-loading process is case-sensitive, the class will be loaded as it is written in the code +* Strategies based on namespaces/prefixes are faster than the directories strategy +* If a cache bytecode like APC_ is installed this will used to retrieve the requested file (an implicit caching of the file is performed) + +.. _autoloading classes: http://www.php.net/manual/en/language.oop5.autoload.php +.. _lazy initialization: http://en.wikipedia.org/wiki/Lazy_initialization +.. _APC: http://php.net/manual/en/book.apc.php diff --git a/id/reference/logging.rst b/id/reference/logging.rst new file mode 100755 index 000000000000..be5a340a1ec8 --- /dev/null +++ b/id/reference/logging.rst @@ -0,0 +1,258 @@ +Logging +======= + +:doc:`Phalcon\\Logger <../api/Phalcon_Logger>` adalah komponen yang kegunaannya menyediakan layanan logging bagi aplikasi. Ia menyediakan logging ke backend berbeda dengan adapter berbeda. Ia juga menyediakan logging transaksi, opsi konfigurasi format berbeda dan filter. Anda dapat menggunakan :doc:`Phalcon\\Logger <../api/Phalcon_Logger>` untuk semua kebutuhan logging aplikasi Anda, mulai debugging proses hingga melacak alir aplikasi. + +Adapter +------- +Komponen ini memanfaatkan adapter untuk menyimpan pesan log. Penggunaan adapter memungkinkan antar muka umum bagi logging memudahkan berpindah backend jika diperlukan. Adapter yang didukung: + ++---------+---------------------------+----------------------------------------------------------------------------------+ +| Adapter | Deskripsi | API | ++=========+===========================+==================================================================================+ +| File | Log ke plain text file | :doc:`Phalcon\\Logger\\Adapter\\File <../api/Phalcon_Logger_Adapter_File>` | ++---------+---------------------------+----------------------------------------------------------------------------------+ +| Stream | Log ke PHP Streams | :doc:`Phalcon\\Logger\\Adapter\\Stream <../api/Phalcon_Logger_Adapter_Stream>` | ++---------+---------------------------+----------------------------------------------------------------------------------+ +| Syslog | Log ke system logger | :doc:`Phalcon\\Logger\\Adapter\\Syslog <../api/Phalcon_Logger_Adapter_Syslog>` | ++---------+---------------------------+----------------------------------------------------------------------------------+ +| Firephp | Log ke FirePHP | :doc:`Phalcon\\Logger\\Adapter\\FirePHP <../api/Phalcon_Logger_Adapter_Firephp>` | ++---------+---------------------------+----------------------------------------------------------------------------------+ + +Menciptakan Log +--------------- +Contoh berikut menunjukkan bagaimana menciptakan sebuah log dan menambah pesan kedalamnya: + +.. code-block:: php + + critical("This is a critical message"); + $logger->emergency("This is an emergency message"); + $logger->debug("This is a debug message"); + $logger->error("This is an error message"); + $logger->info("This is an info message"); + $logger->notice("This is a notice message"); + $logger->warning("This is a warning message"); + $logger->alert("This is an alert message"); + + // Anda dapat menggunakan metode log() dengan Logger constant: + $logger->log("This is another error message", Logger::ERROR); + + // Jika tidak ditentukan diasumsikan Logger::DEBUG. + $logger->log("This is a message"); + +Log yang dihasilkan seperti berikut: + +.. code-block:: none + + [Tue, 28 Jul 15 22:09:02 -0500][CRITICAL] This is a critical message + [Tue, 28 Jul 15 22:09:02 -0500][EMERGENCY] This is an emergency message + [Tue, 28 Jul 15 22:09:02 -0500][DEBUG] This is a debug message + [Tue, 28 Jul 15 22:09:02 -0500][ERROR] This is an error message + [Tue, 28 Jul 15 22:09:02 -0500][INFO] This is an info message + [Tue, 28 Jul 15 22:09:02 -0500][NOTICE] This is a notice message + [Tue, 28 Jul 15 22:09:02 -0500][WARNING] This is a warning message + [Tue, 28 Jul 15 22:09:02 -0500][ALERT] This is an alert message + [Tue, 28 Jul 15 22:09:02 -0500][ERROR] This is another error message + [Tue, 28 Jul 15 22:09:02 -0500][DEBUG] This is a message + +Anda dapat mengatur level log menggunakan metode :code:`setLogLevel()`. Metode ini membutuhkan Logger constant dan hanya akan menyimpan pesan log yang sama atau lebih penting dari nilai konstan: + +.. code-block:: php + + use Phalcon\Logger; + use Phalcon\Logger\Adapter\File as FileAdapter; + + $logger = new FileAdapter("app/logs/test.log"); + + $logger->setLogLevel(Logger::CRITICAL); + +Di contoh di atas, hanya pesan kritis dan darurat yang akan disimpan di log. Defaultnya, semua disimpan. + +Transaksi +--------- +Logging data ke adapter misal File (file system) adalah operasi mahal ditinjau dari sisi performa. Untuk melawannya, anda dapat menggunakan transaksi logging. Transaksi menyimpan data log sementara di memori yang nanti ditulis ke adapter terkait (dalam hal ini File) dalam operasi atomik tunggal. + +.. code-block:: php + + begin(); + + // Tambahkan pesan + $logger->alert("This is an alert"); + $logger->error("This is another error"); + + // Commit pesan ke file + $logger->commit(); + +Logging ke Handlers lebih dari satu +----------------------------------- +:doc:`Phalcon\\Logger <../api/Phalcon_Logger>` dapat mengirim pesan ke handler lebih dari satu dengan sekali pemanggilan: + +.. code-block:: php + + push(new FileAdapter('test.log')); + $logger->push(new StreamAdapter('php://stdout')); + + $logger->log("This is a message"); + $logger->log("This is an error", Logger::ERROR); + $logger->error("This is another error"); + +Pesan tersebut akan dikirim ke handler sesuai urutan pendaftarannya. + +Format Pesan +------------ +Komponen ini menggunakan 'formatters' untuk mengatur format pesan sebelum dikirim ke backend. Formatter yang tersedia: + ++---------+----------------------------------------------------------+--------------------------------------------------------------------------------------+ +| Adapter | Keterangan | API | ++=========+==========================================================+======================================================================================+ +| Line | Format pesan dengan string satu baris | :doc:`Phalcon\\Logger\\Formatter\\Line <../api/Phalcon_Logger_Formatter_Line>` | ++---------+----------------------------------------------------------+--------------------------------------------------------------------------------------+ +| Firephp | Format pesan agar dapat dikirim ke FirePHP | :doc:`Phalcon\\Logger\\Formatter\\Firephp <../api/Phalcon_Logger_Formatter_Firephp>` | ++---------+----------------------------------------------------------+--------------------------------------------------------------------------------------+ +| Json | Siapkan pesan untuk di encode sebagai JSON | :doc:`Phalcon\\Logger\\Formatter\\Json <../api/Phalcon_Logger_Formatter_Json>` | ++---------+----------------------------------------------------------+--------------------------------------------------------------------------------------+ +| Syslog | Siapkan pesan untuk diirim ke syslog | :doc:`Phalcon\\Logger\\Formatter\\Syslog <../api/Phalcon_Logger_Formatter_Syslog>` | ++---------+----------------------------------------------------------+--------------------------------------------------------------------------------------+ + +Line Formatter +^^^^^^^^^^^^^^ +Format pesan menggunakan string satu baris. Default format logging adalah: + +.. code-block:: none + + [%date%][%type%] %message% + +Anda dapat mengubah format default dengan :code:`setFormat()`, ini memungkinkan anda mengubah format pesan log dengan mendefinsikan format anda sendiri. Format variabel yang diizinkan adalah: + ++-----------+------------------------------------------+ +| Variabel | Keterangan | ++===========+==========================================+ +| %message% | Pesan yang akan di log | ++-----------+------------------------------------------+ +| %date% | Tanggal pesan ditambahkan | ++-----------+------------------------------------------+ +| %type% | Tipe pesan dalam format uppercase | ++-----------+------------------------------------------+ + +Contoh di bawah menunjukkan bagaimana mengubah format log: + +.. code-block:: php + + setFormatter($formatter); + +Membuat formatter Anda sendiri +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Interface :doc:`Phalcon\\Logger\\FormatterInterface <../api/Phalcon_Logger_FormatterInterface>` harus diimplementasi untuk dapat menciptakan formatter logger Anda atau mengubah yang sudah ada. + +Adapters +-------- +Contoh berikut menunjukkan penggunaan dasar masing-masing adapter: + +Stream Logger +^^^^^^^^^^^^^ +Stream logger menulis pesan ke stream yang valid dalam PHP. Daftar stream yang tersedia `di sini `_: + +.. code-block:: php + + 'w' + ) + ); + +Syslog Logger +^^^^^^^^^^^^^ +Logger ini mengirim pesan ke system logger. Perilaku syslog bisa jadi berbeda antara satu sistem operasi dengan lainnya. + +.. code-block:: php + + LOG_NDELAY, + 'facility' => LOG_MAIL + ) + ); + +FirePHP Logger +^^^^^^^^^^^^^^ +Logger ini mengirim pesan ke HTTP response headers yang ditampilkan oleh `FirePHP `_, +sebuah ekstensi `Firebug `_ untuk Firefox. + +.. code-block:: php + + log("This is a message"); + $logger->log("This is an error", Logger::ERROR); + $logger->error("This is another error"); + +Membuat adapter anda sendiri +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Interface :doc:`Phalcon\\Logger\\AdapterInterface <../api/Phalcon_Logger_AdapterInterface>` harus diimplementasi untuk dapat menciptakan adapter logger Anda sendiri atau mengubah yang sudah ada. diff --git a/id/reference/mactools.rst b/id/reference/mactools.rst new file mode 100644 index 000000000000..f6eb973b3a8a --- /dev/null +++ b/id/reference/mactools.rst @@ -0,0 +1,70 @@ +Phalcon Developer Tools on Mac OS X +=================================== + +These steps will guide you through the process of installing Phalcon Developer Tools for OS/X. + +Prerequisites +------------- +The Phalcon PHP extension is required to run Phalcon Tools. If you haven't installed it yet, please see the :doc:`Installation ` section for instructions. + +Download +-------- +You can download a cross platform package containing the developer tools from the `Download`_ section. You can also clone it from `Github`_. + +Open the terminal application: + +.. figure:: ../_static/img/mac-1.png + :align: center + +Copy & Paste the commands below in your terminal: + +.. code-block:: bash + + wget -q --no-check-certificate -O phalcon-tools.zip http://github.com/phalcon/phalcon-devtools/zipball/master + unzip -q phalcon-tools.zip + mv phalcon-phalcon-devtools-* phalcon-tools + +Check where the phalcon-tools directory was installed using a *pwd* command in your terminal: + +.. figure:: ../_static/img/mac-2.png + :align: center + +On the Mac platform, you need to configure your user PATH to include Phalcon tools. Edit your .profile and append the Phalcon tools path to the environment variable PATH: + +.. figure:: ../_static/img/mac-3.png + :align: center + +Insert these two lines at the end of the file: + +.. code-block:: bash + + export PATH=$PATH:/Users/scott/phalcon-tools + export PTOOLSPATH=/Users/scott/phalcon-tools + +The .profile should look like this: + +.. figure:: ../_static/img/mac-4.png + :align: center + +Save your changes and close the editor. In the terminal window, type the following commands to create a symbolic link to the phalcon.php script: + +.. code-block:: bash + + ln -s ~/phalcon-tools/phalcon.php ~/phalcon-tools/phalcon + chmod +x ~/phalcon-tools/phalcon + +Type the command "phalcon" and you will see something like this: + +.. figure:: ../_static/img/mac-5.png + :align: center + +Congratulations you now have Phalcon tools installed! + +Related Guides +^^^^^^^^^^^^^^ +* :doc:`Using Developer Tools ` +* :doc:`Installation on Windows ` +* :doc:`Installation on Linux ` + +.. _Download: http://phalconphp.com/download +.. _Github: https://github.com/phalcon/phalcon-devtools diff --git a/id/reference/micro.rst b/id/reference/micro.rst new file mode 100644 index 000000000000..b84ce6c82c8b --- /dev/null +++ b/id/reference/micro.rst @@ -0,0 +1,693 @@ +Micro Applications +================== + +With Phalcon you can create "Micro-Framework like" applications. By doing this, you only need to write a minimal amount of +code to create a PHP application. Micro applications are suitable to implement small applications, APIs and +prototypes in a practical way. + +.. code-block:: php + + get('/say/welcome/{name}', function ($name) { + echo "

Welcome $name!

"; + }); + + $app->handle(); + +Creating a Micro Application +---------------------------- +:doc:`Phalcon\\Mvc\\Micro <../api/Phalcon_Mvc_Micro>` is the class responsible for implementing a micro application. + +.. code-block:: php + + ` manages routing internally. +Routes must always start with /. A HTTP method constraint is optionally required when defining routes, so as to instruct +the router to match only if the request also matches the HTTP methods. The following example shows how to define +a route for the method GET: + +.. code-block:: php + + get('/say/hello/{name}', function ($name) { + echo "

Hello! $name

"; + }); + +The "get" method indicates that the associated HTTP method is GET. The route :code:`/say/hello/{name}` also has a parameter :code:`{$name}` that is passed +directly to the route handler (the anonymous function). Handlers are executed when a route is matched. A handler could be +any callable item in the PHP userland. The following example shows how to define different types of handlers: + +.. code-block:: php + + Hello! $name"; + } + + $app->get('/say/hello/{name}', "say_hello"); + + // With a static method + $app->get('/say/hello/{name}', "SomeClass::someSayMethod"); + + // With a method in an object + $myController = new MyController(); + $app->get('/say/hello/{name}', array($myController, "someAction")); + + // Anonymous function + $app->get('/say/hello/{name}', function ($name) { + echo "

Hello! $name

"; + }); + +:doc:`Phalcon\\Mvc\\Micro <../api/Phalcon_Mvc_Micro>` provides a set of methods to define the HTTP method (or methods) +which the route is constrained for: + +.. code-block:: php + + get('/api/products', "get_products"); + + // Matches if the HTTP method is POST + $app->post('/api/products/add', "add_product"); + + // Matches if the HTTP method is PUT + $app->put('/api/products/update/{id}', "update_product"); + + // Matches if the HTTP method is DELETE + $app->delete('/api/products/remove/{id}', "delete_product"); + + // Matches if the HTTP method is OPTIONS + $app->options('/api/products/info/{id}', "info_product"); + + // Matches if the HTTP method is PATCH + $app->patch('/api/products/update/{id}', "info_product"); + + // Matches if the HTTP method is GET or POST + $app->map('/repos/store/refs', "action_product")->via(array('GET', 'POST')); + +To access the HTTP method data :code:`$app` needs to be passed into the closure: + +.. code-block:: php + + post('/api/products/add', function () use ($app) { + echo $app->request->getPost("productID"); + }); + +Routes with Parameters +^^^^^^^^^^^^^^^^^^^^^^ +Defining parameters in routes is very easy as demonstrated above. The name of the parameter has to be enclosed in brackets. Parameter +formatting is also available using regular expressions to ensure consistency of data. This is demonstrated in the example below: + +.. code-block:: php + + get('/posts/{year:[0-9]+}/{title:[a-zA-Z\-]+}', function ($year, $title) { + echo "

Title: $title

"; + echo "

Year: $year

"; + }); + +Starting Route +^^^^^^^^^^^^^^ +Normally, the starting route in an application is the route /, and it will more frequent to be accessed by the method GET. +This scenario is coded as follows: + +.. code-block:: php + + get('/', function () { + echo "

Welcome!

"; + }); + +Rewrite Rules +^^^^^^^^^^^^^ +The following rules can be used together with Apache to rewrite the URis: + +.. code-block:: apacheconf + + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + + +Working with Responses +---------------------- +You are free to produce any kind of response in a handler: directly make an output, use a template engine, include a view, +return a json, etc.: + +.. code-block:: php + + get('/say/hello', function () { + echo "

Hello! $name

"; + }); + + // Requiring another file + $app->get('/show/results', function () { + require 'views/results.php'; + }); + + // Returning JSON + $app->get('/get/some-json', function () { + echo json_encode( + array( + "some", + "important", + "data" + ) + ); + }); + +In addition to that, you have access to the service :doc:`"response" `, with which you can manipulate better the +response: + +.. code-block:: php + + get('/show/data', function () use ($app) { + + // Set the Content-Type header + $app->response->setContentType('text/plain')->sendHeaders(); + + // Print a file + readfile("data.txt"); + }); + +Or create a response object and return it from the handler: + +.. code-block:: php + + get('/show/data', function () { + + // Create a response + $response = new Phalcon\Http\Response(); + + // Set the Content-Type header + $response->setContentType('text/plain'); + + // Pass the content of a file + $response->setContent(file_get_contents("data.txt")); + + // Return the response + return $response; + }); + +Making redirections +------------------- +Redirections could be performed to forward the execution flow to another route: + +.. code-block:: php + + post('/old/welcome', function () use ($app) { + $app->response->redirect("new/welcome")->sendHeaders(); + }); + + $app->post('/new/welcome', function () use ($app) { + echo 'This is the new Welcome'; + }); + +Generating URLs for Routes +-------------------------- +:doc:`Phalcon\\Mvc\\Url ` can be used to produce URLs based on the defined routes. You need to set up a name for the route; +by this way the "url" service can produce the corresponding URL: + +.. code-block:: php + + get('/blog/{year}/{title}', function ($year, $title) use ($app) { + + // ... Show the post here + + })->setName('show-post'); + + // Produce a URL somewhere + $app->get('/', function () use ($app) { + + echo 'Show the post'; + + }); + +Interacting with the Dependency Injector +---------------------------------------- +In the micro application, a :doc:`Phalcon\\Di\\FactoryDefault ` services container is created implicitly; additionally you +can create outside the application a container to manipulate its services: + +.. code-block:: php + + set('config', function () { + return new IniConfig("config.ini"); + }); + + $app = new Micro(); + + $app->setDI($di); + + $app->get('/', function () use ($app) { + // Read a setting from the config + echo $app->config->app_name; + }); + + $app->post('/contact', function () use ($app) { + $app->flash->success('Yes!, the contact was made!'); + }); + +The array-syntax is allowed to easily set/get services in the internal services container: + +.. code-block:: php + + "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "test_db" + ) + ); + }; + + $app->get('/blog', function () use ($app) { + $news = $app['db']->query('SELECT * FROM news'); + foreach ($news as $new) { + echo $new->title; + } + }); + +Not-Found Handler +----------------- +When a user tries to access a route that is not defined, the micro application will try to execute the "Not-Found" handler. +An example of that behavior is below: + +.. code-block:: php + + notFound(function () use ($app) { + $app->response->setStatusCode(404, "Not Found")->sendHeaders(); + echo 'This is crazy, but this page was not found!'; + }); + +Models in Micro Applications +---------------------------- +:doc:`Models ` can be used transparently in Micro Applications, only is required an autoloader to load models: + +.. code-block:: php + + registerDirs( + array( + __DIR__ . '/models/' + ) + )->register(); + + $app = new \Phalcon\Mvc\Micro(); + + $app->get('/products/find', function () { + + foreach (Products::find() as $product) { + echo $product->name, '
'; + } + + }); + + $app->handle(); + +Micro Application Events +------------------------ +:doc:`Phalcon\\Mvc\\Micro <../api/Phalcon_Mvc_Micro>` is able to send events to the :doc:`EventsManager ` (if it is present). +Events are triggered using the type "micro". The following events are supported: + ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| Event Name | Triggered | Can stop operation? | ++=====================+============================================================================================================================+======================+ +| beforeHandleRoute | The main method is just called, at this point the application doesn't know if there is some matched route | Yes | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| beforeExecuteRoute | A route has been matched and it contains a valid handler, at this point the handler has not been executed | Yes | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| afterExecuteRoute | Triggered after running the handler | No | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| beforeNotFound | Triggered when any of the defined routes match the requested URI | Yes | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| afterHandleRoute | Triggered after completing the whole process in a successful way | Yes | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ + +In the following example, we explain how to control the application security using events: + +.. code-block:: php + + attach('micro', function ($event, $app) { + + if ($event->getType() == 'beforeExecuteRoute') { + if ($app->session->get('auth') == false) { + + $app->flashSession->error("The user isn't authenticated"); + $app->response->redirect("/")->sendHeaders(); + + // Return (false) stop the operation + return false; + } + } + }); + + $app = new Micro(); + + // Bind the events manager to the app + $app->setEventsManager($eventsManager); + +Middleware events +----------------- +In addition to the events manager, events can be added using the methods 'before', 'after' and 'finish': + +.. code-block:: php + + before(function () use ($app) { + if ($app['session']->get('auth') == false) { + + $app['flashSession']->error("The user isn't authenticated"); + $app['response']->redirect("/error"); + + // Return false stops the normal execution + return false; + } + + return true; + }); + + $app->map('/api/robots', function () { + return array( + 'status' => 'OK' + ); + }); + + $app->after(function () use ($app) { + // This is executed after the route is executed + echo json_encode($app->getReturnedValue()); + }); + + $app->finish(function () use ($app) { + // This is executed when the request has been served + }); + +You can call the methods several times to add more events of the same type: + +.. code-block:: php + + finish(function () use ($app) { + // First 'finish' middleware + }); + + $app->finish(function () use ($app) { + // Second 'finish' middleware + }); + +Code for middlewares can be reused using separate classes: + +.. code-block:: php + + getRewriteUri()); + + // Check if the request is cached + if ($cache->exists($key)) { + echo $cache->get($key); + + return false; + } + + return true; + } + } + +Then add the instance to the application: + +.. code-block:: php + + before(new CacheMiddleware()); + +The following middleware events are available: + ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| Event Name | Triggered | Can stop operation? | ++=====================+============================================================================================================================+======================+ +| before | Before executing the handler. It can be used to control the access to the application | Yes | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| after | Executed after the handler is executed. It can be used to prepare the response | No | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ +| finish | Executed after sending the response. It can be used to perform clean-up | No | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+----------------------+ + +Using Controllers as Handlers +----------------------------- +Medium applications using the :code:`Mvc\Micro` approach may require organize handlers in controllers. +You can use :doc:`Phalcon\\Mvc\\Micro\\Collection <../api/Phalcon_Mvc_Micro_Collection>` to group handlers that belongs to controllers: + +.. code-block:: php + + setHandler(new PostsController()); + + // Set a common prefix for all routes + $posts->setPrefix('/posts'); + + // Use the method 'index' in PostsController + $posts->get('/', 'index'); + + // Use the method 'show' in PostsController + $posts->get('/show/{slug}', 'show'); + + $app->mount($posts); + +The controller 'PostsController' might look like this: + +.. code-block:: php + + setHandler('PostsController', true); + $posts->setHandler('Blog\Controllers\PostsController', true); + +Returning Responses +------------------- +Handlers may return raw responses using :doc:`Phalcon\\Http\\Response ` or a component that implements the relevant interface. +When responses are returned by handlers they are automatically sent by the application. + +.. code-block:: php + + get('/welcome/index', function () { + + $response = new Response(); + + $response->setStatusCode(401, "Unauthorized"); + + $response->setContent("Access is not authorized"); + + return $response; + }); + +Rendering Views +--------------- +:doc:`Phalcon\\Mvc\\View\\Simple ` can be used to render views, the following example shows how to do that: + +.. code-block:: php + + setViewsDir('app/views/'); + return $view; + }; + + // Return a rendered view + $app->get('/products/show', function () use ($app) { + + // Render app/views/products/show.phtml passing some variables + echo $app['view']->render('products/show', array( + 'id' => 100, + 'name' => 'Artichoke' + )); + + }); + +Please note that this code block uses :doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` which uses relative paths instead of controllers and actions. +If you would like to use :doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` instead, you will need to change the parameters of the :code:`render()` method: + +.. code-block:: php + + setViewsDir('app/views/'); + return $view; + }; + + // Return a rendered view + $app->get('/products/show', function () use ($app) { + + // Render app/views/products/show.phtml passing some variables + echo $app['view']->render('products', 'show', array( + 'id' => 100, + 'name' => 'Artichoke' + )); + + }); + +Error Handling +-------------- +A proper response can be generated if an exception is raised in a micro handler: + +.. code-block:: php + + get('/', function () { + throw new \Exception("An error"); + }); + + $app->error( + function ($exception) { + echo "An error has occurred"; + } + ); + +If the handler returns "false" the exception is stopped. + +Related Sources +--------------- +* :doc:`Creating a Simple REST API ` is a tutorial that explains how to create a micro application to implement a RESTful web service. +* `Stickers Store `_ is a very simple micro-application making use of the micro-mvc approach [`Github `_]. diff --git a/id/reference/migrations.rst b/id/reference/migrations.rst new file mode 100755 index 000000000000..980cbd7eadbe --- /dev/null +++ b/id/reference/migrations.rst @@ -0,0 +1,252 @@ +Database Migrations +=================== + +Migrations are a convenient way for you to alter your database in a structured and organized manner. + +.. highlights:: + + **Important:** Migrations are available in :doc:`Phalcon Developer Tools ` You need at least Phalcon Framework version 0.5.0 to use developer tools. Also, it is recommended to have PHP 5.4 or greater installed. + +Often in development we need to update changes in production environments. Some of these changes could be database modifications like new fields, new tables, removing indexes, etc. + +When a migration is generated a set of classes are created to describe how your database is structured at that particular moment. These classes can be used to synchronize the schema structure on remote databases setting your database ready to work with the new changes that your application implements. Migrations describe these transformations using plain PHP. + +.. raw:: html + +
+ +
+ +Schema Dumping +-------------- +The :doc:`Phalcon Developer Tools ` provides scripts to manage migrations (generation, running and rollback). + +The available options for generating migrations are: + +.. figure:: ../_static/img/migrations-1.png + :align: center + +Running this script without any parameters will simply dump every object (tables and views) from your database into migration classes. + +Each migration has a version identifier associated with it. The version number allows us to identify if the migration is newer or older than the current 'version' of our database. Versions will also inform Phalcon of the running order when executing a migration. + +.. figure:: ../_static/img/migrations-2.png + :align: center + +When a migration is generated, instructions are displayed on the console to describe the different steps of the migration and the execution time of those statements. At the end, a migration version is generated. + +By default :doc:`Phalcon Developer Tools ` uses the *app/migrations* directory to dump the migration files. You can change the location by setting one of the parameters on the generation script. Each table in the database has its respective class generated in a separated file under a directory referring its version: + +.. figure:: ../_static/img/migrations-3.png + :align: center + +Migration Class Anatomy +----------------------- +Each file contains a unique class that extends the :code:`Phalcon\Mvc\Model\Migration` class. These classes normally have two methods: :code:`up()` and :code:`down()`. :code:`up()` performs the migration, while :code:`down()` rolls it back. + +:code:`up()` also contains the *magic* method :code:`morphTable()`. The magic comes when it recognizes the changes needed to synchronize the actual table in the database to the description given. + +.. code-block:: php + + morphTable( + "products", + array( + "columns" => array( + new Column( + "id", + array( + "type" => Column::TYPE_INTEGER, + "size" => 10, + "unsigned" => true, + "notNull" => true, + "autoIncrement" => true, + "first" => true + ) + ), + new Column( + "product_types_id", + array( + "type" => Column::TYPE_INTEGER, + "size" => 10, + "unsigned" => true, + "notNull" => true, + "after" => "id" + ) + ), + new Column( + "name", + array( + "type" => Column::TYPE_VARCHAR, + "size" => 70, + "notNull" => true, + "after" => "product_types_id" + ) + ), + new Column( + "price", + array( + "type" => Column::TYPE_DECIMAL, + "size" => 16, + "scale" => 2, + "notNull" => true, + "after" => "name" + ) + ), + ), + "indexes" => array( + new Index( + "PRIMARY", + array("id") + ), + new Index( + "product_types_id", + array("product_types_id") + ) + ), + "references" => array( + new Reference( + "products_ibfk_1", + array( + "referencedSchema" => "invo", + "referencedTable" => "product_types", + "columns" => array("product_types_id"), + "referencedColumns" => array("id") + ) + ) + ), + "options" => array( + "TABLE_TYPE" => "BASE TABLE", + "ENGINE" => "InnoDB", + "TABLE_COLLATION" => "utf8_general_ci" + ) + ) + ); + } + } + +The class is called "ProductsMigration_100". Suffix 100 refers to the version 1.0.0. :code:`morphTable()` receives an associative array with 4 possible sections: + ++--------------+---------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| Index | Description | Optional | ++==============+=============================================================================================================================================+==========+ +| "columns" | An array with a set of table columns | No | ++--------------+---------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "indexes" | An array with a set of table indexes. | Yes | ++--------------+---------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "references" | An array with a set of table references (foreign keys). | Yes | ++--------------+---------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "options" | An array with a set of table creation options. These options are often related to the database system in which the migration was generated. | Yes | ++--------------+---------------------------------------------------------------------------------------------------------------------------------------------+----------+ + +Defining Columns +^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Db\\Column <../api/Phalcon_Db_Column>` is used to define table columns. It encapsulates a wide variety of column related features. Its constructor receives as first parameter the column name and an array describing the column. The following options are available when describing columns: + ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| Option | Description | Optional | ++=================+============================================================================================================================================+==========+ +| "type" | Column type. Must be a :doc:`Phalcon_Db_Column <../api/Phalcon_Db_Column>` constant (see below) | No | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "size" | Some type of columns like VARCHAR or INTEGER may have a specific size | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "scale" | DECIMAL or NUMBER columns may be have a scale to specify how much decimals it must store | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "unsigned" | INTEGER columns may be signed or unsigned. This option does not apply to other types of columns | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "notNull" | Column can store null values? | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "autoIncrement" | With this attribute column will filled automatically with an auto-increment integer. Only one column in the table can have this attribute. | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "first" | Column must be placed at first position in the column order | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ +| "after" | Column must be placed after indicated column | Yes | ++-----------------+--------------------------------------------------------------------------------------------------------------------------------------------+----------+ + +Database migrations support the following database column types: + +* :code:`Phalcon\Db\Column::TYPE_INTEGER` +* :code:`Phalcon\Db\Column::TYPE_VARCHAR` +* :code:`Phalcon\Db\Column::TYPE_CHAR` +* :code:`Phalcon\Db\Column::TYPE_DATE` +* :code:`Phalcon\Db\Column::TYPE_DATETIME` +* :code:`Phalcon\Db\Column::TYPE_TIMESTAMP` +* :code:`Phalcon\Db\Column::TYPE_DECIMAL` +* :code:`Phalcon\Db\Column::TYPE_TEXT` +* :code:`Phalcon\Db\Column::TYPE_BOOLEAN` +* :code:`Phalcon\Db\Column::TYPE_FLOAT` +* :code:`Phalcon\Db\Column::TYPE_DOUBLE` +* :code:`Phalcon\Db\Column::TYPE_TINYBLOB` +* :code:`Phalcon\Db\Column::TYPE_BLOB` +* :code:`Phalcon\Db\Column::TYPE_MEDIUMBLOB` +* :code:`Phalcon\Db\Column::TYPE_LONGBLOB` +* :code:`Phalcon\Db\Column::TYPE_JSON` +* :code:`Phalcon\Db\Column::TYPE_JSONB` +* :code:`Phalcon\Db\Column::TYPE_BIGINTEGER` + +Defining Indexes +^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Db\\Index <../api/Phalcon_Db_Index>` defines table indexes. An index only requires that you define a name for it and a list of its columns. Note that if any index has the name PRIMARY, Phalcon will create a primary key index for that table. + +Defining References +^^^^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Db\\Reference <../api/Phalcon_Db_Reference>` defines table references (also called foreign keys). The following options can be used to define a reference: + ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| Index | Description | Optional | Implemented in | ++=====================+=====================================================================================================+==========+==================+ +| "referencedTable" | It's auto-descriptive. It refers to the name of the referenced table. | No | All | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| "columns" | An array with the name of the columns at the table that have the reference | No | All | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| "referencedColumns" | An array with the name of the columns at the referenced table | No | All | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| "referencedSchema" | The referenced table maybe is on another schema or database. This option allows you to define that. | Yes | All | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| "onDelete" | If the foreign record is removed, perform this action on the local record(s). | Yes | MySQL PostgreSQL | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ +| "onUpdate" | If the foreign record is updated, perform this action on the local record(s). | Yes | MySQL PostgreSQL | ++---------------------+-----------------------------------------------------------------------------------------------------+----------+------------------+ + +Writing Migrations +------------------ +Migrations aren't only designed to "morph" table. A migration is just a regular PHP class so you're not limited to these functions. For example after adding a column you could write code to set the value of that column for existing records. For more details and examples of individual methods, check the :doc:`database component `. + +.. code-block:: php + + insert( + "products", + array("Malabar spinach", 14.50), + array("name", "price") + ); + } + } + +Running Migrations +------------------ +Once the generated migrations are uploaded on the target server, you can easily run them as shown in the following example: + +.. figure:: ../_static/img/migrations-4.png + :align: center + +.. figure:: ../_static/img/migrations-5.png + :align: center + +Depending on how outdated is the database with respect to migrations, Phalcon may run multiple migration versions in the same migration process. If you specify a target version, Phalcon will run the required migrations until it reaches the specified version. diff --git a/id/reference/model-transactions.rst b/id/reference/model-transactions.rst new file mode 100644 index 000000000000..c2208fa959e0 --- /dev/null +++ b/id/reference/model-transactions.rst @@ -0,0 +1,192 @@ +Model Transactions +================== + +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. + +Transactions in Phalcon allow you to commit all operations if they were executed successfully or rollback all operations if something went wrong. + +Manual Transactions +------------------- +If an application only uses one connection and the transactions aren't very complex, a transaction can be +created by just moving the current connection into transaction mode and then commit or rollback the operation whether it is successful or not: + +.. code-block:: php + + db->begin(); + + $robot = new Robots(); + $robot->name = "WALL·E"; + $robot->created_at = date("Y-m-d"); + + // The model failed to save, so rollback the transaction + if ($robot->save() == false) { + $this->db->rollback(); + return; + } + + $robotPart = new RobotParts(); + $robotPart->robots_id = $robot->id; + $robotPart->type = "head"; + + // The model failed to save, so rollback the transaction + if ($robotPart->save() == false) { + $this->db->rollback(); + return; + } + + // Commit the transaction + $this->db->commit(); + } + } + +Implicit Transactions +--------------------- +Existing relationships can be used to store records and their related instances, this kind of operation +implicitly creates a transaction to ensure that data is correctly stored: + +.. code-block:: php + + type = "head"; + + $robot = new Robots(); + $robot->name = "WALL·E"; + $robot->created_at = date("Y-m-d"); + $robot->robotPart = $robotPart; + + $robot->save(); // Creates an implicit transaction to store both records + +Isolated Transactions +--------------------- +Isolated transactions are executed in a new connection ensuring that all the generated SQL, +virtual foreign key checks and business rules are isolated from the main connection. +This kind of transaction requires a transaction manager that globally manages each +transaction created ensuring that they are correctly rolled back/committed before ending the request: + +.. code-block:: php + + get(); + + $robot = new Robots(); + $robot->setTransaction($transaction); + $robot->name = "WALL·E"; + $robot->created_at = date("Y-m-d"); + if ($robot->save() == false) { + $transaction->rollback("Cannot save robot"); + } + + $robotPart = new RobotParts(); + $robotPart->setTransaction($transaction); + $robotPart->robots_id = $robot->id; + $robotPart->type = "head"; + if ($robotPart->save() == false) { + $transaction->rollback("Cannot save robot part"); + } + + // Everything's gone fine, let's commit the transaction + $transaction->commit(); + + } catch (TxFailed $e) { + echo "Failed, reason: ", $e->getMessage(); + } + +Transactions can be used to delete many records in a consistent way: + +.. code-block:: php + + get(); + + // Get the robots to be deleted + foreach (Robots::find("type = 'mechanical'") as $robot) { + $robot->setTransaction($transaction); + if ($robot->delete() == false) { + // Something's gone wrong, we should rollback the transaction + foreach ($robot->getMessages() as $message) { + $transaction->rollback($message->getMessage()); + } + } + } + + // Everything's gone fine, let's commit the transaction + $transaction->commit(); + + echo "Robots were deleted successfully!"; + + } catch (TxFailed $e) { + echo "Failed, reason: ", $e->getMessage(); + } + +Transactions are reused no matter where the transaction object is retrieved. A new transaction is generated only when a :code:`commit()` or :code:`rollback()` +is performed. You can use the service container to create the global transaction manager for the entire application: + +.. code-block:: php + + setShared('transactions', function () { + return new TransactionManager(); + }); + +Then access it from a controller or view: + +.. code-block:: php + + di->getTransactions(); + + // Or + $manager = $this->transactions; + + // Request a transaction + $transaction = $manager->get(); + + // ... + } + } + +While a transaction is active, the transaction manager will always return the same transaction across the application. diff --git a/id/reference/models-cache.rst b/id/reference/models-cache.rst new file mode 100644 index 000000000000..163a87ba9279 --- /dev/null +++ b/id/reference/models-cache.rst @@ -0,0 +1,968 @@ +Caching in the ORM +================== + +Every application is different, we could have models whose data change frequently and others that rarely change. +Accessing database systems is often one of the most common bottlenecks in terms of performance. This is due to +the complex connection/communication processes that PHP must do in each request to obtain data from the database. +Therefore, if we want to achieve good performance we need to add some layers of caching where the +application requires it. + +This chapter explains the possible points where it is possible to implement caching to improve performance. +The framework gives you the tools to implement the cache where you demand of it according to the architecture +of your application. + +Caching Resultsets +------------------ +A well established technique to avoid the continuous access to the database is to cache resultsets that don't change +frequently using a system with faster access (usually memory). + +When :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` requires a service to cache resultsets, it will +request it to the Dependency Injector Container with the convention name "modelsCache". + +As Phalcon provides a component to :doc:`cache ` any kind of data, we'll explain how to integrate it with Models. +First, you must register it as a service in the services container: + +.. code-block:: php + + set('modelsCache', function () { + + // Cache data for one day by default + $frontCache = new FrontendData( + array( + "lifetime" => 86400 + ) + ); + + // Memcached connection settings + $cache = new BackendMemcache( + $frontCache, + array( + "host" => "localhost", + "port" => "11211" + ) + ); + + return $cache; + }); + +You have complete control in creating and customizing the cache before being used by registering the service +as an anonymous function. Once the cache setup is properly defined you could cache resultsets as follows: + +.. code-block:: php + + array( + "key" => "my-cache" + ) + ) + ); + + // Cache the resultset for only for 5 minutes + $products = Products::find( + array( + "cache" => array( + "key" => "my-cache", + "lifetime" => 300 + ) + ) + ); + + // Using a custom cache + $products = Products::find( + array( + "cache" => $myCache + ) + ); + +Caching could be also applied to resultsets generated using relationships: + +.. code-block:: php + + getComments( + array( + "cache" => array( + "key" => "my-key" + ) + ) + ); + + // Get comments related to a post, setting lifetime + $comments = $post->getComments( + array( + "cache" => array( + "key" => "my-key", + "lifetime" => 3600 + ) + ) + ); + +When a cached resultset needs to be invalidated, you can simply delete it from the cache using the previously specified key. + +Note that not all resultsets must be cached. Results that change very frequently should not be cached since they +are invalidated very quickly and caching in that case impacts performance. Additionally, large datasets that +do not change frequently could be cached, but that is a decision that the developer has to make based on the +available caching mechanism and whether the performance impact to simply retrieve that data in the +first place is acceptable. + +Overriding find/findFirst +------------------------- +As seen above, these methods are available in models that inherit :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>`: + +.. code-block:: php + + $value) { + if (is_scalar($value)) { + $uniqueKey[] = $key . ':' . $value; + } else { + if (is_array($value)) { + $uniqueKey[] = $key . ':[' . self::_createKey($value) .']'; + } + } + } + + return join(',', $uniqueKey); + } + + public static function find($parameters = null) + { + // Create an unique key based on the parameters + $key = self::_createKey($parameters); + + if (!isset(self::$_cache[$key])) { + // Store the result in the memory cache + self::$_cache[$key] = parent::find($parameters); + } + + // Return the result in the cache + return self::$_cache[$key]; + } + + public static function findFirst($parameters = null) + { + // ... + } + } + +Access the database is several times slower than calculate a cache key, you're free in implement the +key generation strategy you find better for your needs. Note that a good key avoids collisions as much as possible, +this means that different keys returns unrelated records to the find parameters. + +In the above example, we used a cache in memory, it is useful as a first level cache. Once we have the memory cache, +we can implement a second level cache layer like APC/XCache or a NoSQL database: + +.. code-block:: php + + ` has a built-in integration with the caching component provided by the framework. To make a record/resultset +cacheable we pass the key 'cache' in the array of parameters: + +.. code-block:: php + + array( + "key" => "my-cache", + "lifetime" => 300 + ) + ) + ); + +This gives us the freedom to cache specific queries, however if we want to cache globally every query performed over the model, +we can override the find/findFirst method to force every query to be cached: + +.. code-block:: php + + self::_createKey($parameters), + "lifetime" => 300 + ); + } + + return parent::find($parameters); + } + + public static function findFirst($parameters = null) + { + // ... + } + + } + +Caching PHQL Queries +-------------------- +All queries in the ORM, no matter how high level syntax we used to create them are handled internally using PHQL. +This language gives you much more freedom to create all kinds of queries. Of course these queries can be cached: + +.. code-block:: php + + modelsManager->createQuery($phql); + + $query->cache( + array( + "key" => "cars-by-name", + "lifetime" => 300 + ) + ); + + $cars = $query->execute( + array( + 'name' => 'Audi' + ) + ); + +If you don't want to use the implicit cache just save the resultset into your favorite cache backend: + +.. code-block:: php + + modelsManager->executeQuery( + $phql, + array( + 'name' => 'Audi' + ) + ); + + apc_store('my-cars', $cars); + +Reusable Related Records +------------------------ +Some models may have relationships to other models. This allows us to easily check the records that relate to instances in memory: + +.. code-block:: php + + customer; + + // Print his/her name + echo $customer->name, "\n"; + +This example is very simple, a customer is queried and can be used as required, for example, to show its name. +This also applies if we retrieve a set of invoices to show customers that correspond to these invoices: + +.. code-block:: php + + customer; + + // Print his/her name + echo $customer->name, "\n"; + } + +A customer may have one or more bills, this means that the customer may be unnecessarily more than once. +To avoid this, we could mark the relationship as reusable, this way, we tell the ORM to automatically reuse +the records instead of re-querying them again and again: + +.. code-block:: php + + belongsTo( + "customers_id", + "Customer", + "id", + array( + 'reusable' => true + ) + ); + } + } + +This cache works in memory only, this means that cached data are released when the request is terminated. You can +add a more sophisticated cache for this scenario overriding the models manager: + +.. code-block:: php + + setShared('modelsManager', function () { + return new CustomModelsManager(); + }); + +Caching Related Records +----------------------- +When a related record is queried, the ORM internally builds the appropriate condition and gets the required records using find/findFirst +in the target model according to the following table: + ++---------------------+---------------------------------------------------------------------------------------------------------------+ +| Type | Description | Implicit Method | ++=====================+===============================================================================================================+ +| Belongs-To | Returns a model instance of the related record directly | findFirst | ++---------------------+---------------------------------------------------------------------------------------------------------------+ +| Has-One | Returns a model instance of the related record directly | findFirst | ++---------------------+---------------------------------------------------------------------------------------------------------------+ +| Has-Many | Returns a collection of model instances of the referenced model | find | ++---------------------+---------------------------------------------------------------------------------------------------------------+ + +This means that when you get a related record you could intercept how these data are obtained by implementing the corresponding method: + +.. code-block:: php + + customer; // Invoices::findFirst('...'); + + // Same as above + $customer = $invoice->getCustomer(); // Invoices::findFirst('...'); + +Accordingly, we could replace the findFirst method in the model Invoices and implement the cache we consider most appropriate: + +.. code-block:: php + + customer; + + // Assign it to the record + $invoice->customer = $customer; + + $results[] = $invoice; + } + + // Store the invoices in the cache + their customers + self::_setCache($key, $results); + + return $results; + } + + public function initialize() + { + // Add relations and initialize other stuff + } + } + +Getting the invoices from the cache already obtains the customer data in just one hit, reducing the overall overhead of the operation. +Note that this process can also be performed with PHQL following an alternative solution: + +.. code-block:: php + + getModelsManager()->executeQuery($phql); + + $query->cache( + array( + "key" => self::_createKey($conditions, $params), + "lifetime" => 300 + ) + ); + + return $query->execute($params); + } + + } + +Caching based on Conditions +--------------------------- +In this scenario, the cache is implemented conditionally according to current conditions received. +According to the range where the primary key is located we choose a different cache backend: + ++---------------------+--------------------+ +| Type | Cache Backend | ++=====================+====================+ +| 1 - 10000 | mongo1 | ++---------------------+--------------------+ +| 10000 - 20000 | mongo2 | ++---------------------+--------------------+ +| > 20000 | mongo3 | ++---------------------+--------------------+ + +The easiest way is adding a static method to the model that chooses the right cache to be used: + +.. code-block:: php + + = 1 && $final < 10000) { + return self::find( + array( + 'id >= ' . $initial . ' AND id <= '.$final, + 'cache' => array( + 'service' => 'mongo1' + ) + ) + ); + } + + if ($initial >= 10000 && $final <= 20000) { + return self::find( + array( + 'id >= ' . $initial . ' AND id <= '.$final, + 'cache' => array( + 'service' => 'mongo2' + ) + ) + ); + } + + if ($initial > 20000) { + return self::find( + array( + 'id >= ' . $initial, + 'cache' => array( + 'service' => 'mongo3' + ) + ) + ); + } + } + } + +This approach solves the problem, however, if we want to add other parameters such orders or conditions we would have to create +a more complicated method. Additionally, this method does not work if the data is obtained using related records or a find/findFirst: + +.. code-block:: php + + 100 AND type = "A"'); + $robots = Robots::find('(id > 100 AND type = "A") AND id < 2000'); + + $robots = Robots::find( + array( + '(id > ?0 AND type = "A") AND id < ?1', + 'bind' => array(100, 2000), + 'order' => 'type' + ) + ); + +To achieve this we need to intercept the intermediate representation (IR) generated by the PHQL parser and +thus customize the cache everything possible: + +The first is create a custom builder, so we can generate a totally customized query: + +.. code-block:: php + + getPhql()); + $query->setDI($this->getDI()); + return $query; + } + } + +Instead of directly returning a :doc:`Phalcon\\Mvc\\Model\\Query <../api/Phalcon_Mvc_Model_Query>`, our custom builder returns a CustomQuery instance, +this class looks like: + +.. code-block:: php + + parse(); + + // Check if the query has conditions + if (isset($ir['where'])) { + + // The fields in the conditions can have any order + // We need to recursively check the conditions tree + // to find the info we're looking for + $visitor = new CustomNodeVisitor(); + + // Recursively visits the nodes + $visitor->visit($ir['where']); + + $initial = $visitor->getInitial(); + $final = $visitor->getFinal(); + + // Select the cache according to the range + // ... + + // Check if the cache has data + // ... + } + + // Execute the query + $result = $this->_executeSelect($ir, $params, $types); + + // Cache the result + // ... + + return $result; + } + } + +Implementing a helper (CustomNodeVisitor) that recursively checks the conditions looking for fields that +tell us the possible range to be used in the cache: + +.. code-block:: php + + visit($node['left']); + $right = $this->visit($node['right']); + if (!$left || !$right) { + return false; + } + + if ($left=='id') { + if ($node['op'] == '>') { + $this->_initial = $right; + } + if ($node['op'] == '=') { + $this->_initial = $right; + } + if ($node['op'] == '>=') { + $this->_initial = $right; + } + if ($node['op'] == '<') { + $this->_final = $right; + } + if ($node['op'] == '<=') { + $this->_final = $right; + } + } + break; + + case 'qualified': + if ($node['name'] == 'id') { + return 'id'; + } + break; + + case 'literal': + return $node['value']; + + default: + return false; + } + } + + public function getInitial() + { + return $this->_initial; + } + + public function getFinal() + { + return $this->_final; + } + } + +Finally, we can replace the find method in the Robots model to use the custom classes we've created: + +.. code-block:: php + + from(get_called_class()); + + if (isset($parameters['bind'])) { + return $builder->getQuery()->execute($parameters['bind']); + } else { + return $builder->getQuery()->execute(); + } + } + } + +Caching of PHQL planning +------------------------ +As well as most moderns database systems PHQL internally caches the execution plan, +if the same statement is executed several times PHQL reuses the previously generated plan +improving performance, for a developer to take better advantage of this is highly recommended +build all your SQL statements passing variable parameters as bound parameters: + +.. code-block:: php + + modelsManager->executeQuery($phql); + + // ... + } + +In the above example, ten plans were generated increasing the memory usage and processing in the application. +Rewriting the code to take advantage of bound parameters reduces the processing by both ORM and database system: + +.. code-block:: php + + modelsManager->executeQuery($phql, array($i)); + + // ... + } + +Performance can be also improved reusing the PHQL query: + +.. code-block:: php + + modelsManager->createQuery($phql); + + for ($i = 1; $i <= 10; $i++) { + + $robots = $query->execute($phql, array($i)); + + // ... + } + +Execution plans for queries involving `prepared statements`_ are also cached by most database systems +reducing the overall execution time, also protecting your application against `SQL Injections`_. + +.. _`prepared statements`: http://en.wikipedia.org/wiki/Prepared_statement +.. _`SQL Injections`: http://en.wikipedia.org/wiki/SQL_injection diff --git a/id/reference/models-metadata.rst b/id/reference/models-metadata.rst new file mode 100644 index 000000000000..76271a89d6ac --- /dev/null +++ b/id/reference/models-metadata.rst @@ -0,0 +1,281 @@ +Models Meta-Data +================ + +To speed up development :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` helps you to query fields and constraints from tables +related to models. To achieve this, :doc:`Phalcon\\Mvc\\Model\\MetaData <../api/Phalcon_Mvc_Model_MetaData>` is available to manage +and cache table meta-data. + +Sometimes it is necessary to get those attributes when working with models. You can get a meta-data instance as follows: + +.. code-block:: php + + getModelsMetaData(); + + // Get robots fields names + $attributes = $metaData->getAttributes($robot); + print_r($attributes); + + // Get robots fields data types + $dataTypes = $metaData->getDataTypes($robot); + print_r($dataTypes); + +Caching Meta-Data +----------------- +Once the application is in a production stage, it is not necessary to query the meta-data of the table from the database system each +time you use the table. This could be done caching the meta-data using any of the following adapters: + ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Adapter | Description | API | ++=========+===============================================================================================================================================================================================================================================================================================================================================+===========================================================================================+ +| Memory | This adapter is the default. The meta-data is cached only during the request. When the request is completed, the meta-data are released as part of the normal memory of the request. This adapter is perfect when the application is in development so as to refresh the meta-data in each request containing the new and/or modified fields. | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Memory <../api/Phalcon_Mvc_Model_MetaData_Memory>` | ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Session | This adapter stores meta-data in the :code:`$_SESSION` superglobal. This adapter is recommended only when the application is actually using a small number of models. The meta-data are refreshed every time a new session starts. This also requires the use of :code:`session_start()` to start the session before using any models. | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Session <../api/Phalcon_Mvc_Model_MetaData_Session>` | ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Apc | This adapter uses the `Alternative PHP Cache (APC)`_ to store the table meta-data. You can specify the lifetime of the meta-data with options. This is the most recommended way to store meta-data when the application is in production stage. | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Apc <../api/Phalcon_Mvc_Model_MetaData_Apc>` | ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| XCache | This adapter uses `XCache`_ to store the table meta-data. You can specify the lifetime of the meta-data with options. This is the most recommended way to store meta-data when the application is in production stage. | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Xcache <../api/Phalcon_Mvc_Model_MetaData_Xcache>` | ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Files | This adapter uses plain files to store meta-data. By using this adapter the disk-reading is increased but the database access is reduced. | :doc:`Phalcon\\Mvc\\Model\\MetaData\\Files <../api/Phalcon_Mvc_Model_MetaData_Files>` | ++---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+ + +As other ORM's dependencies, the metadata manager is requested from the services container: + +.. code-block:: php + + 86400, + "prefix" => "my-prefix" + ) + ); + + return $metaData; + }; + +Meta-Data Strategies +-------------------- +As mentioned above the default strategy to obtain the model's meta-data is database introspection. In this strategy, the information +schema is used to know the fields in a table, its primary key, nullable fields, data types, etc. + +You can change the default meta-data introspection in the following way: + +.. code-block:: php + + 86400, + "prefix" => "my-prefix" + ) + ); + + // Set a custom meta-data introspection strategy + $metaData->setStrategy(new MyIntrospectionStrategy()); + + return $metaData; + }; + +Database Introspection Strategy +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +This strategy doesn't require any customization and is implicitly used by all the meta-data adapters. + +Annotations Strategy +^^^^^^^^^^^^^^^^^^^^ +This strategy makes use of :doc:`annotations ` to describe the columns in a model: + +.. code-block:: php + + 86400, + "prefix" => "my-prefix" + ) + ); + + // Set a custom meta-data database introspection + $metaData->setStrategy(new StrategyAnnotations()); + + return $metaData; + }; + +Manual Meta-Data +---------------- +Phalcon can obtain the metadata for each model automatically without the developer must set them manually +using any of the introspection strategies presented above. + +The developer also has the option of define the metadata manually. This strategy overrides +any strategy set in the meta-data manager. New columns added/modified/removed to/from the mapped +table must be added/modified/removed also for everything to work properly. + +The following example shows how to define the meta-data manually: + +.. code-block:: php + + array( + 'id', 'name', 'type', 'year' + ), + + // Every column part of the primary key + MetaData::MODELS_PRIMARY_KEY => array( + 'id' + ), + + // Every column that isn't part of the primary key + MetaData::MODELS_NON_PRIMARY_KEY => array( + 'name', 'type', 'year' + ), + + // Every column that doesn't allows null values + MetaData::MODELS_NOT_NULL => array( + 'id', 'name', 'type' + ), + + // Every column and their data types + MetaData::MODELS_DATA_TYPES => array( + 'id' => Column::TYPE_INTEGER, + 'name' => Column::TYPE_VARCHAR, + 'type' => Column::TYPE_VARCHAR, + 'year' => Column::TYPE_INTEGER + ), + + // The columns that have numeric data types + MetaData::MODELS_DATA_TYPES_NUMERIC => array( + 'id' => true, + 'year' => true + ), + + // The identity column, use boolean false if the model doesn't have + // an identity column + MetaData::MODELS_IDENTITY_COLUMN => 'id', + + // How every column must be bound/casted + MetaData::MODELS_DATA_TYPES_BIND => array( + 'id' => Column::BIND_PARAM_INT, + 'name' => Column::BIND_PARAM_STR, + 'type' => Column::BIND_PARAM_STR, + 'year' => Column::BIND_PARAM_INT + ), + + // Fields that must be ignored from INSERT SQL statements + MetaData::MODELS_AUTOMATIC_DEFAULT_INSERT => array( + 'year' => true + ), + + // Fields that must be ignored from UPDATE SQL statements + MetaData::MODELS_AUTOMATIC_DEFAULT_UPDATE => array( + 'year' => true + ), + + // Default values for columns + MetaData::MODELS_DEFAULT_VALUES => array( + 'year' => '2015' + ), + + // Fields that allow empty strings + MetaData::MODELS_EMPTY_STRING_VALUES => array( + 'name' => true + ) + ); + } + } + +.. _Alternative PHP Cache (APC): http://www.php.net/manual/en/book.apc.php +.. _XCache: http://xcache.lighttpd.net/ diff --git a/id/reference/models.rst b/id/reference/models.rst new file mode 100755 index 000000000000..0483d2b31e76 --- /dev/null +++ b/id/reference/models.rst @@ -0,0 +1,3292 @@ +Working with Models +=================== + +A model represents the information (data) of the application and the rules to manipulate that data. Models are primarily used for managing +the rules of interaction with a corresponding database table. In most cases, each table in your database will correspond to one model in +your application. The bulk of your application's business logic will be concentrated in the models. + +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` is the base for all models in a Phalcon application. It provides database independence, basic +CRUD functionality, advanced finding capabilities, and the ability to relate models to one another, among other services. +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` avoids the need of having to use SQL statements because it translates +methods dynamically to the respective database engine operations. + +.. highlights:: + + Models are intended to work on a database high layer of abstraction. If you need to work with databases at a lower level check out the + :doc:`Phalcon\\Db <../api/Phalcon_Db>` component documentation. + +Creating Models +--------------- +A model is a class that extends from :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>`. It must be placed in the models directory. A model +file must contain a single class; its class name should be in camel case notation: + +.. code-block:: php + + `. +This component provides a great deal of functionality to models that inherit it, including basic database +CRUD (Create, Read, Update, Delete) operations, data validation, as well as sophisticated search support and the ability to relate multiple models +with each other. + +.. highlights:: + + If you're using PHP 5.4/5.5 it is recommended you declare each column that makes part of the model in order to save + memory and reduce the memory allocation. + +By default, the model "Robots" will refer to the table "robots". If you want to manually specify another name for the mapping table, +you can use the :code:`getSource()` method: + +.. code-block:: php + + setSource("the_robots"); + } + } + +The :code:`initialize()` method is only called once during the request, it's intended to perform initializations that apply for +all instances of the model created within the application. If you want to perform initialization tasks for every instance +created you can 'onConstruct': + +.. code-block:: php + + id; + } + + public function setName($name) + { + // The name is too short? + if (strlen($name) < 10) { + throw new \InvalidArgumentException('The name is too short'); + } + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrice($price) + { + // Negative prices aren't allowed + if ($price < 0) { + throw new \InvalidArgumentException('Price can\'t be negative'); + } + $this->price = $price; + } + + public function getPrice() + { + // Convert the value to double before be used + return (double) $this->price; + } + } + +Public properties provide less complexity in development. However getters/setters can heavily increase the testability, +extensibility and maintainability of applications. Developers can decide which strategy is more appropriate for the +application they are creating. The ORM is compatible with both schemes of defining properties. + +.. highlights:: + + Underscores in property names can be problematic when using getters and setters. + +If you use underscores in your property names, you must still use camel case in your getter/setter declarations for use +with magic methods. (e.g. $model->getPropertyName instead of $model->getProperty_name, $model->findByPropertyName +instead of $model->findByProperty_name, etc.). As much of the system expects camel case, and underscores are commonly +removed, it is recommended to name your properties in the manner shown throughout the documentation. You can use a +column map (as described above) to ensure proper mapping of your properties to their database counterparts. + +Models in Namespaces +^^^^^^^^^^^^^^^^^^^^ +Namespaces can be used to avoid class name collision. The mapped table is taken from the class name, in this case 'Robots': + +.. code-block:: php + + hasMany('id', 'Store\Toys\RobotsParts', 'robots_id'); + } + } + +Understanding Records To Objects +-------------------------------- +Every instance of a model represents a row in the table. You can easily access record data by reading object properties. For example, +for a table "robots" with the records: + +.. code-block:: bash + + mysql> select * from robots; + +----+------------+------------+------+ + | id | name | type | year | + +----+------------+------------+------+ + | 1 | Robotina | mechanical | 1972 | + | 2 | Astro Boy | mechanical | 1952 | + | 3 | Terminator | cyborg | 2029 | + +----+------------+------------+------+ + 3 rows in set (0.00 sec) + +You could find a certain record by its primary key and then print its name: + +.. code-block:: php + + name; + +Once the record is in memory, you can make modifications to its data and then save changes: + +.. code-block:: php + + name = "RoboCop"; + $robot->save(); + +As you can see, there is no need to use raw SQL statements. :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` provides high database +abstraction for web applications. + +Finding Records +--------------- +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` also offers several methods for querying records. The following examples will show you +how to query one or more records from a model: + +.. code-block:: php + + "name" + ) + ); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + // Get first 100 virtual robots ordered by name + $robots = Robots::find( + array( + "type = 'virtual'", + "order" => "name", + "limit" => 100 + ) + ); + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + +.. highlights:: + + If you want find record by external data (such as user input) or variable data you must use `Binding Parameters`_. + +You could also use the :code:`findFirst()` method to get only the first record matching the given criteria: + +.. code-block:: php + + name, "\n"; + + // What's the first mechanical robot in robots table? + $robot = Robots::findFirst("type = 'mechanical'"); + echo "The first mechanical robot name is ", $robot->name, "\n"; + + // Get first virtual robot ordered by name + $robot = Robots::findFirst( + array( + "type = 'virtual'", + "order" => "name" + ) + ); + echo "The first virtual robot name is ", $robot->name, "\n"; + +Both :code:`find()` and :code:`findFirst()` methods accept an associative array specifying the search criteria: + +.. code-block:: php + + "name DESC", + "limit" => 30 + ) + ); + + $robots = Robots::find( + array( + "conditions" => "type = ?1", + "bind" => array(1 => "virtual") + ) + ); + +The available query options are: + ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Parameter | Description | Example | ++=============+======================================================================================================================================================================================================================================+=================================================================================+ +| conditions | Search conditions for the find operation. Is used to extract only those records that fulfill a specified criterion. By default :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` assumes the first parameter are the conditions. | :code:`"conditions" => "name LIKE 'steve%'"` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| columns | Return specific columns instead of the full columns in the model. When using this option an incomplete object is returned | :code:`"columns" => "id, name"` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| bind | Bind is used together with options, by replacing placeholders and escaping values thus increasing security | :code:`"bind" => array("status" => "A", "type" => "some-time")` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| bindTypes | When binding parameters, you can use this parameter to define additional casting to the bound parameters increasing even more the security | :code:`"bindTypes" => array(Column::BIND_PARAM_STR, Column::BIND_PARAM_INT)` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| order | Is used to sort the resultset. Use one or more fields separated by commas. | :code:`"order" => "name DESC, status"` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| limit | Limit the results of the query to results to certain range | :code:`"limit" => 10` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| offset | Offset the results of the query by a certain amount | :code:`"offset" => 5` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| group | Allows to collect data across multiple records and group the results by one or more columns | :code:`"group" => "name, status"` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| for_update | With this option, :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` reads the latest available data, setting exclusive locks on each row it reads | :code:`"for_update" => true` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| shared_lock | With this option, :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` reads the latest available data, setting shared locks on each row it reads | :code:`"shared_lock" => true` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| cache | Cache the resultset, reducing the continuous access to the relational system | :code:`"cache" => array("lifetime" => 3600, "key" => "my-find-key")` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| hydration | Sets the hydration strategy to represent each returned record in the result | :code:`"hydration" => Resultset::HYDRATE_OBJECTS` | ++-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ + +If you prefer, there is also available a way to create queries in an object-oriented way, instead of using an array of parameters: + +.. code-block:: php + + where("type = :type:") + ->andWhere("year < 2000") + ->bind(array("type" => "mechanical")) + ->order("name") + ->execute(); + +The static method :code:`query()` returns a :doc:`Phalcon\\Mvc\\Model\\Criteria <../api/Phalcon_Mvc_Model_Criteria>` object that is friendly with IDE autocompleters. + +All the queries are internally handled as :doc:`PHQL ` queries. PHQL is a high-level, object-oriented and SQL-like language. +This language provide you more features to perform queries like joining other models, define groupings, add aggregations etc. + +Lastly, there is the :code:`findFirstBy()` method. This method expands on the :code:`findFirst()` method mentioned earlier. It allows you to quickly perform a +retrieval from a table by using the property name in the method itself and passing it a parameter that contains the data you want to search for in that column. +An example is in order, so taking our Robots model mentioned earlier: + +.. code-block:: php + + price . "."; + } else { + echo "There were no robots found in our table with the name " . $name . "."; + } + +Notice that we used 'Name' in the method call and passed the variable :code:`$name` to it, which contains the name +we are looking for in our table. Notice also that when we find a match with our query, all the other properties +are available to us as well. + +Model Resultsets +^^^^^^^^^^^^^^^^ +While :code:`findFirst()` returns directly an instance of the called class (when there is data to be returned), the :code:`find()` method returns a +:doc:`Phalcon\\Mvc\\Model\\Resultset\\Simple <../api/Phalcon_Mvc_Model_Resultset_Simple>`. This is an object that encapsulates all the functionality +a resultset has like traversing, seeking specific records, counting, etc. + +These objects are more powerful than standard arrays. One of the greatest features of the :doc:`Phalcon\\Mvc\\Model\\Resultset <../api/Phalcon_Mvc_Model_Resultset>` +is that at any time there is only one record in memory. This greatly helps in memory management especially when working with large amounts of data. + +.. code-block:: php + + name, "\n"; + } + + // Traversing with a while + $robots->rewind(); + while ($robots->valid()) { + $robot = $robots->current(); + echo $robot->name, "\n"; + $robots->next(); + } + + // Count the resultset + echo count($robots); + + // Alternative way to count the resultset + echo $robots->count(); + + // Move the internal cursor to the third robot + $robots->seek(2); + $robot = $robots->current(); + + // Access a robot by its position in the resultset + $robot = $robots[5]; + + // Check if there is a record in certain position + if (isset($robots[3])) { + $robot = $robots[3]; + } + + // Get the first record in the resultset + $robot = $robots->getFirst(); + + // Get the last record + $robot = $robots->getLast(); + +Phalcon's resultsets emulate scrollable cursors, you can get any row just by accessing its position, or seeking the internal pointer +to a specific position. Note that some database systems don't support scrollable cursors, this forces to re-execute the query +in order to rewind the cursor to the beginning and obtain the record at the requested position. Similarly, if a resultset +is traversed several times, the query must be executed the same number of times. + +Storing large query results in memory could consume many resources, because of this, resultsets are obtained +from the database in chunks of 32 rows reducing the need for re-execute the request in several cases also saving memory. + +Note that resultsets can be serialized and stored in a cache backend. :doc:`Phalcon\\Cache ` can help with that task. However, +serializing data causes :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` to retrieve all the data from the database in an array, +thus consuming more memory while this process takes place. + +.. code-block:: php + + id; + } + +Filtering Resultsets +^^^^^^^^^^^^^^^^^^^^ +The most efficient way to filter data is setting some search criteria, databases will use indexes set on tables to return data faster. +Phalcon additionally allows you to filter the data using PHP using any resource that is not available in the database: + +.. code-block:: php + + filter( + function ($customer) { + + // Return only customers with a valid e-mail + if (filter_var($customer->email, FILTER_VALIDATE_EMAIL)) { + return $customer; + } + } + ); + +Binding Parameters +^^^^^^^^^^^^^^^^^^ +Bound parameters are also supported in :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>`. You are encouraged to use +this methodology so as to eliminate the possibility of your code being subject to SQL injection attacks. +Both string and integer placeholders are supported. Binding parameters can simply be achieved as follows: + +.. code-block:: php + + "Robotina", + "type" => "maid" + ); + + // Perform the query + $robots = Robots::find( + array( + $conditions, + "bind" => $parameters + ) + ); + + // Query robots binding parameters with integer placeholders + $conditions = "name = ?1 AND type = ?2"; + $parameters = array(1 => "Robotina", 2 => "maid"); + $robots = Robots::find( + array( + $conditions, + "bind" => $parameters + ) + ); + + // Query robots binding parameters with both string and integer placeholders + $conditions = "name = :name: AND type = ?1"; + + // Parameters whose keys are the same as placeholders + $parameters = array( + "name" => "Robotina", + 1 => "maid" + ); + + // Perform the query + $robots = Robots::find( + array( + $conditions, + "bind" => $parameters + ) + ); + +When using numeric placeholders, you will need to define them as integers i.e. 1 or 2. In this case "1" or "2" are considered strings +and not numbers, so the placeholder could not be successfully replaced. + +Strings are automatically escaped using PDO_. This function takes into account the connection charset, so its recommended to define +the correct charset in the connection parameters or in the database configuration, as a wrong charset will produce undesired effects +when storing or retrieving data. + +Additionally you can set the parameter "bindTypes", this allows defining how the parameters should be bound according to its data type: + +.. code-block:: php + + "Robotina", + "year" => 2008 + ); + + // Casting Types + $types = array( + "name" => Column::BIND_PARAM_STR, + "year" => Column::BIND_PARAM_INT + ); + + // Query robots binding parameters with string placeholders + $robots = Robots::find( + array( + "name = :name: AND year = :year:", + "bind" => $parameters, + "bindTypes" => $types + ) + ); + +.. highlights:: + + Since the default bind-type is :code:`Phalcon\Db\Column::BIND_PARAM_STR`, there is no need to specify the + "bindTypes" parameter if all of the columns are of that type. + +If you bind arrays in bound parameters, keep in mind, that keys must be numbered from zero: + +.. code-block:: php + + "a", [1] => "b", [2] => "c"] + + unset($array[1]); // $array: [[0] => "a", [2] => "c"] + + // Now we have to renumber the keys + $array = array_values($array); // $array: [[0] => "a", [1] => "c"] + + $robots = Robots::find( + array( + 'letter IN ({letter:array})', + 'bind' => array( + 'letter' => $array + ) + ) + ); + +.. highlights:: + + Bound parameters are available for all query methods such as :code:`find()` and :code:`findFirst()` but also the calculation + methods like :code:`count()`, :code:`sum()`, :code:`average()` etc. + +If you're using "finders", bound parameters are automatically used for you: + +.. code-block:: php + + ["Ultron"], + ) + ); + + // Implicit query using bound parameters + $robots = Robots::findByName("Ultron"); + +Initializing/Preparing fetched records +-------------------------------------- +May be the case that after obtaining a record from the database is necessary to initialise the data before +being used by the rest of the application. You can implement the method 'afterFetch' in a model, this event +will be executed just after create the instance and assign the data to it: + +.. code-block:: php + + status = join(',', $this->status); + } + + public function afterFetch() + { + // Convert the string to an array + $this->status = explode(',', $this->status); + } + + public function afterSave() + { + // Convert the string to an array + $this->status = explode(',', $this->status); + } + } + +If you use getters/setters instead of/or together with public properties, you can initialize the field once it is +accessed: + +.. code-block:: php + + status); + } + } + +Relationships between Models +---------------------------- +There are four types of relationships: one-on-one, one-to-many, many-to-one and many-to-many. The relationship may be +unidirectional or bidirectional, and each can be simple (a one to one model) or more complex (a combination of models). +The model manager manages foreign key constraints for these relationships, the definition of these helps referential +integrity as well as easy and fast access of related records to a model. Through the implementation of relations, +it is easy to access data in related models from each record in a uniform way. + +Unidirectional relationships +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Unidirectional relations are those that are generated in relation to one another but not vice versa. + +Bidirectional relations +^^^^^^^^^^^^^^^^^^^^^^^ +The bidirectional relations build relationships in both models and each model defines the inverse relationship of the other. + +Defining relationships +^^^^^^^^^^^^^^^^^^^^^^ +In Phalcon, relationships must be defined in the :code:`initialize()` method of a model. The methods :code:`belongsTo()`, :code:`hasOne()`, +:code:`hasMany()` and :code:`hasManyToMany()` define the relationship between one or more fields from the current model to fields in +another model. Each of these methods requires 3 parameters: local fields, referenced model, referenced fields. + ++---------------+----------------------------+ +| Method | Description | ++===============+============================+ +| hasMany | Defines a 1-n relationship | ++---------------+----------------------------+ +| hasOne | Defines a 1-1 relationship | ++---------------+----------------------------+ +| belongsTo | Defines a n-1 relationship | ++---------------+----------------------------+ +| hasManyToMany | Defines a n-n relationship | ++---------------+----------------------------+ + +The following schema shows 3 tables whose relations will serve us as an example regarding relationships: + +.. code-block:: sql + + CREATE TABLE `robots` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(70) NOT NULL, + `type` varchar(32) NOT NULL, + `year` int(11) NOT NULL, + PRIMARY KEY (`id`) + ); + + CREATE TABLE `robots_parts` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `robots_id` int(10) NOT NULL, + `parts_id` int(10) NOT NULL, + `created_at` DATE NOT NULL, + PRIMARY KEY (`id`), + KEY `robots_id` (`robots_id`), + KEY `parts_id` (`parts_id`) + ); + + CREATE TABLE `parts` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(70) NOT NULL, + PRIMARY KEY (`id`) + ); + +* The model "Robots" has many "RobotsParts". +* The model "Parts" has many "RobotsParts". +* The model "RobotsParts" belongs to both "Robots" and "Parts" models as a many-to-one relation. +* The model "Robots" has a relation many-to-many to "Parts" through "RobotsParts". + +Check the EER diagram to understand better the relations: + +.. figure:: ../_static/img/eer-1.png + :align: center + +The models with their relations could be implemented as follows: + +.. code-block:: php + + hasMany("id", "RobotsParts", "robots_id"); + } + } + +.. code-block:: php + + hasMany("id", "RobotsParts", "parts_id"); + } + } + +.. code-block:: php + + belongsTo("robots_id", "Robots", "id"); + $this->belongsTo("parts_id", "Parts", "id"); + } + } + +The first parameter indicates the field of the local model used in the relationship; the second indicates the name +of the referenced model and the third the field name in the referenced model. You could also use arrays to define multiple fields in the relationship. + +Many to many relationships require 3 models and define the attributes involved in the relationship: + +.. code-block:: php + + hasManyToMany( + "id", + "RobotsParts", + "robots_id", "parts_id", + "Parts", + "id" + ); + } + } + +Taking advantage of relationships +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When explicitly defining the relationships between models, it is easy to find related records for a particular record. + +.. code-block:: php + + robotsParts as $robotPart) { + echo $robotPart->parts->name, "\n"; + } + +Phalcon uses the magic methods :code:`__set`/:code:`__get`/:code:`__call` to store or retrieve related data using relationships. + +By accessing an attribute with the same name as the relationship will retrieve all its related record(s). + +.. code-block:: php + + robotsParts; // All the related records in RobotsParts + +Also, you can use a magic getter: + +.. code-block:: php + + getRobotsParts(); // All the related records in RobotsParts + $robotsParts = $robot->getRobotsParts(array('limit' => 5)); // Passing parameters + +If the called method has a "get" prefix :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` will return a +:code:`findFirst()`/:code:`find()` result. The following example compares retrieving related results with using magic methods +and without: + +.. code-block:: php + + robotsParts; + + // Only parts that match conditions + $robotsParts = $robot->getRobotsParts("created_at = '2015-03-15'"); + + // Or using bound parameters + $robotsParts = $robot->getRobotsParts( + array( + "created_at = :date:", + "bind" => array( + "date" => "2015-03-15" + ) + ) + ); + + $robotPart = RobotsParts::findFirst(1); + + // RobotsParts model has a n-1 (belongsTo) + // relationship to RobotsParts then + $robot = $robotPart->robots; + +Getting related records manually: + +.. code-block:: php + + id . "'"); + + // Only parts that match conditions + $robotsParts = RobotsParts::find( + "robots_id = '" . $robot->id . "' AND created_at = '2015-03-15'" + ); + + $robotPart = RobotsParts::findFirst(1); + + // RobotsParts model has a n-1 (belongsTo) + // relationship to RobotsParts then + $robot = Robots::findFirst("id = '" . $robotPart->robots_id . "'"); + + +The prefix "get" is used to :code:`find()`/:code:`findFirst()` related records. Depending on the type of relation it will use +'find' or 'findFirst': + ++---------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------+ +| Type | Description | Implicit Method | ++=====================+============================================================================================================================+========================+ +| Belongs-To | Returns a model instance of the related record directly | findFirst | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------+ +| Has-One | Returns a model instance of the related record directly | findFirst | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------+ +| Has-Many | Returns a collection of model instances of the referenced model | find | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------+ +| Has-Many-to-Many | Returns a collection of model instances of the referenced model, it implicitly does 'inner joins' with the involved models | (complex query) | ++---------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------+ + +You can also use "count" prefix to return an integer denoting the count of the related records: + +.. code-block:: php + + countRobotsParts(), " parts\n"; + +Aliasing Relationships +^^^^^^^^^^^^^^^^^^^^^^ +To explain better how aliases work, let's check the following example: + +The "robots_similar" table has the function to define what robots are similar to others: + +.. code-block:: bash + + mysql> desc robots_similar; + +-------------------+------------------+------+-----+---------+----------------+ + | Field | Type | Null | Key | Default | Extra | + +-------------------+------------------+------+-----+---------+----------------+ + | id | int(10) unsigned | NO | PRI | NULL | auto_increment | + | robots_id | int(10) unsigned | NO | MUL | NULL | | + | similar_robots_id | int(10) unsigned | NO | | NULL | | + +-------------------+------------------+------+-----+---------+----------------+ + 3 rows in set (0.00 sec) + +Both "robots_id" and "similar_robots_id" have a relation to the model Robots: + +.. figure:: ../_static/img/eer-2.png + :align: center + +A model that maps this table and its relationships is the following: + +.. code-block:: php + + belongsTo('robots_id', 'Robots', 'id'); + $this->belongsTo('similar_robots_id', 'Robots', 'id'); + } + } + +Since both relations point to the same model (Robots), obtain the records related to the relationship could not be clear: + +.. code-block:: php + + getRobots(); + + // but, how to get the related record based on the column (similar_robots_id) + // if both relationships have the same name? + +The aliases allow us to rename both relationships to solve these problems: + +.. code-block:: php + + belongsTo( + 'robots_id', + 'Robots', + 'id', + array( + 'alias' => 'Robot' + ) + ); + + $this->belongsTo( + 'similar_robots_id', + 'Robots', + 'id', + array( + 'alias' => 'SimilarRobot' + ) + ); + } + } + +With the aliasing we can get the related records easily: + +.. code-block:: php + + getRobot(); + $robot = $robotsSimilar->robot; + + // Returns the related record based on the column (similar_robots_id) + $similarRobot = $robotsSimilar->getSimilarRobot(); + $similarRobot = $robotsSimilar->similarRobot; + +Magic Getters vs. Explicit methods +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Most IDEs and editors with auto-completion capabilities can not infer the correct types when using magic getters, +instead of use the magic getters you can optionally define those methods explicitly with the corresponding +docblocks helping the IDE to produce a better auto-completion: + +.. code-block:: php + + hasMany("id", "RobotsParts", "robots_id"); + } + + /** + * Return the related "robots parts" + * + * @return \RobotsParts[] + */ + public function getRobotsParts($parameters = null) + { + return $this->getRelated('RobotsParts', $parameters); + } + } + +Virtual Foreign Keys +-------------------- +By default, relationships do not act like database foreign keys, that is, if you try to insert/update a value without having a valid +value in the referenced model, Phalcon will not produce a validation message. You can modify this behavior by adding a fourth parameter +when defining a relationship. + +The RobotsPart model can be changed to demonstrate this feature: + +.. code-block:: php + + belongsTo( + "robots_id", + "Robots", + "id", + array( + "foreignKey" => true + ) + ); + + $this->belongsTo( + "parts_id", + "Parts", + "id", + array( + "foreignKey" => array( + "message" => "The part_id does not exist on the Parts model" + ) + ) + ); + } + } + +If you alter a :code:`belongsTo()` relationship to act as foreign key, it will validate that the values inserted/updated on those fields have a +valid value on the referenced model. Similarly, if a :code:`hasMany()`/:code:`hasOne()` is altered it will validate that the records cannot be deleted +if that record is used on a referenced model. + +.. code-block:: php + + hasMany( + "id", + "RobotsParts", + "parts_id", + array( + "foreignKey" => array( + "message" => "The part cannot be deleted because other robots are using it" + ) + ) + ); + } + } + +A virtual foreign key can be set up to allow null values as follows: + +.. code-block:: php + + belongsTo( + "parts_id", + "Parts", + "id", + array( + "foreignKey" => array( + "allowNulls" => true, + "message" => "The part_id does not exist on the Parts model" + ) + ) + ); + } + } + +Cascade/Restrict actions +^^^^^^^^^^^^^^^^^^^^^^^^ +Relationships that act as virtual foreign keys by default restrict the creation/update/deletion of records +to maintain the integrity of data: + +.. code-block:: php + + hasMany( + 'id', + 'Store\\Models\\Parts', + 'robots_id', + array( + 'foreignKey' => array( + 'action' => Relation::ACTION_CASCADE + ) + ) + ); + } + } + +The above code set up to delete all the referenced records (parts) if the master record (robot) is deleted. + +Generating Calculations +----------------------- +Calculations (or aggregations) are helpers for commonly used functions of database systems such as COUNT, SUM, MAX, MIN or AVG. +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` allows to use these functions directly from the exposed methods. + +Count examples: + +.. code-block:: php + + "area" + ) + ); + + // How many employees are in the Testing area? + $rowcount = Employees::count( + "area = 'Testing'" + ); + + // Count employees grouping results by their area + $group = Employees::count( + array( + "group" => "area" + ) + ); + foreach ($group as $row) { + echo "There are ", $row->rowcount, " in ", $row->area; + } + + // Count employees grouping by their area and ordering the result by count + $group = Employees::count( + array( + "group" => "area", + "order" => "rowcount" + ) + ); + + // Avoid SQL injections using bound parameters + $group = Employees::count( + array( + "type > ?0", + "bind" => array($type) + ) + ); + +Sum examples: + +.. code-block:: php + + "salary" + ) + ); + + // How much are the salaries of all employees in the Sales area? + $total = Employees::sum( + array( + "column" => "salary", + "conditions" => "area = 'Sales'" + ) + ); + + // Generate a grouping of the salaries of each area + $group = Employees::sum( + array( + "column" => "salary", + "group" => "area" + ) + ); + foreach ($group as $row) { + echo "The sum of salaries of the ", $row->area, " is ", $row->sumatory; + } + + // Generate a grouping of the salaries of each area ordering + // salaries from higher to lower + $group = Employees::sum( + array( + "column" => "salary", + "group" => "area", + "order" => "sumatory DESC" + ) + ); + + // Avoid SQL injections using bound parameters + $group = Employees::sum( + array( + "conditions" => "area > ?0", + "bind" => array($area) + ) + ); + +Average examples: + +.. code-block:: php + + "salary" + ) + ); + + // What is the average salary for the Sales's area employees? + $average = Employees::average( + array( + "column" => "salary", + "conditions" => "area = 'Sales'" + ) + ); + + // Avoid SQL injections using bound parameters + $average = Employees::average( + array( + "column" => "age", + "conditions" => "area > ?0", + "bind" => array($area) + ) + ); + +Max/Min examples: + +.. code-block:: php + + "age" + ) + ); + + // What is the oldest of employees from the Sales area? + $age = Employees::maximum( + array( + "column" => "age", + "conditions" => "area = 'Sales'" + ) + ); + + // What is the lowest salary of all employees? + $salary = Employees::minimum( + array( + "column" => "salary" + ) + ); + +Hydration Modes +--------------- +As mentioned above, resultsets are collections of complete objects, this means that every returned result is an object +representing a row in the database. These objects can be modified and saved again to persistence: + +.. code-block:: php + + year = 2000; + $robot->save(); + } + +Sometimes records are obtained only to be presented to a user in read-only mode, in these cases it may be useful +to change the way in which records are represented to facilitate their handling. The strategy used to represent objects +returned in a resultset is called 'hydration mode': + +.. code-block:: php + + setHydrateMode(Resultset::HYDRATE_ARRAYS); + + foreach ($robots as $robot) { + echo $robot['year'], PHP_EOL; + } + + // Return every robot as a stdClass + $robots->setHydrateMode(Resultset::HYDRATE_OBJECTS); + + foreach ($robots as $robot) { + echo $robot->year, PHP_EOL; + } + + // Return every robot as a Robots instance + $robots->setHydrateMode(Resultset::HYDRATE_RECORDS); + + foreach ($robots as $robot) { + echo $robot->year, PHP_EOL; + } + +Hydration mode can also be passed as a parameter of 'find': + +.. code-block:: php + + Resultset::HYDRATE_ARRAYS + ) + ); + + foreach ($robots as $robot) { + echo $robot['year'], PHP_EOL; + } + +Creating Updating/Records +------------------------- +The method :code:`Phalcon\Mvc\Model::save()` allows you to create/update records according to whether they already exist in the table +associated with a model. The save method is called internally by the create and update methods of :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>`. +For this to work as expected it is necessary to have properly defined a primary key in the entity to determine whether a record +should be updated or created. + +Also the method executes associated validators, virtual foreign keys and events that are defined in the model: + +.. code-block:: php + + type = "mechanical"; + $robot->name = "Astro Boy"; + $robot->year = 1952; + + if ($robot->save() == false) { + echo "Umh, We can't store robots right now: \n"; + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "Great, a new robot was saved successfully!"; + } + +An array could be passed to "save" to avoid assign every column manually. :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` will check if there are setters implemented for +the columns passed in the array giving priority to them instead of assign directly the values of the attributes: + +.. code-block:: php + + save( + array( + "type" => "mechanical", + "name" => "Astro Boy", + "year" => 1952 + ) + ); + +Values assigned directly or via the array of attributes are escaped/sanitized according to the related attribute data type. So you can pass +an insecure array without worrying about possible SQL injections: + +.. code-block:: php + + save($_POST); + +.. highlights:: + + Without precautions mass assignment could allow attackers to set any database column's value. Only use this feature + if you want to permit a user to insert/update every column in the model, even if those fields are not in the submitted + form. + +You can set an additional parameter in 'save' to set a whitelist of fields that only must taken into account when doing +the mass assignment: + +.. code-block:: php + + save( + $_POST, + array( + 'name', + 'type' + ) + ); + +Create/Update with Confidence +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When an application has a lot of competition, we could be expecting create a record but it is actually updated. This +could happen if we use :code:`Phalcon\Mvc\Model::save()` to persist the records in the database. If we want to be absolutely +sure that a record is created or updated, we can change the :code:`save()` call with :code:`create()` or :code:`update()`: + +.. code-block:: php + + type = "mechanical"; + $robot->name = "Astro Boy"; + $robot->year = 1952; + + // This record only must be created + if ($robot->create() == false) { + echo "Umh, We can't store robots right now: \n"; + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "Great, a new robot was created successfully!"; + } + +These methods "create" and "update" also accept an array of values as parameter. + +Auto-generated identity columns +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Some models may have identity columns. These columns usually are the primary key of the mapped table. :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` +can recognize the identity column omitting it in the generated SQL INSERT, so the database system can generate an auto-generated value for it. +Always after creating a record, the identity field will be registered with the value generated in the database system for it: + +.. code-block:: php + + save(); + + echo "The generated id is: ", $robot->id; + +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` is able to recognize the identity column. Depending on the database system, those columns may be +serial columns like in PostgreSQL or auto_increment columns in the case of MySQL. + +PostgreSQL uses sequences to generate auto-numeric values, by default, Phalcon tries to obtain the generated value from the sequence "table_field_seq", +for example: robots_id_seq, if that sequence has a different name, the method "getSequenceName" needs to be implemented: + +.. code-block:: php + + name = 'Shinichi Osawa'; + $artist->country = 'Japan'; + + // Create an album + $album = new Albums(); + $album->name = 'The One'; + $album->artist = $artist; // Assign the artist + $album->year = 2008; + + // Save both records + $album->save(); + +Saving a record and its related records in a has-many relation: + +.. code-block:: php + + name = 'The One'; + $album->artist = $artist; + + $songs = array(); + + // Create a first song + $songs[0] = new Songs(); + $songs[0]->name = 'Star Guitar'; + $songs[0]->duration = '5:54'; + + // Create a second song + $songs[1] = new Songs(); + $songs[1]->name = 'Last Days'; + $songs[1]->duration = '4:29'; + + // Assign the songs array + $album->songs = $songs; + + // Save the album + its songs + $album->save(); + +Saving the album and the artist at the same time implicitly makes use of a transaction so if anything +goes wrong with saving the related records, the parent will not be saved either. Messages are +passed back to the user for information regarding any errors. + +Note: Adding related entities by overloading the following methods is not possible: + + - :code:`Phalcon\Mvc\Model::beforeSave()` + - :code:`Phalcon\Mvc\Model::beforeCreate()` + - :code:`Phalcon\Mvc\Model::beforeUpdate()` + +You need to overload :code:`Phalcon\Mvc\Model::save()` for this to work from within a model. + +Validation Messages +^^^^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` has a messaging subsystem that provides a flexible way to output or store the +validation messages generated during the insert/update processes. + +Each message consists of an instance of the class :doc:`Phalcon\\Mvc\\Model\\Message <../api/Phalcon_Mvc_Model_Message>`. The set of +messages generated can be retrieved with the method :code:`getMessages()`. Each message provides extended information like the field name that +generated the message or the message type: + +.. code-block:: php + + save() == false) { + foreach ($robot->getMessages() as $message) { + echo "Message: ", $message->getMessage(); + echo "Field: ", $message->getField(); + echo "Type: ", $message->getType(); + } + } + +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` can generate the following types of validation messages: + ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| Type | Description | ++======================+====================================================================================================================================+ +| PresenceOf | Generated when a field with a non-null attribute on the database is trying to insert/update a null value | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| ConstraintViolation | Generated when a field part of a virtual foreign key is trying to insert/update a value that doesn't exist in the referenced model | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| InvalidValue | Generated when a validator failed because of an invalid value | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| InvalidCreateAttempt | Produced when a record is attempted to be created but it already exists | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| InvalidUpdateAttempt | Produced when a record is attempted to be updated but it doesn't exist | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ + +The method :code:`getMessages()` can be overridden in a model to replace/translate the default messages generated automatically by the ORM: + +.. code-block:: php + + getType()) { + case 'InvalidCreateAttempt': + $messages[] = 'The record cannot be created because it already exists'; + break; + case 'InvalidUpdateAttempt': + $messages[] = 'The record cannot be updated because it doesn\'t exist'; + break; + case 'PresenceOf': + $messages[] = 'The field ' . $message->getField() . ' is mandatory'; + break; + } + } + + return $messages; + } + } + +Events and Events Manager +^^^^^^^^^^^^^^^^^^^^^^^^^ +Models allow you to implement events that will be thrown when performing an insert/update/delete. They help define business rules for a +certain model. The following are the events supported by :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` and their order of execution: + ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Operation | Name | Can stop operation? | Explanation | ++====================+==========================+=======================+===================================================================================================================================+ +| Inserting/Updating | beforeValidation | YES | Is executed before the fields are validated for not nulls/empty strings or foreign keys | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting | beforeValidationOnCreate | YES | Is executed before the fields are validated for not nulls/empty strings or foreign keys when an insertion operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Updating | beforeValidationOnUpdate | YES | Is executed before the fields are validated for not nulls/empty strings or foreign keys when an updating operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | onValidationFails | YES (already stopped) | Is executed after an integrity validator fails | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting | afterValidationOnCreate | YES | Is executed after the fields are validated for not nulls/empty strings or foreign keys when an insertion operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Updating | afterValidationOnUpdate | YES | Is executed after the fields are validated for not nulls/empty strings or foreign keys when an updating operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | afterValidation | YES | Is executed after the fields are validated for not nulls/empty strings or foreign keys | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | beforeSave | YES | Runs before the required operation over the database system | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Updating | beforeUpdate | YES | Runs before the required operation over the database system only when an updating operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting | beforeCreate | YES | Runs before the required operation over the database system only when an inserting operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Updating | afterUpdate | NO | Runs after the required operation over the database system only when an updating operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting | afterCreate | NO | Runs after the required operation over the database system only when an inserting operation is being made | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | afterSave | NO | Runs after the required operation over the database system | ++--------------------+--------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + +Implementing Events in the Model's class +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The easier way to make a model react to events is implement a method with the same name of the event in the model's class: + +.. code-block:: php + + created_at = date('Y-m-d H:i:s'); + } + + public function beforeUpdate() + { + // Set the modification date + $this->modified_in = date('Y-m-d H:i:s'); + } + } + +Using a custom Events Manager +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Additionally, this component is integrated with :doc:`Phalcon\\Events\\Manager <../api/Phalcon_Events_Manager>`, +this means we can create listeners that run when an event is triggered. + +.. code-block:: php + + attach('model', function ($event, $robot) { + if ($event->getType() == 'beforeSave') { + if ($robot->name == 'Scooby Doo') { + echo "Scooby Doo isn't a robot!"; + return false; + } + } + + return true; + }); + + // Attach the events manager to the event + $this->setEventsManager($eventsManager); + } + } + +In the example given above, the Events Manager only acts as a bridge between an object and a listener (the anonymous function). +Events will be fired to the listener when 'robots' are saved: + +.. code-block:: php + + name = 'Scooby Doo'; + $robot->year = 1969; + + $robot->save(); + +If we want all objects created in our application use the same EventsManager, then we need to assign it to the Models Manager: + +.. code-block:: php + + setShared('modelsManager', function () { + + $eventsManager = new \Phalcon\Events\Manager(); + + // Attach an anonymous function as a listener for "model" events + $eventsManager->attach('model', function ($event, $model) { + + // Catch events produced by the Robots model + if (get_class($model) == 'Robots') { + + if ($event->getType() == 'beforeSave') { + if ($model->name == 'Scooby Doo') { + echo "Scooby Doo isn't a robot!"; + return false; + } + } + } + + return true; + }); + + // Setting a default EventsManager + $modelsManager = new ModelsManager(); + $modelsManager->setEventsManager($eventsManager); + + return $modelsManager; + }); + +If a listener returns false that will stop the operation that is executing currently. + +Implementing a Business Rule +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When an insert, update or delete is executed, the model verifies if there are any methods with the names of +the events listed in the table above. + +We recommend that validation methods are declared protected to prevent that business logic implementation +from being exposed publicly. + +The following example implements an event that validates the year cannot be smaller than 0 on update or insert: + +.. code-block:: php + + year < 0) { + echo "Year cannot be smaller than zero!"; + return false; + } + } + } + +Some events return false as an indication to stop the current operation. If an event doesn't return anything, :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` +will assume a true value. + +Validating Data Integrity +^^^^^^^^^^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` provides several events to validate data and implement business rules. The special "validation" +event allows us to call built-in validators over the record. Phalcon exposes a few built-in validators that can be used at this stage of validation. + +The following example shows how to use it: + +.. code-block:: php + + validate( + new InclusionIn( + array( + "field" => "type", + "domain" => array("Mechanical", "Virtual") + ) + ) + ); + + $this->validate( + new Uniqueness( + array( + "field" => "name", + "message" => "The robot name must be unique" + ) + ) + ); + + return $this->validationHasFailed() != true; + } + } + +The above example performs a validation using the built-in validator "InclusionIn". It checks the value of the field "type" in a domain list. If +the value is not included in the method then the validator will fail and return false. The following built-in validators are available: + ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Name | Explanation | Example | ++==============+==================================================================================================================================================================+==================================================================+ +| PresenceOf | Validates that a field's value isn't null or empty string. This validator is automatically added based on the attributes marked as not null on the mapped table | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_PresenceOf>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Email | Validates that field contains a valid email format | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Email>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| ExclusionIn | Validates that a value is not within a list of possible values | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Exclusionin>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| InclusionIn | Validates that a value is within a list of possible values | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Inclusionin>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Numericality | Validates that a field has a numeric format | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Numericality>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Regex | Validates that the value of a field matches a regular expression | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Regex>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Uniqueness | Validates that a field or a combination of a set of fields are not present more than once in the existing records of the related table | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Uniqueness>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| StringLength | Validates the length of a string | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_StringLength>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ +| Url | Validates that a value has a valid URL format | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Url>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+ + +In addition to the built-in validators, you can create your own validators: + +.. code-block:: php + + getOption('field'); + + $min = $this->getOption('min'); + $max = $this->getOption('max'); + + $value = $model->$field; + + if ($min <= $value && $value <= $max) { + $this->appendMessage( + "The field doesn't have the right range of values", + $field, + "MaxMinValidator" + ); + + return false; + } + + return true; + } + } + +.. highlights:: + + *NOTE* Up to version 2.0.4 :code:`$model` must be :doc:`Phalcon\\Mvc\\ModelInterface <../api/Phalcon_Mvc_ModelInterface>` + instance (:code:`public function validate(Phalcon\Mvc\ModelInterface $model)`). + +Adding the validator to a model: + +.. code-block:: php + + validate( + new MaxMinValidator( + array( + "field" => "price", + "min" => 10, + "max" => 100 + ) + ) + ); + + if ($this->validationHasFailed() == true) { + return false; + } + } + } + +The idea of creating validators is make them reusable between several models. A validator can also be as simple as: + +.. code-block:: php + + type == "Old") { + $message = new Message( + "Sorry, old robots are not allowed anymore", + "type", + "MyType" + ); + + $this->appendMessage($message); + + return false; + } + + return true; + } + } + +Avoiding SQL injections +^^^^^^^^^^^^^^^^^^^^^^^ +Every value assigned to a model attribute is escaped depending of its data type. A developer doesn't need to escape manually +each value before storing it on the database. Phalcon uses internally the `bound parameters `_ +capability provided by PDO to automatically escape every value to be stored in the database. + +.. code-block:: bash + + mysql> desc products; + +------------------+------------------+------+-----+---------+----------------+ + | Field | Type | Null | Key | Default | Extra | + +------------------+------------------+------+-----+---------+----------------+ + | id | int(10) unsigned | NO | PRI | NULL | auto_increment | + | product_types_id | int(10) unsigned | NO | MUL | NULL | | + | name | varchar(70) | NO | | NULL | | + | price | decimal(16,2) | NO | | NULL | | + | active | char(1) | YES | | NULL | | + +------------------+------------------+------+-----+---------+----------------+ + 5 rows in set (0.00 sec) + +If we use just PDO to store a record in a secure way, we need to write the following code: + +.. code-block:: php + + prepare($sql); + + $sth->bindParam(':productTypesId', $productTypesId, PDO::PARAM_INT); + $sth->bindParam(':name', $name, PDO::PARAM_STR, 70); + $sth->bindParam(':price', doubleval($price)); + $sth->bindParam(':active', $active, PDO::PARAM_STR, 1); + + $sth->execute(); + +The good news is that Phalcon do this for you automatically: + +.. code-block:: php + + product_types_id = 1; + $product->name = 'Artichoke'; + $product->price = 10.5; + $product->active = 'Y'; + + $product->create(); + +Skipping Columns +---------------- +To tell :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` that always omits some fields in the creation and/or update of records in order +to delegate the database system the assignation of the values by a trigger or a default: + +.. code-block:: php + + skipAttributes( + array( + 'year', + 'price' + ) + ); + + // Skips only when inserting + $this->skipAttributesOnCreate( + array( + 'created_at' + ) + ); + + // Skips only when updating + $this->skipAttributesOnUpdate( + array( + 'modified_in' + ) + ); + } + } + +This will ignore globally these fields on each INSERT/UPDATE operation on the whole application. +If you want to ignore different attributes on different INSERT/UPDATE operations, you can specify the second parameter (boolean) - true +for replacement. Forcing a default value can be done in the following way: + +.. code-block:: php + + name = 'Bender'; + $robot->year = 1999; + $robot->created_at = new RawValue('default'); + + $robot->create(); + +A callback also can be used to create a conditional assignment of automatic default values: + +.. code-block:: php + + price > 10000) { + $this->type = new RawValue('default'); + } + } + } + +.. highlights:: + + Never use a :doc:`Phalcon\\Db\\RawValue <../api/Phalcon_Db_RawValue>` to assign external data (such as user input) + or variable data. The value of these fields is ignored when binding parameters to the query. + So it could be used to attack the application injecting SQL. + +Dynamic Update +^^^^^^^^^^^^^^ +SQL UPDATE statements are by default created with every column defined in the model (full all-field SQL update). +You can change specific models to make dynamic updates, in this case, just the fields that had changed +are used to create the final SQL statement. + +In some cases this could improve the performance by reducing the traffic between the application and the database server, +this specially helps when the table has blob/text fields: + +.. code-block:: php + + useDynamicUpdate(true); + } + } + +Deleting Records +---------------- +The method :code:`Phalcon\Mvc\Model::delete()` allows to delete a record. You can use it as follows: + +.. code-block:: php + + delete() == false) { + echo "Sorry, we can't delete the robot right now: \n"; + + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "The robot was deleted successfully!"; + } + } + +You can also delete many records by traversing a resultset with a foreach: + +.. code-block:: php + + delete() == false) { + echo "Sorry, we can't delete the robot right now: \n"; + + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "The robot was deleted successfully!"; + } + } + +The following events are available to define custom business rules that can be executed when a delete operation is +performed: + ++-----------+--------------+---------------------+------------------------------------------+ +| Operation | Name | Can stop operation? | Explanation | ++===========+==============+=====================+==========================================+ +| Deleting | beforeDelete | YES | Runs before the delete operation is made | ++-----------+--------------+---------------------+------------------------------------------+ +| Deleting | afterDelete | NO | Runs after the delete operation was made | ++-----------+--------------+---------------------+------------------------------------------+ + +With the above events can also define business rules in the models: + +.. code-block:: php + + status == 'A') { + echo "The robot is active, it can't be deleted"; + + return false; + } + + return true; + } + } + +Validation Failed Events +------------------------ +Another type of events are available when the data validation process finds any inconsistency: + ++--------------------------+--------------------+--------------------------------------------------------------------+ +| Operation | Name | Explanation | ++==========================+====================+====================================================================+ +| Insert or Update | notSaved | Triggered when the INSERT or UPDATE operation fails for any reason | ++--------------------------+--------------------+--------------------------------------------------------------------+ +| Insert, Delete or Update | onValidationFails | Triggered when any data manipulation operation fails | ++--------------------------+--------------------+--------------------------------------------------------------------+ + +Behaviors +--------- +Behaviors are shared conducts that several models may adopt in order to re-use code, the ORM provides an API to implement +behaviors in your models. Also, you can use the events and callbacks as seen before as an alternative to implement Behaviors with more freedom. + +A behavior must be added in the model initializer, a model can have zero or more behaviors: + +.. code-block:: php + + addBehavior( + new Timestampable( + array( + 'beforeCreate' => array( + 'field' => 'created_at', + 'format' => 'Y-m-d' + ) + ) + ) + ); + } + } + +The following built-in behaviors are provided by the framework: + ++----------------+-------------------------------------------------------------------------------------------------------------------------------+ +| Name | Description | ++================+===============================================================================================================================+ +| Timestampable | Allows to automatically update a model's attribute saving the datetime when a record is created or updated | ++----------------+-------------------------------------------------------------------------------------------------------------------------------+ +| SoftDelete | Instead of permanently delete a record it marks the record as deleted changing the value of a flag column | ++----------------+-------------------------------------------------------------------------------------------------------------------------------+ + +Timestampable +^^^^^^^^^^^^^ +This behavior receives an array of options, the first level key must be an event name indicating when the column must be assigned: + +.. code-block:: php + + addBehavior( + new Timestampable( + array( + 'beforeCreate' => array( + 'field' => 'created_at', + 'format' => 'Y-m-d' + ) + ) + ) + ); + } + +Each event can have its own options, 'field' is the name of the column that must be updated, if 'format' is a string it will be used +as format of the PHP's function date_, format can also be an anonymous function providing you the free to generate any kind timestamp: + +.. code-block:: php + + addBehavior( + new Timestampable( + array( + 'beforeCreate' => array( + 'field' => 'created_at', + 'format' => function () { + $datetime = new Datetime(new DateTimeZone('Europe/Stockholm')); + return $datetime->format('Y-m-d H:i:sP'); + } + ) + ) + ) + ); + } + +If the option 'format' is omitted a timestamp using the PHP's function time_, will be used. + +SoftDelete +^^^^^^^^^^ +This behavior can be used in the following way: + +.. code-block:: php + + addBehavior( + new SoftDelete( + array( + 'field' => 'status', + 'value' => Users::DELETED + ) + ) + ); + } + } + +This behavior accepts two options: 'field' and 'value', 'field' determines what field must be updated and 'value' the value to be deleted. +Let's pretend the table 'users' has the following data: + +.. code-block:: bash + + mysql> select * from users; + +----+---------+--------+ + | id | name | status | + +----+---------+--------+ + | 1 | Lana | N | + | 2 | Brandon | N | + +----+---------+--------+ + 2 rows in set (0.00 sec) + +If we delete any of the two records the status will be updated instead of delete the record: + +.. code-block:: php + + delete(); + +The operation will result in the following data in the table: + +.. code-block:: bash + + mysql> select * from users; + +----+---------+--------+ + | id | name | status | + +----+---------+--------+ + | 1 | Lana | N | + | 2 | Brandon | D | + +----+---------+--------+ + 2 rows in set (0.01 sec) + +Note that you need to specify the deleted condition in your queries to effectively ignore them as deleted records, this behavior doesn't support that. + +Creating your own behaviors +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The ORM provides an API to create your own behaviors. A behavior must be a class implementing the :doc:`Phalcon\\Mvc\\Model\\BehaviorInterface <../api/Phalcon_Mvc_Model_BehaviorInterface>`. +Also, :doc:`Phalcon\\Mvc\\Model\\Behavior <../api/Phalcon_Mvc_Model_Behavior>` provides most of the methods needed to ease the implementation of behaviors. + +The following behavior is an example, it implements the Blameable behavior which helps identify the user +that is performed operations over a model: + +.. code-block:: php + + id + ); + + break; + + default: + /* ignore the rest of events */ + } + } + } + +The former is a very simple behavior, but it illustrates how to create a behavior, now let's add this behavior to a model: + +.. code-block:: php + + addBehavior(new Blameable()); + } + } + +A behavior is also capable of intercepting missing methods on your models: + +.. code-block:: php + + title); + } + } + } + +Call that method on a model that implements Sluggable returns a SEO friendly title: + +.. code-block:: php + + getSlug(); + +Using Traits as behaviors +^^^^^^^^^^^^^^^^^^^^^^^^^ +Starting from PHP 5.4 you can use Traits_ to re-use code in your classes, this is another way to implement +custom behaviors. The following trait implements a simple version of the Timestampable behavior: + +.. code-block:: php + + created_at = date('r'); + } + + public function beforeUpdate() + { + $this->updated_at = date('r'); + } + } + +Then you can use it in your model as follows: + +.. code-block:: php + + 'code', + 'the_name' => 'theName', + 'the_type' => 'theType', + 'the_year' => 'theYear' + ); + } + } + +Then you can use the new names naturally in your code: + +.. code-block:: php + + theName, "\n"; + + // Get robots ordered by type + $robot = Robots::find( + array( + 'order' => 'theType DESC' + ) + ); + foreach ($robots as $robot) { + echo 'Code: ', $robot->code, "\n"; + } + + // Create a robot + $robot = new Robots(); + $robot->code = '10101'; + $robot->theName = 'Bender'; + $robot->theType = 'Industrial'; + $robot->theYear = 2999; + + $robot->save(); + +Take into consideration the following the next when renaming your columns: + +* References to attributes in relationships/validators must use the new names +* Refer the real column names will result in an exception by the ORM + +The independent column map allow you to: + +* Write applications using your own conventions +* Eliminate vendor prefixes/suffixes in your code +* Change column names without change your application code + +Operations over Resultsets +-------------------------- +If a resultset is composed of complete objects, the resultset is in the ability to perform operations on the records obtained in a simple manner: + +Updating related records +^^^^^^^^^^^^^^^^^^^^^^^^ +Instead of doing this: + +.. code-block:: php + + getParts() as $part) { + $part->stock = 100; + $part->updated_at = time(); + + if ($part->update() == false) { + foreach ($part->getMessages() as $message) { + echo $message; + } + + break; + } + } + +you can do this: + +.. code-block:: php + + getParts()->update( + array( + 'stock' => 100, + 'updated_at' => time() + ) + ); + +'update' also accepts an anonymous function to filter what records must be updated: + +.. code-block:: php + + 100, + 'updated_at' => time() + ); + + // Update all the parts except those whose type is basic + $robots->getParts()->update($data, function ($part) { + if ($part->type == Part::TYPE_BASIC) { + return false; + } + + return true; + }); + +Deleting related records +^^^^^^^^^^^^^^^^^^^^^^^^ +Instead of doing this: + +.. code-block:: php + + getParts() as $part) { + if ($part->delete() == false) { + foreach ($part->getMessages() as $message) { + echo $message; + } + + break; + } + } + +you can do this: + +.. code-block:: php + + getParts()->delete(); + +'delete' also accepts an anonymous function to filter what records must be deleted: + +.. code-block:: php + + getParts()->delete(function ($part) { + if ($part->stock < 0) { + return false; + } + + return true; + }); + + +Record Snapshots +---------------- +Specific models could be set to maintain a record snapshot when they're queried. You can use this feature to implement auditing or just to know what +fields are changed according to the data queried from the persistence: + +.. code-block:: php + + keepSnapshots(true); + } + } + +When activating this feature the application consumes a bit more of memory to keep track of the original values obtained from the persistence. +In models that have this feature activated you can check what fields changed: + +.. code-block:: php + + name = 'Other name'; + + var_dump($robot->getChangedFields()); // ['name'] + var_dump($robot->hasChanged('name')); // true + var_dump($robot->hasChanged('type')); // false + +Pointing to a different schema +------------------------------ +If a model is mapped to a table that is in a different schemas/databases than the default. You can use the getSchema method to define that: + +.. code-block:: php + + ` needs to connect to the database it requests the "db" service +in the application's services container. You can overwrite this service setting it in the initialize method: + +.. code-block:: php + + set('dbMysql', function () { + return new MysqlPdo( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + }); + + // This service returns a PostgreSQL database + $di->set('dbPostgres', function () { + return new PostgreSQLPdo( + array( + "host" => "localhost", + "username" => "postgres", + "password" => "", + "dbname" => "invo" + ) + ); + }); + +Then, in the initialize method, we define the connection service for the model: + +.. code-block:: php + + setConnectionService('dbPostgres'); + } + } + +But Phalcon offers you more flexibility, you can define the connection that must be used to 'read' and for 'write'. This is specially useful +to balance the load to your databases implementing a master-slave architecture: + +.. code-block:: php + + setReadConnectionService('dbSlave'); + $this->setWriteConnectionService('dbMaster'); + } + } + +The ORM also provides Horizontal Sharding facilities, by allowing you to implement a 'shard' selection +according to the current query conditions: + +.. code-block:: php + + 0 && $id < 10000) { + return $this->getDI()->get('dbShard1'); + } + + if ($id > 10000) { + return $this->getDI()->get('dbShard2'); + } + } + } + + // Use a default shard + return $this->getDI()->get('dbShard0'); + } + } + +The method 'selectReadConnection' is called to choose the right connection, this method intercepts any new +query executed: + +.. code-block:: php + + ` to access a database, it is +difficult to understand which statements are finally sent to the database system. :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>` +is supported internally by :doc:`Phalcon\\Db <../api/Phalcon_Db>`. :doc:`Phalcon\\Logger <../api/Phalcon_Logger>` interacts +with :doc:`Phalcon\\Db <../api/Phalcon_Db>`, providing logging capabilities on the database abstraction layer, thus allowing us to log SQL +statements as they happen. + +.. code-block:: php + + set('db', function () { + + $eventsManager = new EventsManager(); + + $logger = new FileLogger("app/logs/debug.log"); + + // Listen all the database events + $eventsManager->attach('db', function ($event, $connection) use ($logger) { + if ($event->getType() == 'beforeQuery') { + $logger->log($connection->getSQLStatement(), Logger::INFO); + } + }); + + $connection = new Connection( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // Assign the eventsManager to the db adapter instance + $connection->setEventsManager($eventsManager); + + return $connection; + }); + +As models access the default database connection, all SQL statements that are sent to the database system will be logged in the file: + +.. code-block:: php + + name = "Robby the Robot"; + $robot->created_at = "1956-07-21"; + + if ($robot->save() == false) { + echo "Cannot save robot"; + } + +As above, the file *app/logs/db.log* will contain something like this: + +.. code-block:: irc + + [Mon, 30 Apr 12 13:47:18 -0500][DEBUG][Resource Id #77] INSERT INTO robots + (name, created_at) VALUES ('Robby the Robot', '1956-07-21') + +Profiling SQL Statements +------------------------ +Thanks to :doc:`Phalcon\\Db <../api/Phalcon_Db>`, the underlying component of :doc:`Phalcon\\Mvc\\Model <../api/Phalcon_Mvc_Model>`, +it's possible to profile the SQL statements generated by the ORM in order to analyze the performance of database operations. With +this you can diagnose performance problems and to discover bottlenecks. + +.. code-block:: php + + set('profiler', function () { + return new ProfilerDb(); + }, true); + + $di->set('db', function () use ($di) { + + $eventsManager = new EventsManager(); + + // Get a shared instance of the DbProfiler + $profiler = $di->getProfiler(); + + // Listen all the database events + $eventsManager->attach('db', function ($event, $connection) use ($profiler) { + if ($event->getType() == 'beforeQuery') { + $profiler->startProfile($connection->getSQLStatement()); + } + + if ($event->getType() == 'afterQuery') { + $profiler->stopProfile(); + } + }); + + $connection = new MysqlPdo( + array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "invo" + ) + ); + + // Assign the eventsManager to the db adapter instance + $connection->setEventsManager($eventsManager); + + return $connection; + }); + +Profiling some queries: + +.. code-block:: php + + "name" + ) + ); + Robots::find( + array( + "limit" => 30 + ) + ); + + // Get the generated profiles from the profiler + $profiles = $di->get('profiler')->getProfiles(); + + foreach ($profiles as $profile) { + echo "SQL Statement: ", $profile->getSQLStatement(), "\n"; + echo "Start Time: ", $profile->getInitialTime(), "\n"; + echo "Final Time: ", $profile->getFinalTime(), "\n"; + echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "\n"; + } + +Each generated profile contains the duration in milliseconds that each instruction takes to complete as well as the generated SQL statement. + +Injecting services into Models +------------------------------ +You may be required to access the application services within a model, the following example explains how to do that: + +.. code-block:: php + + getDI()->getFlash(); + + // Show validation messages + foreach ($this->getMessages() as $message) { + $flash->error($message); + } + } + } + +The "notSaved" event is triggered every time that a "create" or "update" action fails. So we're flashing the validation messages +obtaining the "flash" service from the DI container. By doing this, we don't have to print messages after each save. + +Disabling/Enabling Features +--------------------------- +In the ORM we have implemented a mechanism that allow you to enable/disable specific features or options globally on the fly. +According to how you use the ORM you can disable that you aren't using. These options can also be temporarily disabled if required: + +.. code-block:: php + + false, + 'columnRenaming' => false + ) + ); + +The available options are: + ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| Option | Description | Default | ++=====================+=======================================================================================+===============+ +| events | Enables/Disables callbacks, hooks and event notifications from all the models | :code:`true` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| columnRenaming | Enables/Disables the column renaming | :code:`true` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| notNullValidations | The ORM automatically validate the not null columns present in the mapped table | :code:`true` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| virtualForeignKeys | Enables/Disables the virtual foreign keys | :code:`true` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| phqlLiterals | Enables/Disables literals in the PHQL parser | :code:`true` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ +| lateStateBinding | Enables/Disables late state binding of the method :code:`Mvc\Model::cloneResultMap()` | :code:`false` | ++---------------------+---------------------------------------------------------------------------------------+---------------+ + +Stand-Alone component +--------------------- +Using :doc:`Phalcon\\Mvc\\Model ` in a stand-alone mode can be demonstrated below: + +.. code-block:: php + + set( + 'db', + new Connection( + array( + "dbname" => "sample.db" + ) + ) + ); + + // Set a models manager + $di->set('modelsManager', new ModelsManager()); + + // Use the memory meta-data adapter or other + $di->set('modelsMetadata', new MetaData()); + + // Create a model + class Robots extends Model + { + + } + + // Use the model + echo Robots::count(); + +.. _PDO: http://php.net/manual/en/pdo.prepared-statements.php +.. _date: http://php.net/manual/en/function.date.php +.. _time: http://php.net/manual/en/function.time.php +.. _Traits: http://php.net/manual/en/language.oop5.traits.php diff --git a/id/reference/mvc.rst b/id/reference/mvc.rst new file mode 100755 index 000000000000..e9ef58c71b93 --- /dev/null +++ b/id/reference/mvc.rst @@ -0,0 +1,33 @@ +The MVC Architecture +==================== + +Phalcon offers the object-oriented classes, necessary to implement the Model, View, Controller architecture +(often referred to as MVC_) in your application. This design pattern is widely used by other web frameworks +and desktop applications. + +MVC benefits include: + +* Isolation of business logic from the user interface and the database layer +* Making it clear where different types of code belong for easier maintenance + +If you decide to use MVC, every request to your application resources will be managed by the MVC architecture. +Phalcon classes are written in C language, offering a high performance approach of this pattern in a PHP based application. + +Models +------ +A model represents the information (data) of the application and the rules to manipulate that data. Models are primarily used for +managing the rules of interaction with a corresponding database table. In most cases, each table in your database will correspond +to one model in your application. The bulk of your application's business logic will be concentrated in the models. :doc:`Learn more ` + +Views +----- +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. :doc:`Learn more ` + +Controllers +----------- +The controllers provide the "flow" between models and views. Controllers are responsible for processing the incoming requests +from the web browser, interrogating the models for data, and passing that data on to the views for presentation. :doc:`Learn more ` + +.. _MVC: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller diff --git a/id/reference/namespaces.rst b/id/reference/namespaces.rst new file mode 100644 index 000000000000..9e6422b2df82 --- /dev/null +++ b/id/reference/namespaces.rst @@ -0,0 +1,146 @@ +Working with Namespaces +======================= + +Namespaces_ can be used to avoid class name collisions; this means that if you have two controllers in an application with the same name, +a namespace can be used to differentiate them. Namespaces are also useful for creating bundles or modules. + +Setting up the framework +------------------------ +Using namespaces has some implications when loading the appropriate controller. To adjust the framework behavior to namespaces is necessary +to perform one or all of the following tasks: + +Use an autoload strategy that takes into account the namespaces, for example with :doc:`Phalcon\\Loader <../api/Phalcon_Loader>`: + +.. code-block:: php + + registerNamespaces( + array( + "Store\\Admin\\Controllers" => "../bundles/admin/controllers/", + "Store\\Admin\\Models" => "../bundles/admin/models/" + ) + ); + +Specify it in the routes as a separate parameter in the route's paths: + +.. code-block:: php + + add( + "/admin/users/my-profile", + array( + "namespace" => "Store\\Admin", + "controller" => "Users", + "action" => "profile" + ) + ); + +Passing it as part of the route: + +.. code-block:: php + + add( + "/:namespace/admin/users/my-profile", + array( + "namespace" => 1, + "controller" => "Users", + "action" => "profile" + ) + ); + +If you are only working with the same namespace for every controller in your application, then you can define a default namespace +in the Dispatcher, by doing this, you don't need to specify a full class name in the router path: + +.. code-block:: php + + set('dispatcher', function () { + $dispatcher = new Dispatcher(); + $dispatcher->setDefaultNamespace("Store\\Admin\\Controllers"); + return $dispatcher; + }); + +Controllers in Namespaces +------------------------- +The following example shows how to implement a controller that use namespaces: + +.. code-block:: php + + hasMany( + "id", + "Store\\Models\\Parts", + "robots_id", + array( + "alias" => "parts" + ) + ); + } + } + +In PHQL you must write the statements including namespaces: + +.. code-block:: php + + ` in relational databases, Phalcon can map documents from NoSQL databases. +The ODM offers a CRUD functionality, events, validations among other services. + +Due to the absence of SQL queries and planners, NoSQL databases can see real improvements in performance using the Phalcon approach. +Additionally, there are no SQL building reducing the possibility of SQL injections. + +The following NoSQL databases are supported: + ++------------+----------------------------------------------------------------------+ +| Name | Description | ++============+======================================================================+ +| MongoDB_ | MongoDB is a scalable, high-performance, open source NoSQL database. | ++------------+----------------------------------------------------------------------+ + +Creating Models +--------------- +A model is a class that extends from :doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>`. It must be placed in the models directory. A model +file must contain a single class; its class name should be in camel case notation: + +.. code-block:: php + + db.robots.find() + { "_id" : ObjectId("508735512d42b8c3d15ec4e1"), "name" : "Astro Boy", "year" : 1952, + "type" : "mechanical" } + { "_id" : ObjectId("5087358f2d42b8c3d15ec4e2"), "name" : "Bender", "year" : 1999, + "type" : "mechanical" } + { "_id" : ObjectId("508735d32d42b8c3d15ec4e3"), "name" : "Wall-E", "year" : 2008 } + > + +Models in Namespaces +-------------------- +Namespaces can be used to avoid class name collision. In this case it is necessary to indicate the name of the related collection using getSource: + +.. code-block:: php + + name; + +Once the record is in memory, you can make modifications to its data and then save changes: + +.. code-block:: php + + 'Astro Boy' + ) + ) + ); + $robot->name = "Voltron"; + $robot->save(); + +Setting a Connection +-------------------- +Connections are retrieved from the services container. By default, Phalcon tries to find the connection in a service called "mongo": + +.. code-block:: php + + set('mongo', function () { + $mongo = new MongoClient(); + return $mongo->selectDB("store"); + }, true); + + // Connecting to a domain socket, falling back to localhost connection + $di->set('mongo', function () { + $mongo = new MongoClient("mongodb:///tmp/mongodb-27017.sock,localhost:27017"); + return $mongo->selectDB("store"); + }, true); + +Finding Documents +----------------- +As :doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` relies on the Mongo PHP extension you have the same facilities +to query documents and convert them transparently to model instances: + +.. code-block:: php + + "mechanical" + ) + ) + ); + echo "There are ", count($robots), "\n"; + + // Get and print mechanical robots ordered by name upward + $robots = Robots::find( + array( + array( + "type" => "mechanical" + ), + "sort" => array( + "name" => 1 + ) + ) + ); + + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + + // Get first 100 mechanical robots ordered by name + $robots = Robots::find( + array( + array( + "type" => "mechanical" + ), + "sort" => array( + "name" => 1 + ), + "limit" => 100 + ) + ); + + foreach ($robots as $robot) { + echo $robot->name, "\n"; + } + +You could also use the :code:`findFirst()` method to get only the first record matching the given criteria: + +.. code-block:: php + + name, "\n"; + + // What's the first mechanical robot in robots collection? + $robot = Robots::findFirst( + array( + array( + "type" => "mechanical" + ) + ) + ); + echo "The first mechanical robot name is ", $robot->name, "\n"; + +Both :code:`find()` and :code:`findFirst()` methods accept an associative array specifying the search criteria: + +.. code-block:: php + + array( + "type" => "mechanical", + "year" => "1999" + ) + ) + ); + + // All virtual robots ordered by name downward + $robots = Robots::find( + array( + "conditions" => array("type" => "virtual"), + "sort" => array("name" => -1) + ) + ); + +The available query options are: + ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ +| Parameter | Description | Example | ++====================+==============================================================================================================================================================================================+======================================================+ +| :code:`conditions` | Search conditions for the find operation. Is used to extract only those records that fulfill a specified criterion. By default Phalcon_model assumes the first parameter are the conditions. | :code:`"conditions" => array('$gt' => 1990)` | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ +| :code:`fields` | Returns specific columns instead of the full fields in the collection. When using this option an incomplete object is returned | :code:`"fields" => array('name' => true)` | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ +| :code:`sort` | It's used to sort the resultset. Use one or more fields as each element in the array, 1 means ordering upwards, -1 downward | :code:`"sort" => array("name" => -1, "status" => 1)` | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ +| :code:`limit` | Limit the results of the query to results to certain range | :code:`"limit" => 10` | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ +| :code:`skip` | Skips a number of results | :code:`"skip" => 50` | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ + +If you have experience with SQL databases, you may want to check the `SQL to Mongo Mapping Chart`_. + +Aggregations +------------ +A model can return calculations using `aggregation framework`_ provided by Mongo. The aggregated values are calculate without having to use MapReduce. +With this option is easy perform tasks such as totaling or averaging field values: + +.. code-block:: php + + array('category' => 1) + ), + array( + '$group' => array( + '_id' => array('category' => '$category'), + 'id' => array('$max' => '$_id') + ) + ) + ) + ); + +Creating Updating/Records +------------------------- +The :code:`Phalcon\Mvc\Collection::save()` method allows you to create/update documents according to whether they already exist in the collection +associated with a model. The :code:`save()` method is called internally by the create and update methods of :doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>`. + +Also the method executes associated validators and events that are defined in the model: + +.. code-block:: php + + type = "mechanical"; + $robot->name = "Astro Boy"; + $robot->year = 1952; + if ($robot->save() == false) { + echo "Umh, We can't store robots right now: \n"; + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "Great, a new robot was saved successfully!"; + } + +The "_id" property is automatically updated with the MongoId_ object created by the driver: + +.. code-block:: php + + save(); + echo "The generated id is: ", $robot->getId(); + +Validation Messages +^^^^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` has a messaging subsystem that provides a flexible way to output or store the +validation messages generated during the insert/update processes. + +Each message consists of an instance of the class :doc:`Phalcon\\Mvc\\Model\\Message <../api/Phalcon_Mvc_Model_Message>`. The set of +messages generated can be retrieved with the method getMessages(). Each message provides extended information like the field name that +generated the message or the message type: + +.. code-block:: php + + save() == false) { + foreach ($robot->getMessages() as $message) { + echo "Message: ", $message->getMessage(); + echo "Field: ", $message->getField(); + echo "Type: ", $message->getType(); + } + } + +Validation Events and Events Manager +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Models allow you to implement events that will be thrown when performing an insert or update. They help define business rules for a +certain model. The following are the events supported by :doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` and their order of execution: + ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Operation | Name | Can stop operation? | Explanation | ++====================+==================================+=======================+====================================================================================================================+ +| Inserting/Updating | :code:`beforeValidation` | YES | Is executed before the validation process and the final insert/update to the database | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting | :code:`beforeValidationOnCreate` | YES | Is executed before the validation process only when an insertion operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Updating | :code:`beforeValidationOnUpdate` | YES | Is executed before the fields are validated for not nulls or foreign keys when an updating operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | :code:`onValidationFails` | YES (already stopped) | Is executed before the validation process only when an insertion operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting | :code:`afterValidationOnCreate` | YES | Is executed after the validation process when an insertion operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Updating | :code:`afterValidationOnUpdate` | YES | Is executed after the validation process when an updating operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | :code:`afterValidation` | YES | Is executed after the validation process | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | :code:`beforeSave` | YES | Runs before the required operation over the database system | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Updating | :code:`beforeUpdate` | YES | Runs before the required operation over the database system only when an updating operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting | :code:`beforeCreate` | YES | Runs before the required operation over the database system only when an inserting operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Updating | :code:`afterUpdate` | NO | Runs after the required operation over the database system only when an updating operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting | :code:`afterCreate` | NO | Runs after the required operation over the database system only when an inserting operation is being made | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ +| Inserting/Updating | :code:`afterSave` | NO | Runs after the required operation over the database system | ++--------------------+----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + +To make a model to react to an event, we must to implement a method with the same name of the event: + +.. code-block:: php + + created_at = date('Y-m-d H:i:s'); + } + + public function beforeUpdate() + { + // Set the modification date + $this->modified_in = date('Y-m-d H:i:s'); + } + } + +Additionally, this component is integrated with :doc:`Phalcon\\Events\\Manager `, this means we can create +listeners that run when an event is triggered. + +.. code-block:: php + + attach('collection', function ($event, $robot) { + if ($event->getType() == 'beforeSave') { + if ($robot->name == 'Scooby Doo') { + echo "Scooby Doo isn't a robot!"; + + return false; + } + } + + return true; + }); + + $robot = new Robots(); + $robot->setEventsManager($eventsManager); + $robot->name = 'Scooby Doo'; + $robot->year = 1969; + $robot->save(); + +In the example given above the EventsManager only acted as a bridge between an object and a listener (the anonymous function). If we want all +objects created in our application use the same EventsManager, then we need to assign this to the Models Manager: + +.. code-block:: php + + set( + 'collectionManager', + function () { + + $eventsManager = new EventsManager(); + + // Attach an anonymous function as a listener for "model" events + $eventsManager->attach( + 'collection', + function ($event, $model) { + if (get_class($model) == 'Robots') { + if ($event->getType() == 'beforeSave') { + if ($model->name == 'Scooby Doo') { + echo "Scooby Doo isn't a robot!"; + + return false; + } + } + } + + return true; + } + ); + + // Setting a default EventsManager + $modelsManager = new CollectionManager(); + + $modelsManager->setEventsManager($eventsManager); + + return $modelsManager; + }, + true + ); + +Implementing a Business Rule +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When an insert, update or delete is executed, the model verifies if there are any methods with the names of the events listed in the table above. + +We recommend that validation methods are declared protected to prevent that business logic implementation from being exposed publicly. + +The following example implements an event that validates the year cannot be smaller than 0 on update or insert: + +.. code-block:: php + + year < 0) { + echo "Year cannot be smaller than zero!"; + + return false; + } + } + } + +Some events return false as an indication to stop the current operation. If an event doesn't return anything, +:doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` will assume a true value. + +Validating Data Integrity +^^^^^^^^^^^^^^^^^^^^^^^^^ +:doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` provides several events to validate data and implement business rules. The special "validation" +event allows us to call built-in validators over the record. Phalcon exposes a few built-in validators that can be used at this stage of validation. + +The following example shows how to use it: + +.. code-block:: php + + validate( + new InclusionIn( + array( + "field" => "type", + "message" => "Type must be: mechanical or virtual", + "domain" => array("Mechanical", "Virtual") + ) + ) + ); + + $this->validate( + new Numericality( + array( + "field" => "price", + "message" => "Price must be numeric" + ) + ) + ); + + return $this->validationHasFailed() != true; + } + } + +The example given above performs a validation using the built-in validator "InclusionIn". It checks the value of the field "type" in a domain list. If +the value is not included in the method, then the validator will fail and return false. The following built-in validators are available: + ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| Name | Explanation | Example | ++==============+==================================================================+===================================================================+ +| Email | Validates that field contains a valid email format | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Email>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| ExclusionIn | Validates that a value is not within a list of possible values | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Exclusionin>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| InclusionIn | Validates that a value is within a list of possible values | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Inclusionin>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| Numericality | Validates that a field has a numeric format | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Numericality>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| Regex | Validates that the value of a field matches a regular expression | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_Regex>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ +| StringLength | Validates the length of a string | :doc:`Example <../api/Phalcon_Mvc_Model_Validator_StringLength>` | ++--------------+------------------------------------------------------------------+-------------------------------------------------------------------+ + +In addition to the built-in validators, you can create your own validators: + +.. code-block:: php + + getOption('field'); + + $value = $model->$field; + $filtered = filter_var($value, FILTER_VALIDATE_URL); + if (!$filtered) { + $this->appendMessage("The URL is invalid", $field, "UrlValidator"); + + return false; + } + + return true; + } + } + +Adding the validator to a model: + +.. code-block:: php + + validate( + new UrlValidator( + array( + "field" => "url", + ) + ) + ); + + if ($this->validationHasFailed() == true) { + return false; + } + } + } + +The idea of creating validators is to make them reusable across several models. A validator can also be as simple as: + +.. code-block:: php + + type == "Old") { + $message = new ModelMessage( + "Sorry, old robots are not allowed anymore", + "type", + "MyType" + ); + + $this->appendMessage($message); + + return false; + } + + return true; + } + } + +Deleting Records +---------------- +The :code:`Phalcon\Mvc\Collection::delete()` method allows you to delete a document. You can use it as follows: + +.. code-block:: php + + delete() == false) { + echo "Sorry, we can't delete the robot right now: \n"; + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "The robot was deleted successfully!"; + } + } + +You can also delete many documents by traversing a resultset with a :code:`foreach` loop: + +.. code-block:: php + + "mechanical" + ) + ) + ); + + foreach ($robots as $robot) { + if ($robot->delete() == false) { + echo "Sorry, we can't delete the robot right now: \n"; + foreach ($robot->getMessages() as $message) { + echo $message, "\n"; + } + } else { + echo "The robot was deleted successfully!"; + } + } + +The following events are available to define custom business rules that can be executed when a delete operation is performed: + ++-----------+----------------------+---------------------+------------------------------------------+ +| Operation | Name | Can stop operation? | Explanation | ++===========+======================+=====================+==========================================+ +| Deleting | :code:`beforeDelete` | YES | Runs before the delete operation is made | ++-----------+----------------------+---------------------+------------------------------------------+ +| Deleting | :code:`afterDelete` | NO | Runs after the delete operation was made | ++-----------+----------------------+---------------------+------------------------------------------+ + +Validation Failed Events +------------------------ +Another type of events is available when the data validation process finds any inconsistency: + ++--------------------------+---------------------------+--------------------------------------------------------------------+ +| Operation | Name | Explanation | ++==========================+===========================+====================================================================+ +| Insert or Update | :code:`notSave` | Triggered when the insert/update operation fails for any reason | ++--------------------------+---------------------------+--------------------------------------------------------------------+ +| Insert, Delete or Update | :code:`onValidationFails` | Triggered when any data manipulation operation fails | ++--------------------------+---------------------------+--------------------------------------------------------------------+ + +Implicit Ids vs. User Primary Keys +---------------------------------- +By default :doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` assumes that the :code:`_id` attribute is automatically generated using MongoIds_. +If a model uses custom primary keys this behavior can be overridden: + +.. code-block:: php + + useImplicitObjectIds(false); + } + } + +Setting multiple databases +-------------------------- +In Phalcon, all models can belong to the same database connection or have an individual one. Actually, when +:doc:`Phalcon\\Mvc\\Collection <../api/Phalcon_Mvc_Collection>` needs to connect to the database it requests the "mongo" service +in the application's services container. You can overwrite this service setting it in the initialize method: + +.. code-block:: php + + set( + 'mongo1', + function () { + $mongo = new MongoClient("mongodb://scott:nekhen@192.168.1.100"); + + return $mongo->selectDB("management"); + }, + true + ); + + // This service returns a mongo database at localhost + $di->set( + 'mongo2', + function () { + $mongo = new MongoClient("mongodb://localhost"); + + return $mongo->selectDB("invoicing"); + }, + true + ); + +Then, in the :code:`initialize()` method, we define the connection service for the model: + +.. code-block:: php + + setConnectionService('mongo1'); + } + } + +Injecting services into Models +------------------------------ +You may be required to access the application services within a model, the following example explains how to do that: + +.. code-block:: php + + getDI()->getShared('flash'); + + // Show validation messages + foreach ($this->getMessages() as $message) { + $flash->error((string) $message); + } + } + } + +The "notSave" event is triggered whenever a "creating" or "updating" action fails. We're flashing the validation messages +obtaining the "flash" service from the DI container. By doing this, we don't have to print messages after each saving. + +.. _MongoDB: http://www.mongodb.org/ +.. _MongoId: http://www.php.net/manual/en/class.mongoid.php +.. _MongoIds: http://www.php.net/manual/en/class.mongoid.php +.. _`SQL to Mongo Mapping Chart`: http://www.php.net/manual/en/mongo.sqltomongo.php +.. _`aggregation framework`: http://docs.mongodb.org/manual/applications/aggregation/ diff --git a/id/reference/pagination.rst b/id/reference/pagination.rst new file mode 100755 index 000000000000..29a0ddc78ea8 --- /dev/null +++ b/id/reference/pagination.rst @@ -0,0 +1,188 @@ +Pagination +========== + +The process of pagination takes place when we need to present big groups of arbitrary data gradually. :code:`Phalcon\Paginator` offers a +fast and convenient way to split these sets of data into browsable pages. + +Data Adapters +------------- +This component makes use of adapters to encapsulate different sources of data: + ++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Adapter | Description | ++=====================================================================+===========================================================================================================================================================================================================================+ +| :doc:`NativeArray <../api/Phalcon_Paginator_Adapter_NativeArray>` | Use a PHP array as source data | ++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :doc:`Model <../api/Phalcon_Paginator_Adapter_Model>` | Use a :doc:`Phalcon\\Mvc\\Model\\Resultset <../api/Phalcon_Mvc_Model_Resultset>` object as source data. Since PDO doesn't support scrollable cursors this adapter shouldn't be used to paginate a large number of records | ++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :doc:`QueryBuilder <../api/Phalcon_Paginator_Adapter_QueryBuilder>` | Use a :doc:`Phalcon\\Mvc\\Model\\Query\\Builder <../api/Phalcon_Mvc_Model_Query_Builder>` object as source data | ++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Examples +-------- +In the example below, the paginator will use the result of a query from a model as its source data, and limit the displayed data to 10 records per page: + +.. code-block:: php + + request->getQuery('page', 'int'); // GET + // $this->request->getPost('page', 'int'); // POST + $currentPage = (int) $_GET["page"]; + + // The data set to paginate + $robots = Robots::find(); + + // Create a Model paginator, show 10 rows by page starting from $currentPage + $paginator = new PaginatorModel( + array( + "data" => $robots, + "limit" => 10, + "page" => $currentPage + ) + ); + + // Get the paginated results + $page = $paginator->getPaginate(); + +The :code:`$currentPage` variable controls the page to be displayed. The :code:`$paginator->getPaginate()` returns a :code:`$page` +object that contains the paginated data. It can be used for generating the pagination: + +.. code-block:: html+php + + + + + + + + items as $item) { ?> + + + + + + +
IdNameType
id; ?>name; ?>type; ?>
+ +The :code:`$page` object also contains navigation data: + +.. code-block:: html+php + + First + Previous + Next + Last + + current, " of ", $page->total_pages; ?> + +Adapters Usage +-------------- +An example of the source data that must be used for each adapter: + +.. code-block:: php + + Products::find(), + "limit" => 10, + "page" => $currentPage + ) + ); + + // Passing an array as data + $paginator = new PaginatorArray( + array( + "data" => array( + array('id' => 1, 'name' => 'Artichoke'), + array('id' => 2, 'name' => 'Carrots'), + array('id' => 3, 'name' => 'Beet'), + array('id' => 4, 'name' => 'Lettuce'), + array('id' => 5, 'name' => '') + ), + "limit" => 2, + "page" => $currentPage + ) + ); + + // Passing a QueryBuilder as data + + $builder = $this->modelsManager->createBuilder() + ->columns('id, name') + ->from('Robots') + ->orderBy('name'); + + $paginator = new PaginatorQueryBuilder( + array( + "builder" => $builder, + "limit" => 20, + "page" => 1 + ) + ); + +Page Attributes +--------------- +The :code:`$page` object has the following attributes: + ++-------------+--------------------------------------------------------+ +| Attribute | Description | ++=============+========================================================+ +| items | The set of records to be displayed at the current page | ++-------------+--------------------------------------------------------+ +| current | The current page | ++-------------+--------------------------------------------------------+ +| before | The previous page to the current one | ++-------------+--------------------------------------------------------+ +| next | The next page to the current one | ++-------------+--------------------------------------------------------+ +| last | The last page in the set of records | ++-------------+--------------------------------------------------------+ +| total_pages | The number of pages | ++-------------+--------------------------------------------------------+ +| total_items | The number of items in the source data | ++-------------+--------------------------------------------------------+ + +Implementing your own adapters +------------------------------ +The :doc:`Phalcon\\Paginator\\AdapterInterface <../api/Phalcon_Paginator_AdapterInterface>` interface must be implemented in order to create your own paginator adapters or extend the existing ones: + +.. code-block:: php + + belongsTo('brand_id', 'Brands', 'id'); + } + } + +And every Car has a Brand, so a Brand has many Cars: + +.. code-block:: php + + hasMany('id', 'Cars', 'brand_id'); + } + } + +Creating PHQL Queries +--------------------- +PHQL queries can be created just by instantiating the class :doc:`Phalcon\\Mvc\\Model\\Query <../api/Phalcon_Mvc_Model_Query>`: + +.. code-block:: php + + getDI()); + + // Execute the query returning a result if any + $cars = $query->execute(); + +From a controller or a view, it's easy to create/execute them using an injected :doc:`models manager <../api/Phalcon_Mvc_Model_Manager>`: + +.. code-block:: php + + modelsManager->createQuery("SELECT * FROM Cars"); + $cars = $query->execute(); + + // With bound parameters + $query = $this->modelsManager->createQuery("SELECT * FROM Cars WHERE name = :name:"); + $cars = $query->execute( + array( + 'name' => 'Audi' + ) + ); + +Or simply execute it: + +.. code-block:: php + + modelsManager->executeQuery("SELECT * FROM Cars"); + + // Executing with bound parameters + $cars = $this->modelsManager->executeQuery("SELECT * FROM Cars WHERE name = :name:", array( + 'name' => 'Audi' + )); + +Selecting Records +----------------- +As the familiar SQL, PHQL allows querying of records using the SELECT statement we know, except that instead of specifying tables, we use the models classes: + +.. code-block:: php + + createQuery("SELECT * FROM Cars ORDER BY Cars.name"); + $query = $manager->createQuery("SELECT Cars.name FROM Cars ORDER BY Cars.name"); + +Classes in namespaces are also allowed: + +.. code-block:: php + + createQuery($phql); + + $phql = "SELECT Formula\Cars.name FROM Formula\Cars ORDER BY Formula\Cars.name"; + $query = $manager->createQuery($phql); + + $phql = "SELECT c.name FROM Formula\Cars c ORDER BY c.name"; + $query = $manager->createQuery($phql); + +Most of the SQL standard is supported by PHQL, even nonstandard directives such as LIMIT: + +.. code-block:: php + + createQuery($phql); + +Result Types +^^^^^^^^^^^^ +Depending on the type of columns we query, the result type will vary. If you retrieve a single whole object, then the object returned is +a :doc:`Phalcon\\Mvc\\Model\\Resultset\\Simple <../api/Phalcon_Mvc_Model_Resultset_Simple>`. This kind of resultset is a set of complete model objects: + +.. code-block:: php + + executeQuery($phql); + foreach ($cars as $car) { + echo "Name: ", $car->name, "\n"; + } + +This is exactly the same as: + +.. code-block:: php + + "name" + ) + ); + + foreach ($cars as $car) { + echo "Name: ", $car->name, "\n"; + } + +Complete objects can be modified and re-saved in the database because they represent a complete record of the associated table. There are +other types of queries that do not return complete objects, for example: + +.. code-block:: php + + executeQuery($phql); + foreach ($cars as $car) { + echo "Name: ", $car->name, "\n"; + } + +We are only requesting some fields in the table, therefore those cannot be considered an entire object, so the returned object is +still a resultset of type :doc:`Phalcon\\Mvc\\Model\\Resultset\\Simple <../api/Phalcon_Mvc_Model_Resultset_Simple>`. However, each element is a standard +object that only contain the two columns that were requested. + +These values that don't represent complete objects are what we call scalars. PHQL allows you to query all types of scalars: fields, functions, literals, expressions, etc..: + +.. code-block:: php + + executeQuery($phql); + foreach ($cars as $car) { + echo $car->id_name, "\n"; + } + +As we can query complete objects or scalars, we can also query both at once: + +.. code-block:: php + + executeQuery($phql); + +The result in this case is an object :doc:`Phalcon\\Mvc\\Model\\Resultset\\Complex <../api/Phalcon_Mvc_Model_Resultset_Complex>`. +This allows access to both complete objects and scalars at once: + +.. code-block:: php + + cars->name, "\n"; + echo "Price: ", $row->cars->price, "\n"; + echo "Taxes: ", $row->taxes, "\n"; + } + +Scalars are mapped as properties of each "row", while complete objects are mapped as properties with the name of its related model. + +Joins +^^^^^ +It's easy to request records from multiple models using PHQL. Most kinds of Joins are supported. As we defined +relationships in the models, PHQL adds these conditions automatically: + +.. code-block:: php + + executeQuery($phql); + foreach ($rows as $row) { + echo $row->car_name, "\n"; + echo $row->brand_name, "\n"; + } + +By default, an INNER JOIN is assumed. You can specify the type of JOIN in the query: + +.. code-block:: php + + executeQuery($phql); + + $phql = "SELECT Cars.*, Brands.* FROM Cars LEFT JOIN Brands"; + $rows = $manager->executeQuery($phql); + + $phql = "SELECT Cars.*, Brands.* FROM Cars LEFT OUTER JOIN Brands"; + $rows = $manager->executeQuery($phql); + + $phql = "SELECT Cars.*, Brands.* FROM Cars CROSS JOIN Brands"; + $rows = $manager->executeQuery($phql); + +It is also possible to manually set the conditions of the JOIN: + +.. code-block:: php + + executeQuery($phql); + +Also, the joins can be created using multiple tables in the FROM clause: + +.. code-block:: php + + executeQuery($phql); + foreach ($rows as $row) { + echo "Car: ", $row->cars->name, "\n"; + echo "Brand: ", $row->brands->name, "\n"; + } + +If an alias is used to rename the models in the query, those will be used to name the attributes in the every row of the result: + +.. code-block:: php + + executeQuery($phql); + foreach ($rows as $row) { + echo "Car: ", $row->c->name, "\n"; + echo "Brand: ", $row->b->name, "\n"; + } + +When the joined model has a many-to-many relation to the 'from' model, the intermediate model is implicitly added to the generated query: + +.. code-block:: php + + modelsManager->executeQuery($phql); + +This code executes the following SQL in MySQL: + +.. code-block:: sql + + SELECT `artists`.`name`, `songs`.`name` FROM `artists` + INNER JOIN `albums` ON `albums`.`artists_id` = `artists`.`id` + INNER JOIN `songs` ON `albums`.`songs_id` = `songs`.`id` + WHERE `artists`.`genre` = 'Trip-Hop' + +Aggregations +^^^^^^^^^^^^ +The following examples show how to use aggregations in PHQL: + +.. code-block:: php + + executeQuery($phql)->getFirst(); + echo $row['summatory']; + + // How many cars are by each brand? + $phql = "SELECT Cars.brand_id, COUNT(*) FROM Cars GROUP BY Cars.brand_id"; + $rows = $manager->executeQuery($phql); + foreach ($rows as $row) { + echo $row->brand_id, ' ', $row["1"], "\n"; + } + + // How many cars are by each brand? + $phql = "SELECT Brands.name, COUNT(*) FROM Cars JOIN Brands GROUP BY 1"; + $rows = $manager->executeQuery($phql); + foreach ($rows as $row) { + echo $row->name, ' ', $row["1"], "\n"; + } + + $phql = "SELECT MAX(price) AS maximum, MIN(price) AS minimum FROM Cars"; + $rows = $manager->executeQuery($phql); + foreach ($rows as $row) { + echo $row["maximum"], ' ', $row["minimum"], "\n"; + } + + // Count distinct used brands + $phql = "SELECT COUNT(DISTINCT brand_id) AS brandId FROM Cars"; + $rows = $manager->executeQuery($phql); + foreach ($rows as $row) { + echo $row->brandId, "\n"; + } + +Conditions +^^^^^^^^^^ +Conditions allow us to filter the set of records we want to query. The WHERE clause allows to do that: + +.. code-block:: php + + executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.price > 10000"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE TRIM(Cars.name) = 'Audi R8'"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.name LIKE 'Ferrari%'"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.name NOT LIKE 'Ferrari%'"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.price IS NULL"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.id IN (120, 121, 122)"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.id NOT IN (430, 431)"; + $cars = $manager->executeQuery($phql); + + $phql = "SELECT * FROM Cars WHERE Cars.id BETWEEN 1 AND 100"; + $cars = $manager->executeQuery($phql); + +Also, as part of PHQL, prepared parameters automatically escape the input data, introducing more security: + +.. code-block:: php + + executeQuery($phql, array("name" => 'Lamborghini Espada')); + + $phql = "SELECT * FROM Cars WHERE Cars.name = ?0"; + $cars = $manager->executeQuery($phql, array(0 => 'Lamborghini Espada')); + +Inserting Data +-------------- +With PHQL it's possible to insert data using the familiar INSERT statement: + +.. code-block:: php + + executeQuery($phql); + + // Specifying columns to insert + $phql = "INSERT INTO Cars (name, brand_id, year, style) " + . "VALUES ('Lamborghini Espada', 7, 1969, 'Grand Tourer')"; + $manager->executeQuery($phql); + + // Inserting using placeholders + $phql = "INSERT INTO Cars (name, brand_id, year, style) " + . "VALUES (:name:, :brand_id:, :year:, :style)"; + $manager->executeQuery( + $phql, + array( + 'name' => 'Lamborghini Espada', + 'brand_id' => 7, + 'year' => 1969, + 'style' => 'Grand Tourer', + ) + ); + +Phalcon doesn't only transform the PHQL statements into SQL. All events and business rules defined +in the model are executed as if we created individual objects manually. Let's add a business rule +on the model cars. A car cannot cost less than $ 10,000: + +.. code-block:: php + + price < 10000) { + $this->appendMessage(new Message("A car cannot cost less than $ 10,000")); + return false; + } + } + } + +If we made the following INSERT in the models Cars, the operation will not be successful +because the price does not meet the business rule that we implemented. By checking the +status of the insertion we can print any validation messages generated internally: + +.. code-block:: php + + executeQuery($phql); + if ($result->success() == false) { + foreach ($result->getMessages() as $message) { + echo $message->getMessage(); + } + } + +Updating Data +------------- +Updating rows is very similar than inserting rows. As you may know, the instruction to +update records is UPDATE. When a record is updated the events related to the update operation +will be executed for each row. + +.. code-block:: php + + executeQuery($phql); + + // Updating multiples columns + $phql = "UPDATE Cars SET price = 15000.00, type = 'Sedan' WHERE id = 101"; + $manager->executeQuery($phql); + + // Updating multiples rows + $phql = "UPDATE Cars SET price = 7000.00, type = 'Sedan' WHERE brands_id > 5"; + $manager->executeQuery($phql); + + // Using placeholders + $phql = "UPDATE Cars SET price = ?0, type = ?1 WHERE brands_id > ?2"; + $manager->executeQuery( + $phql, + array( + 0 => 7000.00, + 1 => 'Sedan', + 2 => 5 + ) + ); + +An UPDATE statement performs the update in two phases: + +* First, if the UPDATE has a WHERE clause it retrieves all the objects that match these criteria, +* Second, based on the queried objects it updates/changes the requested attributes storing them to the relational database + +This way of operation allows that events, virtual foreign keys and validations take part of the updating process. +In summary, the following code: + +.. code-block:: php + + 101"; + $result = $manager->executeQuery($phql); + if ($result->success() == false) { + foreach ($result->getMessages() as $message) { + echo $message->getMessage(); + } + } + +is somewhat equivalent to: + +.. code-block:: php + + 101") as $car) { + $car->price = 15000; + if ($car->save() == false) { + $messages = $car->getMessages(); + return false; + } + } + return true; + }; + + $success = $process(); + +Deleting Data +------------- +When a record is deleted the events related to the delete operation will be executed for each row: + +.. code-block:: php + + executeQuery($phql); + + // Deleting multiple rows + $phql = "DELETE FROM Cars WHERE id > 100"; + $manager->executeQuery($phql); + + // Using placeholders + $phql = "DELETE FROM Cars WHERE id BETWEEN :initial: AND :final:"; + $manager->executeQuery( + $phql, + array( + 'initial' => 1, + 'final' => 100 + ) + ); + +DELETE operations are also executed in two phases like UPDATEs. To check if the deletion produces +any validation messages you should check the status code returned: + +.. code-block:: php + + // Deleting multiple rows + $phql = "DELETE FROM Cars WHERE id > 100"; + $result = $manager->executeQuery($phql); + if ($result->success() == false) { + foreach ($result->getMessages() as $message) { + echo $message->getMessage(); + } + } + +Creating queries using the Query Builder +---------------------------------------- +A builder is available to create PHQL queries without the need to write PHQL statements, also providing IDE facilities: + +.. code-block:: php + + modelsManager->createBuilder() + ->from('Robots') + ->join('RobotsParts') + ->orderBy('Robots.name') + ->getQuery() + ->execute(); + + // Getting the first row + $robots = $this->modelsManager->createBuilder() + ->from('Robots') + ->join('RobotsParts') + ->orderBy('Robots.name') + ->getQuery() + ->getSingleResult(); + +That is the same as: + +.. code-block:: php + + executeQuery($phql); + +More examples of the builder: + +.. code-block:: php + + from('Robots'); + + // 'SELECT Robots.*, RobotsParts.* FROM Robots, RobotsParts'; + $builder->from( + array( + 'Robots', + 'RobotsParts' + ) + ); + + // 'SELECT * FROM Robots'; + $phql = $builder->columns('*') + ->from('Robots'); + + // 'SELECT id FROM Robots'; + $builder->columns('id') + ->from('Robots'); + + // 'SELECT id, name FROM Robots'; + $builder->columns(array('id', 'name')) + ->from('Robots'); + + // 'SELECT Robots.* FROM Robots WHERE Robots.name = "Voltron"'; + $builder->from('Robots') + ->where('Robots.name = "Voltron"'); + + // 'SELECT Robots.* FROM Robots WHERE Robots.id = 100'; + $builder->from('Robots') + ->where(100); + + // 'SELECT Robots.* FROM Robots WHERE Robots.type = "virtual" AND Robots.id > 50'; + $builder->from('Robots') + ->where('type = "virtual"') + ->andWhere('id > 50'); + + // 'SELECT Robots.* FROM Robots WHERE Robots.type = "virtual" OR Robots.id > 50'; + $builder->from('Robots') + ->where('type = "virtual"') + ->orWhere('id > 50'); + + // 'SELECT Robots.* FROM Robots GROUP BY Robots.name'; + $builder->from('Robots') + ->groupBy('Robots.name'); + + // 'SELECT Robots.* FROM Robots GROUP BY Robots.name, Robots.id'; + $builder->from('Robots') + ->groupBy(array('Robots.name', 'Robots.id')); + + // 'SELECT Robots.name, SUM(Robots.price) FROM Robots GROUP BY Robots.name'; + $builder->columns(array('Robots.name', 'SUM(Robots.price)')) + ->from('Robots') + ->groupBy('Robots.name'); + + // 'SELECT Robots.name, SUM(Robots.price) FROM Robots GROUP BY Robots.name HAVING SUM(Robots.price) > 1000'; + $builder->columns(array('Robots.name', 'SUM(Robots.price)')) + ->from('Robots') + ->groupBy('Robots.name') + ->having('SUM(Robots.price) > 1000'); + + // 'SELECT Robots.* FROM Robots JOIN RobotsParts'; + $builder->from('Robots') + ->join('RobotsParts'); + + // 'SELECT Robots.* FROM Robots JOIN RobotsParts AS p'; + $builder->from('Robots') + ->join('RobotsParts', null, 'p'); + + // 'SELECT Robots.* FROM Robots JOIN RobotsParts ON Robots.id = RobotsParts.robots_id AS p'; + $builder->from('Robots') + ->join('RobotsParts', 'Robots.id = RobotsParts.robots_id', 'p'); + + // 'SELECT Robots.* FROM Robots + // JOIN RobotsParts ON Robots.id = RobotsParts.robots_id AS p + // JOIN Parts ON Parts.id = RobotsParts.parts_id AS t'; + $builder->from('Robots') + ->join('RobotsParts', 'Robots.id = RobotsParts.robots_id', 'p') + ->join('Parts', 'Parts.id = RobotsParts.parts_id', 't'); + + // 'SELECT r.* FROM Robots AS r'; + $builder->addFrom('Robots', 'r'); + + // 'SELECT Robots.*, p.* FROM Robots, Parts AS p'; + $builder->from('Robots') + ->addFrom('Parts', 'p'); + + // 'SELECT r.*, p.* FROM Robots AS r, Parts AS p'; + $builder->from(array('r' => 'Robots')) + ->addFrom('Parts', 'p'); + + // 'SELECT r.*, p.* FROM Robots AS r, Parts AS p'; + $builder->from(array('r' => 'Robots', 'p' => 'Parts')); + + // 'SELECT Robots.* FROM Robots LIMIT 10'; + $builder->from('Robots') + ->limit(10); + + // 'SELECT Robots.* FROM Robots LIMIT 10 OFFSET 5'; + $builder->from('Robots') + ->limit(10, 5); + + // 'SELECT Robots.* FROM Robots WHERE id BETWEEN 1 AND 100'; + $builder->from('Robots') + ->betweenWhere('id', 1, 100); + + // 'SELECT Robots.* FROM Robots WHERE id IN (1, 2, 3)'; + $builder->from('Robots') + ->inWhere('id', array(1, 2, 3)); + + // 'SELECT Robots.* FROM Robots WHERE id NOT IN (1, 2, 3)'; + $builder->from('Robots') + ->notInWhere('id', array(1, 2, 3)); + + // 'SELECT Robots.* FROM Robots WHERE name LIKE '%Art%'; + $builder->from('Robots') + ->where('name LIKE :name:', array('name' => '%' . $name . '%')); + + // 'SELECT r.* FROM Store\Robots WHERE r.name LIKE '%Art%'; + $builder->from(['r' => 'Store\Robots']) + ->where('r.name LIKE :name:', array('name' => '%' . $name . '%')); + +Bound Parameters +^^^^^^^^^^^^^^^^ +Bound parameters in the query builder can be set as the query is constructed or past all at once when executing: + +.. code-block:: php + + modelsManager->createBuilder() + ->from('Robots') + ->where('name = :name:', array('name' => $name)) + ->andWhere('type = :type:', array('type' => $type)) + ->getQuery() + ->execute(); + + // Passing parameters in query execution + $robots = $this->modelsManager->createBuilder() + ->from('Robots') + ->where('name = :name:') + ->andWhere('type = :type:') + ->getQuery() + ->execute(array('name' => $name, 'type' => $type)); + +Disallow literals in PHQL +------------------------- +Literals can be disabled in PHQL, this means that directly using strings, numbers and boolean values in PHQL strings +will be disallowed. If PHQL statements are created embedding external data on them, this could open the application +to potential SQL injections: + +.. code-block:: php + + executeQuery($phql); + +If :code:`$login` is changed to :code:`' OR '' = '`, the produced PHQL is: + +.. code-block:: sql + + SELECT * FROM Models\Users WHERE login = '' OR '' = '' + +Which is always true no matter what the login stored in the database is. + +If literals are disallowed strings can be used as part of a PHQL statement, thus an exception +will be thrown forcing the developer to use bound parameters. The same query can be written in a +secure way like this: + +.. code-block:: php + + executeQuery($phql, array('name' => $name)); + +You can disallow literals in the following way: + +.. code-block:: php + + false + ) + ); + +Bound parameters can be used even if literals are allowed or not. Disallowing them is just +another security decision a developer could take in web applications. + +Escaping Reserved Words +----------------------- +PHQL has a few reserved words, if you want to use any of them as attributes or models names, you need to escape those +words using the cross-database escaping delimiters '[' and ']': + +.. code-block:: php + + executeQuery($phql); + + $phql = "SELECT id, [Like] FROM Posts"; + $result = $manager->executeQuery($phql); + +The delimiters are dynamically translated to valid delimiters depending on the database system where the application is currently running on. + +PHQL Lifecycle +-------------- +Being a high-level language, PHQL gives developers the ability to personalize and customize different aspects in order to suit their needs. +The following is the life cycle of each PHQL statement executed: + +* The PHQL is parsed and converted into an Intermediate Representation (IR) which is independent of the SQL implemented by database system +* The IR is converted to valid SQL according to the database system associated to the model +* PHQL statements are parsed once and cached in memory. Further executions of the same statement result in a slightly faster execution + +Using Raw SQL +------------- +A database system could offer specific SQL extensions that aren't supported by PHQL, in this case, a raw SQL can be appropriate: + +.. code-block:: php + + 0"; + + // Base model + $robot = new Robots(); + + // Execute the query + return new Resultset(null, $robot, $robot->getReadConnection()->query($sql)); + } + } + +If Raw SQL queries are common in your application a generic method could be added to your model: + +.. code-block:: php + + getReadConnection()->query($sql, $params)); + } + } + +The above findByRawSql could be used as follows: + +.. code-block:: php + + ?', array(10)); + +Troubleshooting +--------------- +Some things to keep in mind when using PHQL: + +* Classes are case-sensitive, if a class is not defined with the same name as it was created this could lead to an unexpected behavior in operating systems with case-sensitive file systems such as Linux. +* Correct charset must be defined in the connection to bind parameters with success. +* Aliased classes aren't replaced by full namespaced classes since this only occurs in PHP code and not inside strings. +* If column renaming is enabled avoid using column aliases with the same name as columns to be renamed, this may confuse the query resolver. + +.. _SQLite: http://en.wikipedia.org/wiki/Lemon_Parser_Generator diff --git a/id/reference/queue.rst b/id/reference/queue.rst new file mode 100644 index 000000000000..063f6259d755 --- /dev/null +++ b/id/reference/queue.rst @@ -0,0 +1,132 @@ +Queueing +======== + +Activities like processing videos, resizing images or sending emails aren't suitable to be executed +online or in real time because it may slow the loading time of pages and severely impact the user experience. + +The best solution here is to implement background jobs. The web application puts jobs +into a queue and which will be processed separately. + +While you can find more sophisticated PHP extensions to address queueing in your applications like RabbitMQ_; +Phalcon provides a client for Beanstalk_, a job queueing backend inspired by Memcache_. +It’s simple, lightweight, and completely specialized for job queueing. + +Putting Jobs into the Queue +--------------------------- +After connecting to Beanstalk you can insert as many jobs as required. You can define the message +structure according to the needs of the application: + +.. code-block:: php + + '192.168.0.21', + 'port' => '11300' + ) + ); + + // Insert the job in the queue + $queue->put( + array( + 'processVideo' => 4871 + ) + ); + +Available connection options are: + ++----------+----------------------------------------------------------+-----------+ +| Option | Description | Default | ++==========+==========================================================+===========+ +| host | IP where the beanstalk server is located | 127.0.0.1 | ++----------+----------------------------------------------------------+-----------+ +| port | Connection port | 11300 | ++----------+----------------------------------------------------------+-----------+ + +In the above example we stored a message which will allow a background job to process a video. +The message is stored in the queue immediately and does not have a certain time to live. + +Additional options as time to run, priority and delay can be passed as second parameter: + +.. code-block:: php + + put( + array( + 'processVideo' => 4871 + ), + array( + 'priority' => 250, + 'delay' => 10, + 'ttr' => 3600 + ) + ); + +The following options are available: + ++----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Option | Description | ++==========+=============================================================================================================================================================================================+ +| priority | It's an integer < 2**32. Jobs with smaller priority values will be scheduled before jobs with larger priorities. The most urgent priority is 0; the least urgent priority is 4,294,967,295. | ++----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| delay | It's an integer number of seconds to wait before putting the job in the ready queue. The job will be in the "delayed" state during this time. | ++----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ttr | Time to run -- is an integer number of seconds to allow a worker to run this job. This time is counted from the moment a worker reserves this job. | ++----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Every job put into the queue returns a "job id" which you can use to track the status of the job: + +.. code-block:: php + + put( + array( + 'processVideo' => 4871 + ) + ); + +Retrieving Messages +------------------- +Once a job is placed into the queue, those messages can be consumed by a background worker which will have enough time to complete +the task: + +.. code-block:: php + + peekReady()) !== false) { + + $message = $job->getBody(); + + var_dump($message); + + $job->delete(); + } + +Jobs must be removed from the queue to avoid double processing. If multiple background jobs workers are implemented, +jobs must be "reserved" so other workers don't re-process them while other workers have them reserved: + +.. code-block:: php + + reserve())) { + + $message = $job->getBody(); + + var_dump($message); + + $job->delete(); + } + +Our client implement a basic set of the features provided by Beanstalkd but enough to allow you to build applications +implementing queues. + +.. _RabbitMQ: http://pecl.php.net/package/amqp +.. _Beanstalk: http://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/ +.. _Memcache: http://memcached.org/ diff --git a/id/reference/request.rst b/id/reference/request.rst new file mode 100755 index 000000000000..713ffc3bd6c5 --- /dev/null +++ b/id/reference/request.rst @@ -0,0 +1,174 @@ +Request Environment +=================== + +Every HTTP request (usually originated by a browser) contains additional information regarding the request such as header data, +files, variables, etc. A web based application needs to parse that information so as to provide the correct +response back to the requester. :doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` encapsulates the +information of the request, allowing you to access it in an object-oriented way. + +.. code-block:: php + + isPost()) { + // Check whether the request was made with Ajax + if ($request->isAjax()) { + echo "Request was made using POST and AJAX"; + } + } + +Getting Values +-------------- +PHP automatically fills the superglobal arrays :code:`$_GET` and :code:`$_POST` depending on the type of the request. These arrays +contain the values present in forms submitted or the parameters sent via the URL. The variables in the arrays are +never sanitized and can contain illegal characters or even malicious code, which can lead to `SQL injection`_ or +`Cross Site Scripting (XSS)`_ attacks. + +:doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` allows you to access the values stored in the :code:`$_REQUEST`, +:code:`$_GET` and :code:`$_POST` arrays and sanitize or filter them with the 'filter' service, (by default +:doc:`Phalcon\\Filter `). The following examples offer the same behavior: + +.. code-block:: php + + sanitize($_POST["user_email"], "email"); + + // Manually applying the filter to the value + $filter = new Filter(); + $email = $filter->sanitize($request->getPost("user_email"), "email"); + + // Automatically applying the filter + $email = $request->getPost("user_email", "email"); + + // Setting a default value if the param is null + $email = $request->getPost("user_email", "email", "some@example.com"); + + // Setting a default value if the param is null without filtering + $email = $request->getPost("user_email", null, "some@example.com"); + + +Accessing the Request from Controllers +-------------------------------------- +The most common place to access the request environment is in an action of a controller. To access the +:doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` object from a controller you will need to use +the :code:`$this->request` public property of the controller: + +.. code-block:: php + + request->isPost()) { + + // Access POST data + $customerName = $this->request->getPost("name"); + $customerBorn = $this->request->getPost("born"); + + } + } + } + +Uploading Files +--------------- +Another common task is file uploading. :doc:`Phalcon\\Http\\Request <../api/Phalcon_Http_Request>` offers +an object-oriented way to achieve this task: + +.. code-block:: php + + request->hasFiles()) { + + // Print the real file names and sizes + foreach ($this->request->getUploadedFiles() as $file) { + + // Print file details + echo $file->getName(), " ", $file->getSize(), "\n"; + + // Move the file into the application + $file->moveTo('files/' . $file->getName()); + } + } + } + } + +Each object returned by :code:`Phalcon\Http\Request::getUploadedFiles()` is an instance of the +:doc:`Phalcon\\Http\\Request\\File <../api/Phalcon_Http_Request_File>` class. Using the :code:`$_FILES` superglobal +array offers the same behavior. :doc:`Phalcon\\Http\\Request\\File <../api/Phalcon_Http_Request_File>` encapsulates +only the information related to each file uploaded with the request. + +Working with Headers +-------------------- +As mentioned above, request headers contain useful information that allow us to send the proper response back to +the user. The following examples show usages of that information: + +.. code-block:: php + + getHeader("HTTP_X_REQUESTED_WITH"); + if ($requestedWith == "XMLHttpRequest") { + echo "The request was made with Ajax"; + } + + // Same as above + if ($request->isAjax()) { + echo "The request was made with Ajax"; + } + + // Check the request layer + if ($request->isSecureRequest()) { + echo "The request was made using a secure layer"; + } + + // Get the servers's IP address. ie. 192.168.0.100 + $ipAddress = $request->getServerAddress(); + + // Get the client's IP address ie. 201.245.53.51 + $ipAddress = $request->getClientAddress(); + + // Get the User Agent (HTTP_USER_AGENT) + $userAgent = $request->getUserAgent(); + + // Get the best acceptable content by the browser. ie text/xml + $contentType = $request->getAcceptableContent(); + + // Get the best charset accepted by the browser. ie. utf-8 + $charset = $request->getBestCharset(); + + // Get the best language accepted configured in the browser. ie. en-us + $language = $request->getBestLanguage(); + + +.. _SQL injection: http://en.wikipedia.org/wiki/SQL_injection +.. _Cross Site Scripting (XSS): http://en.wikipedia.org/wiki/Cross-site_scripting diff --git a/id/reference/response.rst b/id/reference/response.rst new file mode 100644 index 000000000000..c9a135a82995 --- /dev/null +++ b/id/reference/response.rst @@ -0,0 +1,195 @@ +Returning Responses +=================== + +Part of the HTTP cycle is returning responses to clients. :doc:`Phalcon\\Http\\Response <../api/Phalcon_Http_Response>` is the Phalcon +component designed to achieve this task. HTTP responses are usually composed by headers and body. The following is an example of basic usage: + +.. code-block:: php + + setStatusCode(404, "Not Found"); + + // Set the content of the response + $response->setContent("Sorry, the page doesn't exist"); + + // Send response to the client + $response->send(); + +If you are using the full MVC stack there is no need to create responses manually. However, if you need to return a response +directly from a controller's action follow this example: + +.. code-block:: php + + setContent($feed->asString()); + + // Return the response + return $response; + } + } + +Working with Headers +-------------------- +Headers are an important part of the HTTP response. It contains useful information about the response state like the HTTP status, +type of response and much more. + +You can set headers in the following way: + +.. code-block:: php + + setHeader("Content-Type", "application/pdf"); + $response->setHeader("Content-Disposition", 'attachment; filename="downloaded.pdf"'); + + // Setting a raw header + $response->setRawHeader("HTTP/1.1 200 OK"); + +A :doc:`Phalcon\\Http\\Response\\Headers <../api/Phalcon_Http_Response_Headers>` bag internally manages headers. This class +retrieves the headers before sending it to client: + +.. code-block:: php + + getHeaders(); + + // Get a header by its name + $contentType = $response->getHeaders()->get("Content-Type"); + +Making Redirections +------------------- +With :doc:`Phalcon\\Http\\Response <../api/Phalcon_Http_Response>` you can also execute HTTP redirections: + +.. code-block:: php + + redirect(); + + // Redirect to the local base URI + $response->redirect("posts/index"); + + // Redirect to an external URL + $response->redirect("http://en.wikipedia.org", true); + + // Redirect specifying the HTTP status code + $response->redirect("http://www.example.com/new-location", true, 301); + +All internal URIs are generated using the 'url' service (by default :doc:`Phalcon\\Mvc\\Url `). This example demonstrates +how you can redirect using a route you have defined in your application: + +.. code-block:: php + + redirect( + array( + "for" => "index-lang", + "lang" => "jp", + "controller" => "index" + ) + ); + +Note that a redirection doesn't disable the view component, so if there is a view associated with the current action it +will be executed anyway. You can disable the view from a controller by executing :code:`$this->view->disable()`; + +HTTP Cache +---------- +One of the easiest ways to improve the performance in your applications and reduce the traffic is using HTTP Cache. +Most modern browsers support HTTP caching and is one of the reasons why many websites are currently fast. + +HTTP Cache can be altered in the following header values sent by the application when serving a page for the first time: + +* *Expires:* With this header the application can set a date in the future or the past telling the browser when the page must expire. +* *Cache-Control:* This header allows to specify how much time a page should be considered fresh in the browser. +* *Last-Modified:* This header tells the browser which was the last time the site was updated avoiding page re-loads +* *ETag:* An etag is a unique identifier that must be created including the modification timestamp of the current page + +Setting an Expiration Time +^^^^^^^^^^^^^^^^^^^^^^^^^^ +The expiration date is one of the easiest and most effective ways to cache a page in the client (browser). +Starting from the current date we add the amount of time the page will be stored +in the browser cache. Until this date expires no new content will be requested from the server: + +.. code-block:: php + + modify('+2 months'); + + $response->setExpires($expireDate); + +The Response component automatically shows the date in GMT timezone as expected in an Expires header. + +If we set this value to a date in the past the browser will always refresh the requested page: + +.. code-block:: php + + modify('-10 minutes'); + + $response->setExpires($expireDate); + +Browsers rely on the client's clock to assess if this date has passed or not. The client clock can be modified to +make pages expire and this may represent a limitation for this cache mechanism. + +Cache-Control +^^^^^^^^^^^^^ +This header provides a safer way to cache the pages served. We simply must specify a time in seconds telling the browser +how long it must keep the page in its cache: + +.. code-block:: php + + setHeader('Cache-Control', 'max-age=86400'); + +The opposite effect (avoid page caching) is achieved in this way: + +.. code-block:: php + + setHeader('Cache-Control', 'private, max-age=0, must-revalidate'); + +E-Tag +^^^^^ +An "entity-tag" or "E-tag" is a unique identifier that helps the browser realize if the page has changed or not between two requests. +The identifier must be calculated taking into account that this must change if the previously served content has changed: + +.. code-block:: php + + 'created_at')); + $eTag = md5($recentDate); + + // Send an E-Tag header + $response->setHeader('E-Tag', $eTag); diff --git a/id/reference/routing.rst b/id/reference/routing.rst new file mode 100755 index 000000000000..11488227e43a --- /dev/null +++ b/id/reference/routing.rst @@ -0,0 +1,1163 @@ +Routing +======= + +The router component allows you to define routes that are mapped to controllers or handlers that should receive +the request. A router simply parses a URI to determine this information. The router has two modes: MVC +mode and match-only mode. The first mode is ideal for working with MVC applications. + +Defining Routes +--------------- +:doc:`Phalcon\\Mvc\\Router <../api/Phalcon_Mvc_Router>` provides advanced routing capabilities. In MVC mode, +you can define routes and map them to controllers/actions that you require. A route is defined as follows: + +.. code-block:: php + + add( + "/admin/users/my-profile", + array( + "controller" => "users", + "action" => "profile" + ) + ); + + // Another route + $router->add( + "/admin/users/change-password", + array( + "controller" => "users", + "action" => "changePassword" + ) + ); + + $router->handle(); + +The first parameter of the :code:`add()` method is the pattern you want to match and, optionally, the second parameter is a set of paths. +In this case, if the URI is /admin/users/my-profile, then the "users" controller with its action "profile" +will be executed. It's important to remember that the router does not execute the controller and action, it only collects this +information to inform the correct component (ie. :doc:`Phalcon\\Mvc\\Dispatcher <../api/Phalcon_Mvc_Dispatcher>`) +that this is the controller/action it should execute. + +An application can have many paths and defining routes one by one can be a cumbersome task. In these cases we can +create more flexible routes: + +.. code-block:: php + + add( + "/admin/:controller/a/:action/:params", + array( + "controller" => 1, + "action" => 2, + "params" => 3 + ) + ); + +In the example above, we're using wildcards to make a route valid for many URIs. For example, by accessing the +following URL (/admin/users/a/delete/dave/301) would produce: + ++------------+---------------+ +| Controller | users | ++------------+---------------+ +| Action | delete | ++------------+---------------+ +| Parameter | dave | ++------------+---------------+ +| Parameter | 301 | ++------------+---------------+ + +The :code:`add()` method receives a pattern that can optionally have predefined placeholders and regular expression +modifiers. All the routing patterns must start with a forward slash character (/). The regular expression syntax used +is the same as the `PCRE regular expressions`_. Note that, it is not necessary to add regular expression +delimiters. All route patterns are case-insensitive. + +The second parameter defines how the matched parts should bind to the controller/action/parameters. Matching +parts are placeholders or subpatterns delimited by parentheses (round brackets). In the example given above, the +first subpattern matched (:code:`:controller`) is the controller part of the route, the second the action and so on. + +These placeholders help writing regular expressions that are more readable for developers and easier +to understand. The following placeholders are supported: + ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| Placeholder | Regular Expression | Usage | ++======================+=============================+========================================================================================================+ +| :code:`/:module` | :code:`/([a-zA-Z0-9\_\-]+)` | Matches a valid module name with alpha-numeric characters only | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| :code:`/:controller` | :code:`/([a-zA-Z0-9\_\-]+)` | Matches a valid controller name with alpha-numeric characters only | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| :code:`/:action` | :code:`/([a-zA-Z0-9\_]+)` | Matches a valid action name with alpha-numeric characters only | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| :code:`/:params` | :code:`(/.*)*` | Matches a list of optional words separated by slashes. Only use this placeholder at the end of a route | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| :code:`/:namespace` | :code:`/([a-zA-Z0-9\_\-]+)` | Matches a single level namespace name | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ +| :code:`/:int` | :code:`/([0-9]+)` | Matches an integer parameter | ++----------------------+-----------------------------+--------------------------------------------------------------------------------------------------------+ + +Controller names are camelized, this means that characters (:code:`-`) and (:code:`_`) are removed and the next character +is uppercased. For instance, some_controller is converted to SomeController. + +Since you can add many routes as you need using the :code:`add()` method, the order in which routes are added indicate +their relevance, latest routes added have more relevance than first added. Internally, all defined routes +are traversed in reverse order until :doc:`Phalcon\\Mvc\\Router <../api/Phalcon_Mvc_Router>` finds the +one that matches the given URI and processes it, while ignoring the rest. + +Parameters with Names +^^^^^^^^^^^^^^^^^^^^^ +The example below demonstrates how to define names to route parameters: + +.. code-block:: php + + add( + "/news/([0-9]{4})/([0-9]{2})/([0-9]{2})/:params", + array( + "controller" => "posts", + "action" => "show", + "year" => 1, // ([0-9]{4}) + "month" => 2, // ([0-9]{2}) + "day" => 3, // ([0-9]{2}) + "params" => 4 // :params + ) + ); + +In the above example, the route doesn't define a "controller" or "action" part. These parts are replaced +with fixed values ("posts" and "show"). The user will not know the controller that is really dispatched +by the request. Inside the controller, those named parameters can be accessed as follows: + +.. code-block:: php + + dispatcher->getParam("year"); + + // Get "month" parameter + $month = $this->dispatcher->getParam("month"); + + // Get "day" parameter + $day = $this->dispatcher->getParam("day"); + + // ... + } + } + +Note that the values of the parameters are obtained from the dispatcher. This happens because it is the +component that finally interacts with the drivers of your application. Moreover, there is also another +way to create named parameters as part of the pattern: + +.. code-block:: php + + add( + "/documentation/{chapter}/{name}.{type:[a-z]+}", + array( + "controller" => "documentation", + "action" => "show" + ) + ); + +You can access their values in the same way as before: + +.. code-block:: php + + dispatcher->getParam("name"); + + // Get "type" parameter + $type = $this->dispatcher->getParam("type"); + + // ... + } + } + +Short Syntax +^^^^^^^^^^^^ +If you don't like using an array to define the route paths, an alternative syntax is also available. +The following examples produce the same result: + +.. code-block:: php + + add("/posts/{year:[0-9]+}/{title:[a-z\-]+}", "Posts::show"); + + // Array form + $router->add( + "/posts/([0-9]+)/([a-z\-]+)", + array( + "controller" => "posts", + "action" => "show", + "year" => 1, + "title" => 2 + ) + ); + +Mixing Array and Short Syntax +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Array and short syntax can be mixed to define a route, in this case note that named parameters automatically +are added to the route paths according to the position on which they were defined: + +.. code-block:: php + + add('/news/{country:[a-z]{2}}/([a-z+])/([a-z\-+])', + array( + 'section' => 2, // Positions start with 2 + 'article' => 3 + ) + ); + +Routing to Modules +^^^^^^^^^^^^^^^^^^ +You can define routes whose paths include modules. This is specially suitable to multi-module applications. +It's possible define a default route that includes a module wildcard: + +.. code-block:: php + + add( + '/:module/:controller/:action/:params', + array( + 'module' => 1, + 'controller' => 2, + 'action' => 3, + 'params' => 4 + ) + ); + +In this case, the route always must have the module name as part of the URL. For example, the following +URL: /admin/users/edit/sonny, will be processed as: + ++------------+---------------+ +| Module | admin | ++------------+---------------+ +| Controller | users | ++------------+---------------+ +| Action | edit | ++------------+---------------+ +| Parameter | sonny | ++------------+---------------+ + +Or you can bind specific routes to specific modules: + +.. code-block:: php + + add( + "/login", + array( + 'module' => 'backend', + 'controller' => 'login', + 'action' => 'index' + ) + ); + + $router->add( + "/products/:action", + array( + 'module' => 'frontend', + 'controller' => 'products', + 'action' => 1 + ) + ); + +Or bind them to specific namespaces: + +.. code-block:: php + + add( + "/:namespace/login", + array( + 'namespace' => 1, + 'controller' => 'login', + 'action' => 'index' + ) + ); + +Namespaces/class names must be passed separated: + +.. code-block:: php + + add( + "/login", + array( + 'namespace' => 'Backend\Controllers', + 'controller' => 'login', + 'action' => 'index' + ) + ); + +HTTP Method Restrictions +^^^^^^^^^^^^^^^^^^^^^^^^ +When you add a route using simply :code:`add()`, the route will be enabled for any HTTP method. Sometimes we can restrict a route to a specific method, +this is especially useful when creating RESTful applications: + +.. code-block:: php + + addGet("/products/edit/{id}", "Products::edit"); + + // This route only will be matched if the HTTP method is POST + $router->addPost("/products/save", "Products::save"); + + // This route will be matched if the HTTP method is POST or PUT + $router->add("/products/update", "Products::update")->via(array("POST", "PUT")); + +Using conversors +^^^^^^^^^^^^^^^^ +Conversors allow you to freely transform the route's parameters before passing them to the dispatcher. +The following examples show how to use them: + +.. code-block:: php + + add('/products/{slug:[a-z\-]+}', array( + 'controller' => 'products', + 'action' => 'show' + )) + ->convert('slug', function ($slug) { + // Transform the slug removing the dashes + return str_replace('-', '', $slug); + }); + +Another use case for conversors is binding a model into a route. This allows the model to be passed into the defined action directly: + +.. code-block:: php + + add('/products/{id}', array( + 'controller' => 'products', + 'action' => 'show' + )) + ->convert('id', function ($id) { + // Fetch the model + return Product::findFirstById($id); + }); + +Groups of Routes +^^^^^^^^^^^^^^^^ +If a set of routes have common paths they can be grouped to easily maintain them: + +.. code-block:: php + + 'blog', + 'controller' => 'index' + ) + ); + + // All the routes start with /blog + $blog->setPrefix('/blog'); + + // Add a route to the group + $blog->add( + '/save', + array( + 'action' => 'save' + ) + ); + + // Add another route to the group + $blog->add( + '/edit/{id}', + array( + 'action' => 'edit' + ) + ); + + // This route maps to a controller different than the default + $blog->add( + '/blog', + array( + 'controller' => 'blog', + 'action' => 'index' + ) + ); + + // Add the group to the router + $router->mount($blog); + +You can move groups of routes to separate files in order to improve the organization and code reusing in the application: + +.. code-block:: php + + setPaths( + array( + 'module' => 'blog', + 'namespace' => 'Blog\Controllers' + ) + ); + + // All the routes start with /blog + $this->setPrefix('/blog'); + + // Add a route to the group + $this->add( + '/save', + array( + 'action' => 'save' + ) + ); + + // Add another route to the group + $this->add( + '/edit/{id}', + array( + 'action' => 'edit' + ) + ); + + // This route maps to a controller different than the default + $this->add( + '/blog', + array( + 'controller' => 'blog', + 'action' => 'index' + ) + ); + } + } + +Then mount the group in the router: + +.. code-block:: php + + mount(new BlogRoutes()); + +Matching Routes +--------------- +A valid URI must be passed to the Router so that it can process it and find a matching route. +By default, the routing URI is taken from the :code:`$_GET['_url']` variable that is created by the rewrite engine +module. A couple of rewrite rules that work very well with Phalcon are: + +.. code-block:: apacheconf + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + +In this configuration, any requests to files or folders that don't exist will be sent to index.php. + +The following example shows how to use this component in stand-alone mode: + +.. code-block:: php + + handle(); + + // Or Setting the URI value directly + $router->handle("/employees/edit/17"); + + // Getting the processed controller + echo $router->getControllerName(); + + // Getting the processed action + echo $router->getActionName(); + + // Get the matched route + $route = $router->getMatchedRoute(); + +Naming Routes +------------- +Each route that is added to the router is stored internally as a :doc:`Phalcon\\Mvc\\Router\\Route <../api/Phalcon_Mvc_Router_Route>` object. +That class encapsulates all the details of each route. For instance, we can give a name to a path to identify it uniquely in our application. +This is especially useful if you want to create URLs from it. + +.. code-block:: php + + add("/posts/{year}/{title}", "Posts::show"); + + $route->setName("show-posts"); + + // Or just + + $router->add("/posts/{year}/{title}", "Posts::show")->setName("show-posts"); + +Then, using for example the component :doc:`Phalcon\\Mvc\\Url <../api/Phalcon_Mvc_Url>` we can build routes from its name: + +.. code-block:: php + + get( + array( + "for" => "show-posts", + "year" => "2012", + "title" => "phalcon-1-0-released" + ) + ); + +Usage Examples +-------------- +The following are examples of custom routes: + +.. code-block:: php + + add( + "/system/:controller/a/:action/:params", + array( + "controller" => 1, + "action" => 2, + "params" => 3 + ) + ); + + // Matches "/es/news" + $router->add( + "/([a-z]{2})/:controller", + array( + "controller" => 2, + "action" => "index", + "language" => 1 + ) + ); + + // Matches "/es/news" + $router->add( + "/{language:[a-z]{2}}/:controller", + array( + "controller" => 2, + "action" => "index" + ) + ); + + // Matches "/admin/posts/edit/100" + $router->add( + "/admin/:controller/:action/:int", + array( + "controller" => 1, + "action" => 2, + "id" => 3 + ) + ); + + // Matches "/posts/2015/02/some-cool-content" + $router->add( + "/posts/([0-9]{4})/([0-9]{2})/([a-z\-]+)", + array( + "controller" => "posts", + "action" => "show", + "year" => 1, + "month" => 2, + "title" => 4 + ) + ); + + // Matches "/manual/en/translate.adapter.html" + $router->add( + "/manual/([a-z]{2})/([a-z\.]+)\.html", + array( + "controller" => "manual", + "action" => "show", + "language" => 1, + "file" => 2 + ) + ); + + // Matches /feed/fr/le-robots-hot-news.atom + $router->add( + "/feed/{lang:[a-z]+}/{blog:[a-z\-]+}\.{type:[a-z\-]+}", + "Feed::get" + ); + + // Matches /api/v1/users/peter.json + $router->add( + '/api/(v1|v2)/{method:[a-z]+}/{param:[a-z]+}\.(json|xml)', + array( + 'controller' => 'api', + 'version' => 1, + 'format' => 4 + ) + ); + +.. highlights:: + + Beware of characters allowed in regular expression for controllers and namespaces. As these + become class names and in turn they're passed through the file system could be used by attackers to + read unauthorized files. A safe regular expression is: :code:`/([a-zA-Z0-9\_\-]+)` + +Default Behavior +---------------- +:doc:`Phalcon\\Mvc\\Router <../api/Phalcon_Mvc_Router>` has a default behavior that provides a very simple routing that +always expects a URI that matches the following pattern: /:controller/:action/:params + +For example, for a URL like this *http://phalconphp.com/documentation/show/about.html*, this router will translate it as follows: + ++------------+---------------+ +| Controller | documentation | ++------------+---------------+ +| Action | show | ++------------+---------------+ +| Parameter | about.html | ++------------+---------------+ + +If you don't want the router to have this behavior, you must create the router passing :code:`false` as the first parameter: + +.. code-block:: php + + add( + "/", + array( + 'controller' => 'index', + 'action' => 'index' + ) + ); + +Not Found Paths +--------------- +If none of the routes specified in the router are matched, you can define a group of paths to be used in this scenario: + +.. code-block:: php + + notFound( + array( + "controller" => "index", + "action" => "route404" + ) + ); + +This is typically for an Error 404 page. + +Setting default paths +--------------------- +It's possible to define default values for the module, controller or action. When a route is missing any of +those paths they can be automatically filled by the router: + +.. code-block:: php + + setDefaultModule('backend'); + $router->setDefaultNamespace('Backend\Controllers'); + $router->setDefaultController('index'); + $router->setDefaultAction('index'); + + // Using an array + $router->setDefaults( + array( + 'controller' => 'index', + 'action' => 'index' + ) + ); + +Dealing with extra/trailing slashes +----------------------------------- +Sometimes a route could be accessed with extra/trailing slashes. +Those extra slashes would lead to produce a not-found status in the dispatcher. +You can set up the router to automatically remove the slashes from the end of handled route: + +.. code-block:: php + + removeExtraSlashes(true); + +Or, you can modify specific routes to optionally accept trailing slashes: + +.. code-block:: php + + add( + '/{language:[a-z]{2}}/:controller[/]{0,1}', + array( + 'controller' => 2, + 'action' => 'index' + ) + ); + +Match Callbacks +--------------- +Sometimes, routes should only be matched if they meet specific conditions. +You can add arbitrary conditions to routes using the :code:`beforeMatch()` callback. +If this function return :code:`false`, the route will be treated as non-matched: + +.. code-block:: php + + add('/login', array( + 'module' => 'admin', + 'controller' => 'session' + ))->beforeMatch(function ($uri, $route) { + // Check if the request was made with Ajax + if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) + && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { + return false; + } + return true; + }); + +You can re-use these extra conditions in classes: + +.. code-block:: php + + add('/get/info/{id}', array( + 'controller' => 'products', + 'action' => 'info' + ))->beforeMatch(array(new AjaxFilter(), 'check')); + +Hostname Constraints +-------------------- +The router allows you to set hostname constraints, this means that specific routes or a group of routes can be restricted +to only match if the route also meets the hostname constraint: + +.. code-block:: php + + add('/login', array( + 'module' => 'admin', + 'controller' => 'session', + 'action' => 'login' + ))->setHostName('admin.company.com'); + +The hostname can also be passed as a regular expressions: + +.. code-block:: php + + add('/login', array( + 'module' => 'admin', + 'controller' => 'session', + 'action' => 'login' + ))->setHostName('([a-z]+).company.com'); + +In groups of routes you can set up a hostname constraint that apply for every route in the group: + +.. code-block:: php + + 'blog', + 'controller' => 'posts' + ) + ); + + // Hostname restriction + $blog->setHostName('blog.mycompany.com'); + + // All the routes start with /blog + $blog->setPrefix('/blog'); + + // Default route + $blog->add( + '/', + array( + 'action' => 'index' + ) + ); + + // Add a route to the group + $blog->add( + '/save', + array( + 'action' => 'save' + ) + ); + + // Add another route to the group + $blog->add( + '/edit/{id}', + array( + 'action' => 'edit' + ) + ); + + // Add the group to the router + $router->mount($blog); + +URI Sources +----------- +By default the URI information is obtained from the :code:`$_GET['_url']` variable, this is passed by the Rewrite-Engine to +Phalcon, you can also use :code:`$_SERVER['REQUEST_URI']` if required: + +.. code-block:: php + + setUriSource(Router::URI_SOURCE_GET_URL); // Use $_GET['_url'] (default) + $router->setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI); // Use $_SERVER['REQUEST_URI'] + +Or you can manually pass a URI to the :code:`handle()` method: + +.. code-block:: php + + handle('/some/route/to/handle'); + +Testing your routes +------------------- +Since this component has no dependencies, you can create a file as shown below to test your routes: + +.. code-block:: php + + handle($testRoute); + + echo 'Testing ', $testRoute, '
'; + + // Check if some route was matched + if ($router->wasMatched()) { + echo 'Controller: ', $router->getControllerName(), '
'; + echo 'Action: ', $router->getActionName(), '
'; + } else { + echo 'The route wasn\'t matched by any route
'; + } + + echo '
'; + } + +Annotations Router +------------------ +This component provides a variant that's integrated with the :doc:`annotations ` service. Using this strategy +you can write the routes directly in the controllers instead of adding them in the service registration: + +.. code-block:: php + + addResource('Products', '/api/products'); + + return $router; + }; + +The annotations can be defined in the following way: + +.. code-block:: php + + addModuleResource('backend', 'Products', '/api/products'); + + return $router; + }; + +Registering Router instance +--------------------------- +You can register router during service registration with Phalcon dependency injector to make it available inside the controllers. + +You need to add code below in your bootstrap file (for example index.php or app/config/services.php if you use `Phalcon Developer Tools `_) + +.. code-block:: php + + set( + 'router', + function () { + require __DIR__.'/../app/config/routes.php'; + + return $router; + } + ); + +You need to create app/config/routes.php and add router initialization code, for example: + +.. code-block:: php + + add( + "/login", + array( + 'controller' => 'login', + 'action' => 'index' + ) + ); + + $router->add( + "/products/:action", + array( + 'controller' => 'products', + 'action' => 1 + ) + ); + + return $router; + +Implementing your own Router +---------------------------- +The :doc:`Phalcon\\Mvc\\RouterInterface <../api/Phalcon_Mvc_RouterInterface>` interface must be implemented to create your own router replacing +the one provided by Phalcon. + +.. _PCRE regular expressions: http://www.php.net/manual/en/book.pcre.php diff --git a/id/reference/samples.rst b/id/reference/samples.rst new file mode 100644 index 000000000000..68d93bf0b378 --- /dev/null +++ b/id/reference/samples.rst @@ -0,0 +1,63 @@ +List of examples +================ + +Following examples are full applications you can use to learn more about Phalcon and use them as base for your own websites/applications: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
diff --git a/id/reference/security.rst b/id/reference/security.rst new file mode 100644 index 000000000000..88170af09a43 --- /dev/null +++ b/id/reference/security.rst @@ -0,0 +1,191 @@ +Security +======== + +This component aids the developer in common security tasks such as password hashing and Cross-Site Request Forgery protection (CSRF). + +Password Hashing +---------------- +Storing passwords in plain text is a bad security practice. Anyone with access to the database will immediately have access to all user +accounts thus being able to engage in unauthorized activities. To combat that, many applications use the familiar one way hashing methods +"md5_" and "sha1_". However, hardware evolves each day, and becomes faster, these algorithms are becoming vulnerable +to brute force attacks. These attacks are also known as `rainbow tables`_. + +To solve this problem we can use hash algorithms as bcrypt_. Why bcrypt? Thanks to its "Eksblowfish_" key setup algorithm +we can make the password encryption as "slow" as we want. Slow algorithms make the process to calculate the real +password behind a hash extremely difficult if not impossible. This will protect your for a long time from a +possible attack using rainbow tables. + +This component gives you the ability to use this algorithm in a simple way: + +.. code-block:: php + + request->getPost('login'); + $password = $this->request->getPost('password'); + + $user->login = $login; + + // Store the password hashed + $user->password = $this->security->hash($password); + + $user->save(); + } + } + +We saved the password hashed with a default work factor. A higher work factor will make the password less vulnerable as +its encryption will be slow. We can check if the password is correct as follows: + +.. code-block:: php + + request->getPost('login'); + $password = $this->request->getPost('password'); + + $user = Users::findFirstByLogin($login); + if ($user) { + if ($this->security->checkHash($password, $user->password)) { + // The password is valid + } + } else { + // To protect against timing attacks. Regardless of whether a user exists or not, the script will take roughly the same amount as it will always be computing a hash. + $this->security->hash(rand()); + } + + // The validation has failed + } + } + +The salt is generated using pseudo-random bytes with the PHP's function openssl_random_pseudo_bytes_ so is required to have the openssl_ extension loaded. + +Cross-Site Request Forgery (CSRF) protection +-------------------------------------------- +This is another common attack against web sites and applications. Forms designed to perform tasks such as user registration or adding comments +are vulnerable to this attack. + +The idea is to prevent the form values from being sent outside our application. To fix this, we generate a `random nonce`_ (token) in each +form, add the token in the session and then validate the token once the form posts data back to our application by comparing the stored +token in the session to the one submitted by the form: + +.. code-block:: html+php + + + + + + + + + +Then in the controller's action you can check if the CSRF token is valid: + +.. code-block:: php + + request->isPost()) { + if ($this->security->checkToken()) { + // The token is OK + } + } + } + } + +Remember to add a session adapter to your Dependency Injector, otherwise the token check won't work: + +.. code-block:: php + + setShared('session', function () { + $session = new Phalcon\Session\Adapter\Files(); + $session->start(); + return $session; + }); + +Adding a captcha_ to the form is also recommended to completely avoid the risks of this attack. + +Setting up the component +------------------------ +This component is automatically registered in the services container as 'security', you can re-register it +to setup its options: + +.. code-block:: php + + set('security', function () { + + $security = new Security(); + + // Set the password hashing factor to 12 rounds + $security->setWorkFactor(12); + + return $security; + }, true); + +Random +------ +The :doc:`Phalcon\\Security\\Random <../api/Phalcon_Security_Random>` class makes it really easy to generate lots of types of random data. + +.. code-block:: php + + bytes(); + + // Generate a random hex string of length $len. + $hex = $random->hex($len); + + // Generate a random base64 string of length $len. + $base64 = $random->base64($len); + + // Generate a random URL-safe base64 string of length $len. + $base64Safe = $random->base64Safe($len); + + // Generate a UUID (version 4). See https://en.wikipedia.org/wiki/Universally_unique_identifier + $uuid = $random->uuid(); + + // Generate a random integer between 0 and $n. + $number = $random->number($n); + +External Resources +------------------ +* `Vökuró `_, is a sample application that uses the Security component for avoid CSRF and password hashing, [`Github `_] + +.. _sha1: http://php.net/manual/en/function.sha1.php +.. _md5: http://php.net/manual/en/function.md5.php +.. _openssl_random_pseudo_bytes: http://php.net/manual/en/function.openssl-random-pseudo-bytes.php +.. _openssl: http://php.net/manual/en/book.openssl.php +.. _captcha: http://www.google.com/recaptcha +.. _`random nonce`: http://en.wikipedia.org/wiki/Cryptographic_nonce +.. _bcrypt: http://en.wikipedia.org/wiki/Bcrypt +.. _Eksblowfish: http://en.wikipedia.org/wiki/Bcrypt#Algorithm +.. _`rainbow tables`: http://en.wikipedia.org/wiki/Rainbow_table diff --git a/id/reference/session.rst b/id/reference/session.rst new file mode 100644 index 000000000000..d962d138391f --- /dev/null +++ b/id/reference/session.rst @@ -0,0 +1,190 @@ +Storing data in Session +======================= + +The :doc:`Phalcon\\Session <../api/Phalcon_Session>` provides object-oriented wrappers to access session data. + +Reasons to use this component instead of raw-sessions: + +* You can easily isolate session data across applications on the same domain +* Intercept where session data is set/get in your application +* Change the session adapter according to the application needs + +Starting the Session +-------------------- +Some applications are session-intensive, almost any action that performs requires access to session data. There are others who access session data casually. +Thanks to the service container, we can ensure that the session is accessed only when it's clearly needed: + +.. code-block:: php + + setShared('session', function () { + $session = new Session(); + $session->start(); + return $session; + }); + +Storing/Retrieving data in Session +---------------------------------- +From a controller, a view or any other component that extends :doc:`Phalcon\\Di\\Injectable <../api/Phalcon_Di_Injectable>` you can access the session service +and store items and retrieve them in the following way: + +.. code-block:: php + + session->set("user-name", "Michael"); + } + + public function welcomeAction() + { + // Check if the variable is defined + if ($this->session->has("user-name")) { + + // Retrieve its value + $name = $this->session->get("user-name"); + } + } + + } + +Removing/Destroying Sessions +---------------------------- +It's also possible remove specific variables or destroy the whole session: + +.. code-block:: php + + session->remove("user-name"); + } + + public function logoutAction() + { + // Destroy the whole session + $this->session->destroy(); + } + } + +Isolating Session Data between Applications +------------------------------------------- +Sometimes a user can use the same application twice, on the same server, in the same session. Surely, if we use variables in session, +we want that every application have separate session data (even though the same code and same variable names). To solve this, you can add a +prefix for every session variable created in a certain application: + +.. code-block:: php + + set('session', function () { + + // All variables created will prefixed with "my-app-1" + $session = new Session( + array( + 'uniqueId' => 'my-app-1' + ) + ); + + $session->start(); + + return $session; + }); + +Adding a unique ID is not necessary. + +Session Bags +------------ +:doc:`Phalcon\\Session\\Bag <../api/Phalcon_Session_Bag>` is a component that helps separating session data into "namespaces". +Working by this way you can easily create groups of session variables into the application. By only setting the variables in the "bag", +it's automatically stored in session: + +.. code-block:: php + + setDI($di); + $user->name = "Kimbra Johnson"; + $user->age = 22; + + +Persistent Data in Components +----------------------------- +Controller, components and classes that extends :doc:`Phalcon\\Di\\Injectable <../api/Phalcon_Di_Injectable>` may inject +a :doc:`Phalcon\\Session\\Bag <../api/Phalcon_Session_Bag>`. This class isolates variables for every class. +Thanks to this you can persist data between requests in every class in an independent way. + +.. code-block:: php + + persistent->name = "Laura"; + } + + public function welcomeAction() + { + if (isset($this->persistent->name)) { + echo "Welcome, ", $this->persistent->name; + } + } + } + +In a component: + +.. code-block:: php + + persistent->name = "Laura"; + } + + public function getAuthName() + { + return $this->persistent->name; + } + } + +The data added to the session (:code:`$this->session`) are available throughout the application, while persistent (:code:`$this->persistent`) +can only be accessed in the scope of the current class. + +Implementing your own adapters +------------------------------ +The :doc:`Phalcon\\Session\\AdapterInterface <../api/Phalcon_Session_AdapterInterface>` interface must be implemented in order to create your own session adapters or extend the existing ones. + +There are more adapters available for this components in the `Phalcon Incubator `_ diff --git a/id/reference/tags.rst b/id/reference/tags.rst new file mode 100755 index 000000000000..fc52e6f8dc94 --- /dev/null +++ b/id/reference/tags.rst @@ -0,0 +1,707 @@ +View Helpers +============ + +Writing and maintaining HTML markup can quickly become a tedious task because of the naming conventions and numerous attributes that have to +be taken into consideration. Phalcon deals with this complexity by offering :doc:`Phalcon\\Tag <../api/Phalcon_Tag>`, which in turn offers +view helpers to generate HTML markup. + +This component can be used in a plain HTML+PHP view or in a :doc:`Volt ` template. + +.. highlights:: + + This guide is not intended to be a complete documentation of available helpers and their arguments. Please visit + the :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` page in the API for a complete reference. + +Document Type of Content +------------------------ +Phalcon provides :code:`Phalcon\Tag::setDoctype()` helper to set document type of the content. Document type setting may affect HTML output produced by other tag helpers. +For example, if you set XHTML document type family, helpers that return or output HTML tags will produce self-closing tags to follow valid XHTML standard. + +Available document type constants in :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` namespace are: + ++----------------------+------------------------+ +| Constant | Document type | ++======================+========================+ +| HTML32 | HTML 3.2 | ++----------------------+------------------------+ +| HTML401_STRICT | HTML 4.01 Strict | ++----------------------+------------------------+ +| HTML401_TRANSITIONAL | HTML 4.01 Transitional | ++----------------------+------------------------+ +| HTML401_FRAMESET | HTML 4.01 Frameset | ++----------------------+------------------------+ +| HTML5 | HTML 5 | ++----------------------+------------------------+ +| XHTML10_STRICT | XHTML 1.0 Strict | ++----------------------+------------------------+ +| XHTML10_TRANSITIONAL | XHTML 1.0 Transitional | ++----------------------+------------------------+ +| XHTML10_FRAMESET | XHTML 1.0 Frameset | ++----------------------+------------------------+ +| XHTML11 | XHTML 1.1 | ++----------------------+------------------------+ +| XHTML20 | XHTML 2.0 | ++----------------------+------------------------+ +| XHTML5 | XHTML 5 | ++----------------------+------------------------+ + +Setting document type. + +.. code-block:: php + + tag->setDoctype(Tag::HTML401_STRICT); + + ?> + +Getting document type. + +.. code-block:: html+php + + tag->getDoctype() ?> + + + + +The following HTML will be produced. + +.. code-block:: html + + + + + + +Volt syntax: + +.. code-block:: html+jinja + + {{ get_doctype() }} + + + + +Generating Links +---------------- +A real common task in any web application or website is to produce links that allow us to navigate from one page to another. +When they are internal URLs we can create them in the following manner: + +.. code-block:: html+php + + + tag->linkTo("products/search", "Search") ?> + + + tag->linkTo(array('products/edit/10', 'Edit', 'class' => 'edit-btn')) ?> + + + tag->linkTo(array(array('for' => 'show-product', 'title' => 123, 'name' => 'carrots'), 'Show')) ?> + +Actually, all produced URLs are generated by the component :doc:`Phalcon\\Mvc\\Url ` (or service "url" failing) + +Same links generated with Volt: + +.. code-block:: html+jinja + + + {{ link_to("products/search", "Search") }} + + + {{ link_to(['for': 'show-product', 'id': 123, 'name': 'carrots'], 'Show') }} + + + {{ link_to(['for': 'show-product', 'id': 123, 'name': 'carrots'], 'Show', 'class': 'edit-btn') }} + +Creating Forms +-------------- +Forms in web applications play an essential part in retrieving user input. The following example shows how to implement a simple search form using view helpers: + +.. code-block:: html+php + + + tag->form("products/search") ?> + + tag->textField("q") ?> + tag->submitButton("Search") ?> + tag->endForm() ?> + + + tag->form(array("products/search", "method" => "get")); ?> + + tag->textField("q"); ?> + tag->submitButton("Search"); ?> + tag->endForm() ?> + +This last code will generate the following HTML: + +.. code-block:: html + +
+ + + +
+ +Same form generated in Volt: + +.. code-block:: html+jinja + + + {{ form("products/search", "method": "get") }} + + {{ text_field("q") }} + {{ submit_button("Search") }} + {{ endForm() }} + +Phalcon also provides a :doc:`form builder ` to create forms in an object-oriented manner. + +Helpers to Generate Form Elements +--------------------------------- +Phalcon provides a series of helpers to generate form elements such as text fields, buttons and more. The first parameter of each helper is always the name of the element to be generated. When the form is submitted, the name will be passed along with the form data. In a controller you can get these values using the same name by using the :code:`getPost()` and :code:`getQuery()` methods on the request object (:code:`$this->request`). + +.. code-block:: html+php + + tag->textField("username") ?> + + tag->textArea(array( + "comment", + "This is the content of the text-area", + "cols" => "6", + "rows" => 20 + )) ?> + + tag->passwordField(array( + "password", + "size" => 30 + )) ?> + + tag->hiddenField(array( + "parent_id", + "value"=> "5" + )) ?> + +Volt syntax: + +.. code-block:: html+jinja + + {{ text_field("username") }} + + {{ text_area("comment", "This is the content", "cols": "6", "rows": 20) }} + + {{ password_field("password", "size": 30) }} + + {{ hidden_field("parent_id", "value": "5") }} + +Making Select Boxes +------------------- +Generating select boxes (select box) is easy, especially if the related data is stored in PHP associative arrays. The helpers for select elements are :code:`Phalcon\Tag::select()` and :code:`Phalcon\Tag::selectStatic()`. +:code:`Phalcon\Tag::select()` has been was specifically designed to work with :doc:`Phalcon\\Mvc\\Model `, while :code:`Phalcon\Tag::selectStatic()` can with PHP arrays. + +.. code-block:: php + + tag->select( + array( + "productId", + Products::find("type = 'vegetables'"), + "using" => array("id", "name") + ) + ); + + // Using data from an array + echo $this->tag->selectStatic( + array( + "status", + array( + "A" => "Active", + "I" => "Inactive", + ) + ) + ); + +The following HTML will generated: + +.. code-block:: html + + + + + +You can add an "empty" option to the generated HTML: + +.. code-block:: php + + tag->select( + array( + "productId", + Products::find("type = 'vegetables'"), + "using" => array("id", "name"), + "useEmpty" => true + ) + ); + +Produces this HTML: + +.. code-block:: html + + + +.. code-block:: php + + tag->select( + array( + 'productId', + Products::find("type = 'vegetables'"), + 'using' => array('id', "name"), + 'useEmpty' => true, + 'emptyText' => 'Please, choose one...', + 'emptyValue' => '@' + ) + ); + +.. code-block:: html + + + +Volt syntax for above example: + +.. code-block:: jinja + + {# Creating a Select Tag with an empty option with default text #} + {{ select('productId', products, 'using': ['id', 'name'], + 'useEmpty': true, 'emptyText': 'Please, choose one...', 'emptyValue': '@') }} + +Assigning HTML attributes +------------------------- +All the helpers accept an array as their first parameter which can contain additional HTML attributes for the element generated. + +.. code-block:: html+php + + tag->textField( + array( + "price", + "size" => 20, + "maxlength" => 30, + "placeholder" => "Enter a price" + ) + ) ?> + +or using Volt: + +.. code-block:: jinja + + {{ text_field("price", "size": 20, "maxlength": 30, "placeholder": "Enter a price") }} + +The following HTML is generated: + +.. code-block:: html + + + +Setting Helper Values +--------------------- + +From Controllers +^^^^^^^^^^^^^^^^ +It is a good programming principle for MVC frameworks to set specific values for form elements in the view. +You can set those values directly from the controller using :code:`Phalcon\Tag::setDefault()`. +This helper preloads a value for any helpers present in the view. If any helper in the view has +a name that matches the preloaded value, it will use it, unless a value is directly assigned on the helper in the view. + +.. code-block:: php + + tag->setDefault("color", "Blue"); + } + } + +At the view, a selectStatic helper matches the same index used to preset the value. In this case "color": + +.. code-block:: php + + tag->selectStatic( + array( + "color", + array( + "Yellow" => "Yellow", + "Blue" => "Blue", + "Red" => "Red" + ) + ) + ); + +This will generate the following select tag with the value "Blue" selected: + +.. code-block:: html + + + +From the Request +^^^^^^^^^^^^^^^^ +A special feature that the :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` helpers have is that they keep the values +of form helpers between requests. This way you can easily show validation messages without losing entered data. + +Specifying values directly +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Every form helper supports the parameter "value". With it you can specify a value for the helper directly. +When this parameter is present, any preset value using setDefault() or via request will be ignored. + +Changing dynamically the Document Title +--------------------------------------- +:doc:`Phalcon\\Tag <../api/Phalcon_Tag>` offers helpers to change dynamically the document title from the controller. +The following example demonstrates just that: + +.. code-block:: php + + tag->setTitle("Your Website"); + } + + public function indexAction() + { + $this->tag->prependTitle("Index of Posts - "); + } + } + +.. code-block:: html+php + + + + tag->getTitle(); ?> + + + + + + +The following HTML will generated: + +.. code-block:: html+php + + + + Index of Posts - Your Website + + + + + + + +Static Content Helpers +---------------------- +:doc:`Phalcon\\Tag <../api/Phalcon_Tag>` also provide helpers to generate tags such as script, link or img. They aid in quick and easy generation of the static resources of your application + +Images +^^^^^^ +.. code-block:: php + + + echo $this->tag->image("img/hello.gif"); + + // Generate alternative text + echo $this->tag->image( + array( + "img/hello.gif", + "alt" => "alternative text" + ) + ); + +Volt syntax: + +.. code-block:: jinja + + {# Generate #} + {{ image("img/hello.gif") }} + + {# Generate alternative text #} + {{ image("img/hello.gif", "alt": "alternative text") }} + +Stylesheets +^^^^^^^^^^^ +.. code-block:: php + + + echo $this->tag->stylesheetLink("http://fonts.googleapis.com/css?family=Rosario", false); + + // Generate + echo $this->tag->stylesheetLink("css/styles.css"); + +Volt syntax: + +.. code-block:: jinja + + {# Generate #} + {{ stylesheet_link("http://fonts.googleapis.com/css?family=Rosario", false) }} + + {# Generate #} + {{ stylesheet_link("css/styles.css") }} + +Javascript +^^^^^^^^^^ +.. code-block:: php + + + echo $this->tag->javascriptInclude("http://localhost/javascript/jquery.min.js", false); + + // Generate + echo $this->tag->javascriptInclude("javascript/jquery.min.js"); + +Volt syntax: + +.. code-block:: jinja + + {# Generate #} + {{ javascript_include("http://localhost/javascript/jquery.min.js", false) }} + + {# Generate #} + {{ javascript_include("javascript/jquery.min.js") }} + +HTML5 elements - generic HTML helper +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Phalcon offers a generic HTML helper that allows the generation of any kind of HTML element. It is up to the developer to produce a valid HTML element name to the helper. + +.. code-block:: php + + + // This is my canvas + // + echo $this->tag->tagHtml("canvas", array("id" => "canvas1", "width" => "300", "class" => "cnvclass"), false, true, true); + echo "This is my canvas"; + echo $this->tag->tagHtmlClose("canvas"); + +Volt syntax: + +.. code-block:: html+jinja + + {# Generate + + This is my canvas + #} + {{ tag_html("canvas", ["id": "canvas1", width": "300", "class": "cnvclass"], false, true, true) }} + This is my canvas + {{ tag_html_close("canvas") }} + +Tag Service +----------- +:doc:`Phalcon\\Tag <../api/Phalcon_Tag>` is available via the 'tag' service, this means you can access it from any part +of the application where the services container is located: + +.. code-block:: php + + tag->linkTo('pages/about', 'About') ?> + +You can easily add new helpers to a custom component replacing the service 'tag' in the services container: + +.. code-block:: php + + ` and implement your own helper. Below is a simple example of a custom helper: + +.. code-block:: php + + $attributeValue) { + if (!is_integer($key)) { + $code.= $key.'="'.$attributeValue.'" '; + } + } + $code.=" />"; + + return $code; + } + } + +After creating our custom helper, we will autoload the new directory that contains our helper class from our "index.php" located in the public directory. + +.. code-block:: php + + registerDirs(array( + '../app/controllers', + '../app/models', + '../app/customhelpers' // Add the new helpers folder + ))->register(); + + $di = new FactoryDefault(); + + // Assign our new tag a definition so we can call it + $di->set('MyTags', function () { + return new MyTags(); + }); + + $application = new Application($di); + + $response = $application->handle(); + + $response->send(); + + } catch (PhalconException $e) { + echo "PhalconException: ", $e->getMessage(); + } + +Now you are ready to use your new helper within your views: + +.. code-block:: php + + + + 'test', + 'id' => 'audio_test', + 'src' => '/path/to/audio.mp3' + ) + ); + + ?> + + + +In next chapter, we'll talk about :doc:`Volt ` a faster template engine for PHP, where you can use a +more friendly syntax for using helpers provided by :doc:`Phalcon\\Tag <../api/Phalcon_Tag>`. diff --git a/id/reference/tools.rst b/id/reference/tools.rst new file mode 100644 index 000000000000..177b6c986343 --- /dev/null +++ b/id/reference/tools.rst @@ -0,0 +1,360 @@ +Phalcon Developer Tools +======================= + +These tools are a collection of useful scripts to generate skeleton code. Core components of your application can be generated with +a simple command, allowing you to easily develop applications using Phalcon. + +.. highlights:: + **Important:** Phalcon Framework version 0.5.0 or greater is needed to use developer tools. It is highly recommended + to use PHP 5.4 or greater. If you prefer to use the web version instead of the console, this `blog post`_ offers more information. + +Download +-------- +You can download or clone a cross platform package containing the developer tools from Github_. + +Installation +^^^^^^^^^^^^ +These are detailed instructions on how to install the developer tools on different platforms: + +.. toctree:: + :maxdepth: 1 + + wintools + mactools + linuxtools + +Getting Available Commands +-------------------------- +You can get a list of available commands in Phalcon tools by typing: :code:`phalcon commands` + +.. code-block:: sh + + $ phalcon commands + + Phalcon DevTools (2.0.8) + + Available commands: + commands (alias of: list, enumerate) + controller (alias of: create-controller) + model (alias of: create-model) + all-models (alias of: create-all-models) + project (alias of: create-project) + scaffold (alias of: create-scaffold) + migration (alias of: create-migration) + webtools (alias of: create-webtools) + +Generating a Project Skeleton +----------------------------- +You can use Phalcon tools to generate pre-defined project skeletons for your applications with Phalcon framework. By default the +project skeleton generator will use mod_rewrite for Apache. Type the following command on your web server document root: + +.. code-block:: sh + + $ pwd + + /Applications/MAMP/htdocs + + $ phalcon create-project store + +The above recommended project structure was generated: + +.. figure:: ../_static/img/tools-2.png + :align: center + +You could add the parameter *--help* to get help on the usage of a certain script: + +.. code-block:: sh + + $ phalcon project --help + + Phalcon DevTools (2.0.8) + + Help: + Creates a project + + Usage: + project [name] [type] [directory] [enable-webtools] + + Arguments: + help Shows this help text + + Example + phalcon project store simple + + Options: + --name Name of the new project + --enable-webtools Determines if webtools should be enabled [optional] + --directory=s Base path on which project will be created [optional] + --type=s Type of the application to be generated (cli, micro, simple, modules) + --template-path=s Specify a template path [optional] + --use-config-ini Use a ini file as configuration file [optional] + --trace Shows the trace of the framework in case of exception. [optional] + --help Shows this help + +Accessing the project from the web server will show you: + +.. figure:: ../_static/img/tools-6.png + :align: center + +Generating Controllers +---------------------- +The command "create-controller" generates controller skeleton structures. It's important to invoke this command inside a directory +that already has a Phalcon project. + +.. code-block:: sh + + $ phalcon create-controller --name test + +The following code is generated by the script: + +.. code-block:: php + + id = $id; + } + + /** + * Method to set the value of field types_id + * @param integer $types_id + */ + public function setTypesId($types_id) + { + $this->types_id = $types_id; + } + + // ... + + /** + * Returns the value of field status + * @return string + */ + public function getStatus() + { + return $this->status; + } + } + +A nice feature of the model generator is that it keeps changes made by the developer between code generations. This allows the +addition or removal of fields and properties, without worrying about losing changes made to the model itself. +The following screencast shows you how it works: + +.. raw:: html + +
+ +Scaffold a CRUD +--------------- +Scaffolding is a quick way to generate some of the major pieces of an application. If you want to create the models, views, and +controllers for a new resource in a single operation, scaffolding is the tool for the job. + +Once the code is generated, it will have to be customized to meet your needs. Many developers avoid scaffolding entirely, opting +to write all or most of their source code from scratch. The generated code can serve as a guide to better understand of how the +framework works or develop prototypes. The code below shows a scaffold based on the table "products": + +.. code-block:: sh + + $ phalcon scaffold --table-name products + +The scaffold generator will build several files in your application, along with some folders. Here's a quick overview of what will be generated: + ++----------------------------------------+--------------------------------+ +| File | Purpose | ++========================================+================================+ +| app/controllers/ProductsController.php | The Products controller | ++----------------------------------------+--------------------------------+ +| app/models/Products.php | The Products model | ++----------------------------------------+--------------------------------+ +| app/views/layout/products.phtml | Controller layout for Products | ++----------------------------------------+--------------------------------+ +| app/views/products/new.phtml | View for the action "new" | ++----------------------------------------+--------------------------------+ +| app/views/products/edit.phtml | View for the action "edit" | ++----------------------------------------+--------------------------------+ +| app/views/products/search.phtml | View for the action "search" | ++----------------------------------------+--------------------------------+ + +When browsing the recently generated controller, you will see a search form and a link to create a new Product: + +.. figure:: ../_static/img/tools-10.png + :align: center + +The "create page" allows you to create products applying validations on the Products model. Phalcon will automatically validate +not null fields producing warnings if any of them is required. + +.. figure:: ../_static/img/tools-11.png + :align: center + +After performing a search, a pager component is available to show paged results. Use the "Edit" or "Delete" links in front of each result to perform such actions. + +.. figure:: ../_static/img/tools-12.png + :align: center + +Web Interface to Tools +---------------------- +Also, if you prefer, it's possible to use Phalcon Developer Tools from a web interface. Check out the following screencast to figure out how it works: + +.. raw:: html + +
+ +Integrating Tools with PhpStorm IDE +----------------------------------- +The screencast below shows how to integrate developer tools with the `PhpStorm IDE`_. The configuration steps could be easily adapted to other IDEs for PHP. + +.. raw:: html + +
+ +Conclusion +---------- +Phalcon Developer Tools provides an easy way to generate code for your application, reducing development time and potential coding errors. + +.. _blog post: https://blog.phalconphp.com/post/dont-like-command-line-and-consoles-no-problem +.. _Github: https://github.com/phalcon/phalcon-devtools +.. _Bootstrap: http://twitter.github.com/bootstrap/ +.. _PhpStorm IDE: http://www.jetbrains.com/phpstorm/ diff --git a/id/reference/translate.rst b/id/reference/translate.rst new file mode 100755 index 000000000000..bed912f0b3ea --- /dev/null +++ b/id/reference/translate.rst @@ -0,0 +1,168 @@ +Multi-lingual Support +===================== + +The component :doc:`Phalcon\\Translate <../api/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. + +Adapters +-------- +This component makes use of adapters to read translation messages from different sources in a unified way. + ++-------------+-----------------------------------------------------------------------------------------+ +| Adapter | Description | ++=============+=========================================================================================+ +| NativeArray | Uses PHP arrays to store the messages. This is the best option in terms of performance. | ++-------------+-----------------------------------------------------------------------------------------+ + +Component Usage +--------------- +Translation strings are stored in files. The structure of these files could vary depending of the adapter used. Phalcon gives you the freedom +to organize your translation strings. A simple structure could be: + +.. code-block:: bash + + app/messages/en.php + app/messages/es.php + app/messages/fr.php + app/messages/zh.php + +Each file contains an array of the translations in a key/value manner. For each translation file, keys are unique. The same array is used in +different files, where keys remain the same and values contain the translated strings depending on each language. + +.. code-block:: php + + "Hello", + "bye" => "Good Bye", + "hi-name" => "Hello %name%", + "song" => "This song is %song%" + ); + +.. code-block:: php + + "Bonjour", + "bye" => "Au revoir", + "hi-name" => "Bonjour %name%", + "song" => "La chanson est %song%" + ); + +Implementing the translation mechanism in your application is trivial but depends on how you wish to implement it. You can use an +automatic detection of the language from the user's browser or you can provide a settings page where the user can select their language. + +A simple way of detecting the user's language is to parse the :code:`$_SERVER['HTTP_ACCEPT_LANGUAGE']` contents, or if you wish, access it +directly by calling :code:`$this->request->getBestLanguage()` from an action/controller: + +.. code-block:: php + + request->getBestLanguage(); + + // Check if we have a translation file for that lang + if (file_exists("app/messages/" . $language . ".php")) { + require "app/messages/" . $language . ".php"; + } 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(); + } + } + +The :code:`_getTranslation()` method is available for all actions that require translations. The :code:`$t` variable is passed to the views, and with it, +we can translate strings in that layer: + +.. code-block:: html+php + + + +

_("hi"), " ", $name; ?>

+ +The :code:`_()` method is returning the translated string based on the index passed. Some strings need to incorporate placeholders for +calculated data i.e. Hello %name%. These placeholders can be replaced with passed parameters in the :code:`_()` method. The passed parameters +are in the form of a key/value array, where the key matches the placeholder name and the value is the actual data to be replaced: + +.. code-block:: html+php + + + +

_("hi-name", array("name" => $name)); ?>

+ +Some applications implement multilingual on the URL such as http://www.mozilla.org/**es-ES**/firefox/. Phalcon can implement +this by using a :doc:`Router `. + +Implementing your own adapters +------------------------------ +The :doc:`Phalcon\\Translate\\AdapterInterface <../api/Phalcon_Translate_AdapterInterface>` interface must be implemented +in order to create your own translate adapters or extend the existing ones: + +.. code-block:: php + + `_ diff --git a/id/reference/tutorial-invo-2.rst b/id/reference/tutorial-invo-2.rst new file mode 100644 index 000000000000..22264ca17b17 --- /dev/null +++ b/id/reference/tutorial-invo-2.rst @@ -0,0 +1,496 @@ +Tutorial 3: Securing INVO +========================= + +In this chapter, we continue explaining how INVO is structured, we'll talk +about the implementation of authentication, authorization using events and plugins and +an access control list (ACL) managed by Phalcon. + +Log into the Application +------------------------ +A "log in" facility will allow us to work on backend controllers. The separation between backend controllers and +frontend ones is only logical. All controllers are located in the same directory (app/controllers/). + +To enter the system, users must have a valid username and password. Users are stored in the table "users" +in the database "invo". + +Before we can start a session, we need to configure the connection to the database in the application. A service +called "db" is set up in the service container with the connection information. As with the autoloader, we are +again taking parameters from the configuration file in order to configure a service: + +.. code-block:: php + + set('db', function () use ($config) { + return new DbAdapter( + array( + "host" => $config->database->host, + "username" => $config->database->username, + "password" => $config->database->password, + "dbname" => $config->database->name + ) + ); + }); + +Here, we return an instance of the MySQL connection adapter. If needed, you could do extra actions such as adding a +logger, a profiler or change the adapter, setting it up as you want. + +The following simple form (app/views/session/index.volt) requests the login information. We've removed +some HTML code to make the example more concise: + +.. code-block:: html+jinja + + {{ form('session/start') }} +
+
+ +
+ {{ text_field('email') }} +
+
+
+ +
+ {{ password_field('password') }} +
+
+
+ {{ submit_button('Login') }} +
+
+ + +Instead of using raw PHP as the previous tutorial, we started to use :doc:`Volt `. This is a built-in +template engine inspired in Jinja_ providing a simpler and friendly syntax to create templates. +It will not take too long before you become familiar with Volt. + +The :code:`SessionController::startAction` function (app/controllers/SessionController.php) has the task of validating the +data entered in the form including checking for a valid user in the database: + +.. code-block:: php + + session->set( + 'auth', + array( + 'id' => $user->id, + 'name' => $user->name + ) + ); + } + + /** + * This action authenticate and logs a user into the application + */ + public function startAction() + { + if ($this->request->isPost()) { + + // Get the data from the user + $email = $this->request->getPost('email'); + $password = $this->request->getPost('password'); + + // Find the user in the database + $user = Users::findFirst( + array( + "(email = :email: OR username = :email:) AND password = :password: AND active = 'Y'", + 'bind' => array( + 'email' => $email, + 'password' => sha1($password) + ) + ) + ); + + if ($user != false) { + + $this->_registerSession($user); + + $this->flash->success('Welcome ' . $user->name); + + // Forward to the 'invoices' controller if the user is valid + return $this->dispatcher->forward( + array( + 'controller' => 'invoices', + 'action' => 'index' + ) + ); + } + + $this->flash->error('Wrong email/password'); + } + + // Forward to the login form again + return $this->dispatcher->forward( + array( + 'controller' => 'session', + 'action' => 'index' + ) + ); + } + } + +For the sake of simplicity, we have used "sha1_" to store the password hashes in the database, however, this algorithm is +not recommended in real applications, use ":doc:`bcrypt `" instead. + +Note that multiple public attributes are accessed in the controller like: :code:`$this->flash`, :code:`$this->request` or :code:`$this->session`. +These are services defined in the services container from earlier (app/config/services.php). +When they're accessed the first time, they are injected as part of the controller. + +These services are "shared", which means that we are always accessing the same instance regardless of the place +where we invoke them. + +For instance, here we invoke the "session" service and then we store the user identity in the variable "auth": + +.. code-block:: php + + session->set( + 'auth', + array( + 'id' => $user->id, + 'name' => $user->name + ) + ); + +Another important aspect of this section is how the user is validated as a valid one, +first we validate whether the request has been made using method POST: + +.. code-block:: php + + request->isPost()) { + +Then, we receive the parameters from the form: + +.. code-block:: php + + request->getPost('email'); + $password = $this->request->getPost('password'); + +Now, we have to check if there is one user with the same username or email and password: + +.. code-block:: php + + array( + 'email' => $email, + 'password' => sha1($password) + ) + ) + ); + +Note, the use of 'bound parameters', placeholders :email: and :password: are placed where values should be, +then the values are 'bound' using the parameter 'bind'. This safely replaces the values for those +columns without having the risk of a SQL injection. + +If the user is valid we register it in session and forwards him/her to the dashboard: + +.. code-block:: php + + _registerSession($user); + $this->flash->success('Welcome ' . $user->name); + + return $this->forward('invoices/index'); + } + +If the user does not exist we forward the user back again to action where the form is displayed: + +.. code-block:: php + + forward('session/index'); + +Securing the Backend +-------------------- +The backend is a private area where only registered users have access. Therefore, it is necessary +to check that only registered users have access to these controllers. If you aren't logged +into the application and you try to access, for example, the products controller (which is private) +you will see a screen like this: + +.. figure:: ../_static/img/invo-2.png + :align: center + +Every time someone attempts to access any controller/action, the application verifies that the +current role (in session) has access to it, otherwise it displays a message like the above and +forwards the flow to the home page. + +Now let's find out how the application accomplishes this. The first thing to know is that +there is a component called :doc:`Dispatcher `. It is informed about the route +found by the :doc:`Routing ` component. Then, it is responsible for loading the +appropriate controller and execute the corresponding action method. + +Normally, the framework creates the Dispatcher automatically. In our case, we want to perform a verification +before executing the required action, checking if the user has access to it or not. To achieve this, we have +replaced the component by creating a function in the bootstrap: + +.. code-block:: php + + set('dispatcher', function () { + + // ... + + $dispatcher = new Dispatcher(); + + return $dispatcher; + }); + +We now have total control over the Dispatcher used in the application. Many components in the framework trigger +events that allow us to modify their internal flow of operation. As the Dependency Injector component acts as glue +for components, a new component called :doc:`EventsManager ` allows us to intercept the events produced +by a component, routing the events to listeners. + +Events Management +^^^^^^^^^^^^^^^^^ +An :doc:`EventsManager ` allows us to attach listeners to a particular type of event. The type that +interests us now is "dispatch". The following code filters all events produced by the Dispatcher: + +.. code-block:: php + + set('dispatcher', function () { + + // Create an events manager + $eventsManager = new EventsManager(); + + // Listen for events produced in the dispatcher using the Security plugin + $eventsManager->attach('dispatch:beforeExecuteRoute', new SecurityPlugin); + + // Handle exceptions and not-found exceptions using NotFoundPlugin + $eventsManager->attach('dispatch:beforeException', new NotFoundPlugin); + + $dispatcher = new Dispatcher(); + + // Assign the events manager to the dispatcher + $dispatcher->setEventsManager($eventsManager); + + return $dispatcher; + }); + +When an event called "beforeExecuteRoute" is triggered the following plugin will be notified: + +.. code-block:: php + + attach('dispatch:beforeExecuteRoute', new SecurityPlugin); + +When a "beforeException" is triggered then other plugin is notified: + +.. code-block:: php + + attach('dispatch:beforeException', new NotFoundPlugin); + +SecurityPlugin is a class located at (app/plugins/SecurityPlugin.php). This class implements the method +"beforeExecuteRoute". This is the same name as one of the events produced in the Dispatcher: + +.. code-block:: php + + `, but by doing this they gain easier access to the services +available in the application. + +Now, we're verifying the role in the current session, checking if the user has access using the ACL list. +If the user does not have access we redirect to the home screen as explained before: + +.. code-block:: php + + session->get('auth'); + if (!$auth) { + $role = 'Guests'; + } else { + $role = 'Users'; + } + + // Take the active controller/action from the dispatcher + $controller = $dispatcher->getControllerName(); + $action = $dispatcher->getActionName(); + + // Obtain the ACL list + $acl = $this->getAcl(); + + // Check if the Role have access to the controller (resource) + $allowed = $acl->isAllowed($role, $controller, $action); + if ($allowed != Acl::ALLOW) { + + // If he doesn't have access forward him to the index controller + $this->flash->error("You don't have access to this module"); + $dispatcher->forward( + array( + 'controller' => 'index', + 'action' => 'index' + ) + ); + + // Returning "false" we tell to the dispatcher to stop the current operation + return false; + } + } + } + +Providing an ACL list +^^^^^^^^^^^^^^^^^^^^^ +In the above example we have obtained the ACL using the method :code:`$this->getAcl()`. This method is also +implemented in the Plugin. Now we are going to explain step-by-step how we built the access control list (ACL): + +.. code-block:: php + + setDefaultAction(Acl::DENY); + + // Register two roles, Users is registered users + // and guests are users without a defined identity + $roles = array( + 'users' => new Role('Users'), + 'guests' => new Role('Guests') + ); + + foreach ($roles as $role) { + $acl->addRole($role); + } + +Now, we define the resources for each area respectively. Controller names are resources and their actions are +accesses for the resources: + +.. code-block:: php + + array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'), + 'products' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'), + 'producttypes' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'), + 'invoices' => array('index', 'profile') + ); + foreach ($privateResources as $resource => $actions) { + $acl->addResource(new Resource($resource), $actions); + } + + // Public area resources (frontend) + $publicResources = array( + 'index' => array('index'), + 'about' => array('index'), + 'register' => array('index'), + 'errors' => array('show404', 'show500'), + 'session' => array('index', 'register', 'start', 'end'), + 'contact' => array('index', 'send') + ); + foreach ($publicResources as $resource => $actions) { + $acl->addResource(new Resource($resource), $actions); + } + +The ACL now have knowledge of the existing controllers and their related actions. Role "Users" has access to +all the resources of both frontend and backend. The role "Guests" only has access to the public area: + +.. code-block:: php + + $actions) { + $acl->allow($role->getName(), $resource, '*'); + } + } + + // Grant access to private area only to role Users + foreach ($privateResources as $resource => $actions) { + foreach ($actions as $action) { + $acl->allow('Users', $resource, $action); + } + } + +Hooray!, the ACL is now complete. In next chapter, we will see how a CRUD is implemented in Phalcon and how you +can customize it. + +.. _jinja: http://jinja.pocoo.org/ +.. _sha1: http://php.net/manual/en/function.sha1.php diff --git a/id/reference/tutorial-invo-3.rst b/id/reference/tutorial-invo-3.rst new file mode 100644 index 000000000000..864584f7bb49 --- /dev/null +++ b/id/reference/tutorial-invo-3.rst @@ -0,0 +1,766 @@ +Tutorial 4: Using CRUDs +======================= + +Backends usually provides forms to allow users to manipulate data. Continuing the explanation of +INVO, we now address the creation of CRUDs, a very common task that Phalcon will facilitate you +using forms, validations, paginators and more. + +Working with the CRUD +--------------------- +Most options that manipulate data in INVO (companies, products and types of products), were developed +using a basic and common CRUD_ (Create, Read, Update and Delete). Each CRUD contains the following files: + +.. code-block:: bash + + invo/ + app/ + controllers/ + ProductsController.php + models/ + Products.php + forms/ + ProductsForm.php + views/ + products/ + edit.volt + index.volt + new.volt + search.volt + +Each controller has the following actions: + +.. code-block:: php + + persistent->searchParams = null; + $this->view->form = new ProductsForm; + } + +An instance of the form ProductsForm (app/forms/ProductsForm.php) is passed to the view. +This form defines the fields that are visible to the user: + +.. code-block:: php + + add($element->setLabel("Id")); + } else { + $this->add(new Hidden("id")); + } + + $name = new Text("name"); + $name->setLabel("Name"); + $name->setFilters(array('striptags', 'string')); + $name->addValidators( + array( + new PresenceOf( + array( + 'message' => 'Name is required' + ) + ) + ) + ); + $this->add($name); + + $type = new Select( + 'profilesId', + ProductTypes::find(), + array( + 'using' => array('id', 'name'), + 'useEmpty' => true, + 'emptyText' => '...', + 'emptyValue' => '' + ) + ); + $this->add($type); + + $price = new Text("price"); + $price->setLabel("Price"); + $price->setFilters(array('float')); + $price->addValidators( + array( + new PresenceOf( + array( + 'message' => 'Price is required' + ) + ), + new Numericality( + array( + 'message' => 'Price is required' + ) + ) + ) + ); + $this->add($price); + } + } + +The form is declared using an object-oriented scheme based on the elements provided by the :doc:`forms ` component. +Every element follows almost the same structure: + +.. code-block:: php + + setLabel("Name"); + + // Before validating the element apply these filters + $name->setFilters(array('striptags', 'string')); + + // Apply this validators + $name->addValidators( + array( + new PresenceOf( + array( + 'message' => 'Name is required' + ) + ) + ) + ); + + // Add the element to the form + $this->add($name); + +Other elements are also used in this form: + +.. code-block:: php + + add(new Hidden("id")); + + // ... + + // Add a HTML Select (list) to the form + // and fill it with data from "product_types" + $type = new Select( + 'profilesId', + ProductTypes::find(), + array( + 'using' => array('id', 'name'), + 'useEmpty' => true, + 'emptyText' => '...', + 'emptyValue' => '' + ) + ); + +Note that :code:`ProductTypes::find()` contains the data necessary to fill the SELECT tag using :code:`Phalcon\Tag::select()`. +Once the form is passed to the view, it can be rendered and presented to the user: + +.. code-block:: html+jinja + + {{ form("products/search") }} + +

Search products

+ +
+ + {% for element in form %} +
+ {{ element.label(['class': 'control-label']) }} +
{{ element }}
+
+ {% endfor %} + +
+ {{ submit_button("Search", "class": "btn btn-primary") }} +
+ +
+ +This produces the following HTML: + +.. code-block:: html + +
+ +

Search products

+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+ +When the form is submitted, the action "search" is executed in the controller performing the search +based on the data entered by the user. + +Performing a Search +^^^^^^^^^^^^^^^^^^^ +The action "search" has a dual behavior. When accessed via POST, it performs a search based on the data sent from the +form. But when accessed via GET it moves the current page in the paginator. To differentiate one from another HTTP method, +we check it using the :doc:`Request ` component: + +.. code-block:: php + + request->isPost()) { + // Create the query conditions + } else { + // Paginate using the existing conditions + } + + // ... + } + +With the help of :doc:`Phalcon\\Mvc\\Model\\Criteria <../api/Phalcon_Mvc_Model_Criteria>`, we can create the search +conditions intelligently based on the data types and values sent from the form: + +.. code-block:: php + + di, "Products", $this->request->getPost()); + +This method verifies which values are different from "" (empty string) and null and takes them into account to create +the search criteria: + +* If the field data type is text or similar (char, varchar, text, etc.) It uses an SQL "like" operator to filter the results. +* If the data type is not text or similar, it'll use the operator "=". + +Additionally, "Criteria" ignores all the :code:`$_POST` variables that do not match any field in the table. +Values are automatically escaped using "bound parameters". + +Now, we store the produced parameters in the controller's session bag: + +.. code-block:: php + + persistent->searchParams = $query->getParams(); + +A session bag, is a special attribute in a controller that persists between requests using the session service. +When accessed, this attribute injects a :doc:`Phalcon\\Session\\Bag <../api/Phalcon_Session_Bag>` instance +that is independent in each controller. + +Then, based on the built params we perform the query: + +.. code-block:: php + + flash->notice("The search did not found any products"); + return $this->forward("products/index"); + } + +If the search doesn't return any product, we forward the user to the index action again. Let's pretend the +search returned results, then we create a paginator to navigate easily through them: + +.. code-block:: php + + $products, // Data to paginate + "limit" => 5, // Rows per page + "page" => $numberPage // Active page + ) + ); + + // Get active page in the paginator + $page = $paginator->getPaginate(); + +Finally we pass the returned page to view: + +.. code-block:: php + + view->page = $page; + +In the view (app/views/products/search.volt), we traverse the results corresponding to the current page, +showing every row in the current page to the user: + +.. code-block:: html+jinja + + {% for product in page.items %} + {% if loop.first %} + + + + + + + + + + + + {% endif %} + + + + + + + + + + {% if loop.last %} + + + + + + +
IdProduct TypeNamePriceActive
{{ product.id }}{{ product.getProductTypes().name }}{{ product.name }}{{ "%.2f"|format(product.price) }}{{ product.getActiveDetail() }}{{ link_to("products/edit/" ~ product.id, 'Edit') }}{{ link_to("products/delete/" ~ product.id, 'Delete') }}
+
+ {{ link_to("products/search", 'First') }} + {{ link_to("products/search?page=" ~ page.before, 'Previous') }} + {{ link_to("products/search?page=" ~ page.next, 'Next') }} + {{ link_to("products/search?page=" ~ page.last, 'Last') }} + {{ page.current }} of {{ page.total_pages }} +
+
+ {% endif %} + {% else %} + No products are recorded + {% endfor %} + +There are many things in the above example that worth detailing. First of all, active items +in the current page are traversed using a Volt's 'for'. Volt provides a simpler syntax for a PHP 'foreach'. + +.. code-block:: html+jinja + + {% for product in page.items %} + +Which in PHP is the same as: + +.. code-block:: php + + items as $product) { ?> + +The whole 'for' block provides the following: + +.. code-block:: html+jinja + + {% for product in page.items %} + {% if loop.first %} + Executed before the first product in the loop + {% endif %} + Executed for every product of page.items + {% if loop.last %} + Executed after the last product is loop + {% endif %} + {% else %} + Executed if page.items does not have any products + {% endfor %} + +Now you can go back to the view and find out what every block is doing. Every field +in "product" is printed accordingly: + +.. code-block:: html+jinja + + + {{ product.id }} + {{ product.productTypes.name }} + {{ product.name }} + {{ "%.2f"|format(product.price) }} + {{ product.getActiveDetail() }} + {{ link_to("products/edit/" ~ product.id, 'Edit') }} + {{ link_to("products/delete/" ~ product.id, 'Delete') }} + + +As we seen before using product.id is the same as in PHP as doing: :code:`$product->id`, +we made the same with product.name and so on. Other fields are rendered differently, +for instance, let's focus in product.productTypes.name. To understand this part, +we have to check the model Products (app/models/Products.php): + +.. code-block:: php + + belongsTo( + 'product_types_id', + 'ProductTypes', + 'id', + array( + 'reusable' => true + ) + ); + } + + // ... + } + +A model, can have a method called "initialize", this method is called once per request and it serves +the ORM to initialize a model. In this case, "Products" is initialized by defining that this model +has a one-to-many relationship to another model called "ProductTypes". + +.. code-block:: php + + belongsTo( + 'product_types_id', + 'ProductTypes', + 'id', + array( + 'reusable' => true + ) + ); + +Which means, the local attribute "product_types_id" in "Products" has an one-to-many relation to +the model "ProductTypes" in its attribute "id". By defining this relation we can access the name of +the product type by using: + +.. code-block:: html+jinja + + {{ product.productTypes.name }} + +The field "price" is printed by its formatted using a Volt filter: + +.. code-block:: html+jinja + + {{ "%.2f"|format(product.price) }} + +What in PHP would be: + +.. code-block:: php + + price) ?> + +Printing whether the product is active or not uses a helper implemented in the model: + +.. code-block:: php + + {{ product.getActiveDetail() }} + +This method is defined in the model. + +Creating and Updating Records +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Now let's see how the CRUD creates and updates records. From the "new" and "edit" views the data entered by the user +are sent to the actions "create" and "save" that perform actions of "creating" and "updating" products respectively. + +In the creation case, we recover the data submitted and assign them to a new "products" instance: + +.. code-block:: php + + request->isPost()) { + return $this->forward("products/index"); + } + + $form = new ProductsForm; + $product = new Products(); + + $product->id = $this->request->getPost("id", "int"); + $product->product_types_id = $this->request->getPost("product_types_id", "int"); + $product->name = $this->request->getPost("name", "striptags"); + $product->price = $this->request->getPost("price", "double"); + $product->active = $this->request->getPost("active"); + + // ... + } + +Remember the filters we defined in the Products form? Data is filtered before being assigned to the object :code:`$product`. +This filtering is optional, also the ORM escapes the input data and performs additional casting according to the column types: + +.. code-block:: php + + setLabel("Name"); + + // Filters for name + $name->setFilters(array('striptags', 'string')); + + // Validators for name + $name->addValidators( + array( + new PresenceOf( + array( + 'message' => 'Name is required' + ) + ) + ) + ); + + $this->add($name); + +When saving we'll know whether the data conforms to the business rules and validations implemented +in the form ProductsForm (app/forms/ProductsForm.php): + +.. code-block:: php + + request->getPost(); + if (!$form->isValid($data, $product)) { + foreach ($form->getMessages() as $message) { + $this->flash->error($message); + } + return $this->forward('products/new'); + } + +Finally, if the form does not return any validation message we can save the product instance: + +.. code-block:: php + + save() == false) { + foreach ($product->getMessages() as $message) { + $this->flash->error($message); + } + + return $this->forward('products/new'); + } + + $form->clear(); + + $this->flash->success("Product was created successfully"); + return $this->forward("products/index"); + +Now, in the case of product updating, first we must present to the user the data that is currently in the edited record: + +.. code-block:: php + + request->isPost()) { + + $product = Products::findFirstById($id); + if (!$product) { + $this->flash->error("Product was not found"); + + return $this->forward("products/index"); + } + + $this->view->form = new ProductsForm($product, array('edit' => true)); + } + } + +The data found is bound to the form passing the model as first parameter. Thanks to this, +the user can change any value and then sent it back to the database through to the "save" action: + +.. code-block:: php + + request->isPost()) { + return $this->forward("products/index"); + } + + $id = $this->request->getPost("id", "int"); + + $product = Products::findFirstById($id); + if (!$product) { + $this->flash->error("Product does not exist"); + + return $this->forward("products/index"); + } + + $form = new ProductsForm; + + $data = $this->request->getPost(); + if (!$form->isValid($data, $product)) { + foreach ($form->getMessages() as $message) { + $this->flash->error($message); + } + + return $this->forward('products/new'); + } + + if ($product->save() == false) { + foreach ($product->getMessages() as $message) { + $this->flash->error($message); + } + + return $this->forward('products/new'); + } + + $form->clear(); + + $this->flash->success("Product was updated successfully"); + return $this->forward("products/index"); + } + +We have seen how Phalcon lets you create forms and bind data from a database in a structured way. +In next chapter, we will see how to add custom HTML elements like a menu. + +.. _CRUD: http://en.wikipedia.org/wiki/Create,_read,_update_and_delete diff --git a/id/reference/tutorial-invo-4.rst b/id/reference/tutorial-invo-4.rst new file mode 100644 index 000000000000..6eb94b15ee96 --- /dev/null +++ b/id/reference/tutorial-invo-4.rst @@ -0,0 +1,132 @@ +Tutorial 5: Customizing INVO +============================ + +To finish the detailed explanation of INVO we are going to explain how to customize INVO adding UI elements +and changing the title according to the controller executed. + +User Components +--------------- +All the UI elements and visual style of the application has been achieved mostly through `Bootstrap`_. +Some elements, such as the navigation bar changes according to the state of the application. For example, in the +upper right corner, the link "Log in / Sign Up" changes to "Log out" if a user is logged into the application. + +This part of the application is implemented in the component "Elements" (app/library/Elements.php). + +.. code-block:: php + + `. It is not imposed to extend a component with this class, but +it helps to get access more quickly to the application services. Now, we are going to register +our first user component in the services container: + +.. code-block:: php + + set('elements', function () { + return new Elements(); + }); + +As controllers, plugins or components within a view, this component also has access to the services registered +in the container and by just accessing an attribute with the same name as a previously registered service: + +.. code-block:: html+jinja + + + +
+ {{ content() }} +
+
+

© Company 2015

+
+
+ +The important part is: + +.. code-block:: html+php + + {{ elements.getMenu() }} + +Changing the Title Dynamically +------------------------------ +When you browse between one option and another will see that the title changes dynamically indicating where +we are currently working. This is achieved in each controller initializer: + +.. code-block:: php + + tag->setTitle('Manage your product types'); + parent::initialize(); + } + + // ... + } + +Note, that the method :code:`parent::initialize()` is also called, it adds more data to the title: + +.. code-block:: php + + tag->prependTitle('INVO | '); + } + + // ... + } + +Finally, the title is printed in the main view (app/views/index.volt): + +.. code-block:: html+php + + + + + tag->getTitle(); ?> + + + + +.. _Bootstrap: http://getbootstrap.com/ diff --git a/id/reference/tutorial-invo.rst b/id/reference/tutorial-invo.rst new file mode 100644 index 000000000000..23014f19027d --- /dev/null +++ b/id/reference/tutorial-invo.rst @@ -0,0 +1,258 @@ +Tutorial 2: Introducing INVO +============================ + +In this second tutorial, we'll explain a more complete application in order to deepen the development with Phalcon. +INVO is one of the applications we have created as samples. INVO is a small website that allows their users to +generate invoices, and do other tasks such as manage their customers and products. You can clone its code from Github_. + +Also, INVO was made with `Bootstrap`_ as client-side framework. Although the application does not generate +invoices, it still serves as an example to understand how the framework works. + +Project Structure +----------------- +Once you clone the project in your document root you'll see the following structure: + +.. code-block:: bash + + invo/ + app/ + config/ + controllers/ + forms/ + library/ + logs/ + models/ + plugins/ + views/ + cache/ + volt/ + docs/ + public/ + css/ + fonts/ + js/ + schemas/ + +As you know, Phalcon does not impose a particular file structure for application development. This project +provides a simple MVC structure and a public document root. + +Once you open the application in your browser http://localhost/invo you'll see something like this: + +.. figure:: ../_static/img/invo-1.png + :align: center + +The application is divided into two parts, a frontend, that is a public part where visitors can receive information +about INVO and request contact information. The second part is the backend, an administrative area where a +registered user can manage his/her products and customers. + +Routing +------- +INVO uses the standard route that is built-in with the :doc:`Router ` component. These routes match the following +pattern: /:controller/:action/:params. This means that the first part of a URI is the controller, the second the +action and the rest are the parameters. + +The following route `/session/register` executes the controller SessionController and its action registerAction. + +Configuration +------------- +INVO has a configuration file that sets general parameters in the application. This file is located at +app/config/config.ini and it's loaded in the very first lines of the application bootstrap (public/index.php): + +.. code-block:: php + + ` allows us to manipulate the file in an object-oriented way. +In this example, we're using a ini file as configuration, however, there are more adapters supported +for configuration files. The configuration file contains the following settings: + +.. code-block:: ini + + [database] + host = localhost + username = root + password = secret + name = invo + + [application] + controllersDir = app/controllers/ + modelsDir = app/models/ + viewsDir = app/views/ + pluginsDir = app/plugins/ + formsDir = app/forms/ + libraryDir = app/library/ + baseUri = /invo/ + +Phalcon hasn't any pre-defined convention settings. Sections help us to organize the options as appropriate. +In this file there are two sections to be used later "application" and "database". + +Autoloaders +----------- +The second part that appears in the bootstrap file (public/index.php) is the autoloader: + +.. code-block:: php + + registerDirs( + array( + APP_PATH . $config->application->controllersDir, + APP_PATH . $config->application->pluginsDir, + APP_PATH . $config->application->libraryDir, + APP_PATH . $config->application->modelsDir, + APP_PATH . $config->application->formsDir, + ) + )->register(); + +Note that the above code has registered the directories that were defined in the configuration file. The only +directory that is not registered is the viewsDir, because it contains HTML + PHP files but no classes. +Also, note that we have using a constant called APP_PATH, this constant is defined in the bootstrap +(public/index.php) to allow us have a reference to the root of our project: + +.. code-block:: php + + set('url', function () use ($config) { + $url = new UrlProvider(); + + $url->setBaseUri($config->application->baseUri); + + return $url; + }); + +We will discuss this file in depth later. + +Handling the Request +-------------------- +If we skip to the end of the file (public/index.php), the request is finally handled by :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` +which initializes and executes all that is necessary to make the application run: + +.. code-block:: php + + handle(); + + $response->send(); + +Dependency Injection +-------------------- +Look at the first line of the code block above, the Application class constructor is receiving the variable +:code:`$di` as an argument. What is the purpose of that variable? Phalcon is a highly decoupled framework, +so we need a component that acts as glue to make everything work together. That component is :doc:`Phalcon\\Di <../api/Phalcon_Di>`. +It is a service container that also performs dependency injection and service location, +instantiating all components as they are needed by the application. + +There are many ways of registering services in the container. In INVO, most services have been registered using +anonymous functions/closures. Thanks to this, the objects are instantiated in a lazy way, reducing the resources needed +by the application. + +For instance, in the following excerpt the session service is registered. The anonymous function will only be +called when the application requires access to the session data: + +.. code-block:: php + + set('session', function () { + $session = new Session(); + + $session->start(); + + return $session; + }); + +Here, we have the freedom to change the adapter, perform additional initialization and much more. Note that the service +was registered using the name "session". This is a convention that will allow the framework to identify the active +service in the services container. + +A request can use many services and registering each service individually can be a cumbersome task. For that reason, +the framework provides a variant of :doc:`Phalcon\\Di <../api/Phalcon_Di>` called :doc:`Phalcon\\Di\\FactoryDefault <../api/Phalcon_Di_FactoryDefault>` whose task is to register +all services providing a full-stack framework. + +.. code-block:: php + + ` to meet our goal. + +The following file structure is more than enough: + +.. code-block:: php + + my-rest-api/ + models/ + Robots.php + index.php + .htaccess + +First, we need an .htaccess file that contains all the rules to rewrite the URIs to the index.php file, +that is our application: + +.. code-block:: apacheconf + + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + + +Then, in the index.php file we create the following: + +.. code-block:: php + + handle(); + +Now we will create the routes as we defined above: + +.. code-block:: php + + get('/api/robots', function () { + + }); + + // Searches for robots with $name in their name + $app->get('/api/robots/search/{name}', function ($name) { + + }); + + // Retrieves robots based on primary key + $app->get('/api/robots/{id:[0-9]+}', function ($id) { + + }); + + // Adds a new robot + $app->post('/api/robots', function () { + + }); + + // Updates robots based on primary key + $app->put('/api/robots/{id:[0-9]+}', function () { + + }); + + // Deletes robots based on primary key + $app->delete('/api/robots/{id:[0-9]+}', function () { + + }); + + $app->handle(); + +Each route is defined with a method with the same name as the HTTP method, as first parameter we pass a route pattern, +followed by a handler. In this case, the handler is an anonymous function. The following route: :code:`'/api/robots/{id:[0-9]+}'`, +by example, explicitly sets that the "id" parameter must have a numeric format. + +When a defined route matches the requested URI then the application executes the corresponding handler. + +Creating a Model +---------------- +Our API provides information about 'robots', these data are stored in a database. The following model allows us to +access that table in an object-oriented way. We have implemented some business rules using built-in validators +and simple validations. Doing this will give us the peace of mind that saved data meet the requirements of our +application: + +.. code-block:: php + + validate( + new InclusionIn( + array( + "field" => "type", + "domain" => array( + "droid", + "mechanical", + "virtual" + ) + ) + ) + ); + + // Robot name must be unique + $this->validate( + new Uniqueness( + array( + "field" => "name", + "message" => "The robot name must be unique" + ) + ) + ); + + // Year cannot be less than zero + if ($this->year < 0) { + $this->appendMessage(new Message("The year cannot be less than zero")); + } + + // Check if any messages have been produced + if ($this->validationHasFailed() == true) { + return false; + } + } + } + +Now, we must set up a connection to be used by this model and load it within our app: + +.. code-block:: php + + registerDirs( + array( + __DIR__ . '/models/' + ) + )->register(); + + $di = new FactoryDefault(); + + // Set up the database service + $di->set('db', function () { + return new PdoMysql( + array( + "host" => "localhost", + "username" => "asimov", + "password" => "zeroth", + "dbname" => "robotics" + ) + ); + }); + + // Create and bind the DI to the application + $app = new Micro($di); + +Retrieving Data +--------------- +The first "handler" that we will implement is which by method GET returns all available robots. Let's use PHQL to +perform this simple query returning the results as JSON: + +.. code-block:: php + + get('/api/robots', function () use ($app) { + + $phql = "SELECT * FROM Robots ORDER BY name"; + $robots = $app->modelsManager->executeQuery($phql); + + $data = array(); + foreach ($robots as $robot) { + $data[] = array( + 'id' => $robot->id, + 'name' => $robot->name + ); + } + + echo json_encode($data); + }); + +:doc:`PHQL `, allow us to write queries using a high-level, object-oriented SQL dialect that internally +translates to the right SQL statements depending on the database system we are using. The clause "use" in the +anonymous function allows us to pass some variables from the global to local scope easily. + +The searching by name handler would look like: + +.. code-block:: php + + get('/api/robots/search/{name}', function ($name) use ($app) { + + $phql = "SELECT * FROM Robots WHERE name LIKE :name: ORDER BY name"; + $robots = $app->modelsManager->executeQuery( + $phql, + array( + 'name' => '%' . $name . '%' + ) + ); + + $data = array(); + foreach ($robots as $robot) { + $data[] = array( + 'id' => $robot->id, + 'name' => $robot->name + ); + } + + echo json_encode($data); + }); + +Searching by the field "id" it's quite similar, in this case, we're also notifying if the robot was found or not: + +.. code-block:: php + + get('/api/robots/{id:[0-9]+}', function ($id) use ($app) { + + $phql = "SELECT * FROM Robots WHERE id = :id:"; + $robot = $app->modelsManager->executeQuery($phql, array( + 'id' => $id + ))->getFirst(); + + // Create a response + $response = new Response(); + + if ($robot == false) { + $response->setJsonContent( + array( + 'status' => 'NOT-FOUND' + ) + ); + } else { + $response->setJsonContent( + array( + 'status' => 'FOUND', + 'data' => array( + 'id' => $robot->id, + 'name' => $robot->name + ) + ) + ); + } + + return $response; + }); + +Inserting Data +-------------- +Taking the data as a JSON string inserted in the body of the request, we also use PHQL for insertion: + +.. code-block:: php + + post('/api/robots', function () use ($app) { + + $robot = $app->request->getJsonRawBody(); + + $phql = "INSERT INTO Robots (name, type, year) VALUES (:name:, :type:, :year:)"; + + $status = $app->modelsManager->executeQuery($phql, array( + 'name' => $robot->name, + 'type' => $robot->type, + 'year' => $robot->year + )); + + // Create a response + $response = new Response(); + + // Check if the insertion was successful + if ($status->success() == true) { + + // Change the HTTP status + $response->setStatusCode(201, "Created"); + + $robot->id = $status->getModel()->id; + + $response->setJsonContent( + array( + 'status' => 'OK', + 'data' => $robot + ) + ); + + } else { + + // Change the HTTP status + $response->setStatusCode(409, "Conflict"); + + // Send errors to the client + $errors = array(); + foreach ($status->getMessages() as $message) { + $errors[] = $message->getMessage(); + } + + $response->setJsonContent( + array( + 'status' => 'ERROR', + 'messages' => $errors + ) + ); + } + + return $response; + }); + +Updating Data +------------- +The data update is similar to insertion. The "id" passed as parameter indicates what robot must be updated: + +.. code-block:: php + + put('/api/robots/{id:[0-9]+}', function ($id) use ($app) { + + $robot = $app->request->getJsonRawBody(); + + $phql = "UPDATE Robots SET name = :name:, type = :type:, year = :year: WHERE id = :id:"; + $status = $app->modelsManager->executeQuery($phql, array( + 'id' => $id, + 'name' => $robot->name, + 'type' => $robot->type, + 'year' => $robot->year + )); + + // Create a response + $response = new Response(); + + // Check if the insertion was successful + if ($status->success() == true) { + $response->setJsonContent( + array( + 'status' => 'OK' + ) + ); + } else { + + // Change the HTTP status + $response->setStatusCode(409, "Conflict"); + + $errors = array(); + foreach ($status->getMessages() as $message) { + $errors[] = $message->getMessage(); + } + + $response->setJsonContent( + array( + 'status' => 'ERROR', + 'messages' => $errors + ) + ); + } + + return $response; + }); + +Deleting Data +------------- +The data delete is similar to update. The "id" passed as parameter indicates what robot must be deleted: + +.. code-block:: php + + delete('/api/robots/{id:[0-9]+}', function ($id) use ($app) { + + $phql = "DELETE FROM Robots WHERE id = :id:"; + $status = $app->modelsManager->executeQuery($phql, array( + 'id' => $id + )); + + // Create a response + $response = new Response(); + + if ($status->success() == true) { + $response->setJsonContent( + array( + 'status' => 'OK' + ) + ); + } else { + + // Change the HTTP status + $response->setStatusCode(409, "Conflict"); + + $errors = array(); + foreach ($status->getMessages() as $message) { + $errors[] = $message->getMessage(); + } + + $response->setJsonContent( + array( + 'status' => 'ERROR', + 'messages' => $errors + ) + ); + } + + return $response; + }); + +Testing our Application +----------------------- +Using curl_ we'll test every route in our application verifying its proper operation. + +Obtain all the robots: + +.. code-block:: bash + + curl -i -X GET http://localhost/my-rest-api/api/robots + + HTTP/1.1 200 OK + Date: Tue, 21 Jul 2015 07:05:13 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 117 + Content-Type: text/html; charset=UTF-8 + + [{"id":"1","name":"Robotina"},{"id":"2","name":"Astro Boy"},{"id":"3","name":"Terminator"}] + +Search a robot by its name: + +.. code-block:: bash + + curl -i -X GET http://localhost/my-rest-api/api/robots/search/Astro + + HTTP/1.1 200 OK + Date: Tue, 21 Jul 2015 07:09:23 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 31 + Content-Type: text/html; charset=UTF-8 + + [{"id":"2","name":"Astro Boy"}] + +Obtain a robot by its id: + +.. code-block:: bash + + curl -i -X GET http://localhost/my-rest-api/api/robots/3 + + HTTP/1.1 200 OK + Date: Tue, 21 Jul 2015 07:12:18 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 56 + Content-Type: text/html; charset=UTF-8 + + {"status":"FOUND","data":{"id":"3","name":"Terminator"}} + +Insert a new robot: + +.. code-block:: bash + + curl -i -X POST -d '{"name":"C-3PO","type":"droid","year":1977}' + http://localhost/my-rest-api/api/robots + + HTTP/1.1 201 Created + Date: Tue, 21 Jul 2015 07:15:09 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 75 + Content-Type: text/html; charset=UTF-8 + + {"status":"OK","data":{"name":"C-3PO","type":"droid","year":1977,"id":"4"}} + +Try to insert a new robot with the name of an existing robot: + +.. code-block:: bash + + curl -i -X POST -d '{"name":"C-3PO","type":"droid","year":1977}' + http://localhost/my-rest-api/api/robots + + HTTP/1.1 409 Conflict + Date: Tue, 21 Jul 2015 07:18:28 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 63 + Content-Type: text/html; charset=UTF-8 + + {"status":"ERROR","messages":["The robot name must be unique"]} + +Or update a robot with an unknown type: + +.. code-block:: bash + + curl -i -X PUT -d '{"name":"ASIMO","type":"humanoid","year":2000}' + http://localhost/my-rest-api/api/robots/4 + + HTTP/1.1 409 Conflict + Date: Tue, 21 Jul 2015 08:48:01 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 104 + Content-Type: text/html; charset=UTF-8 + + {"status":"ERROR","messages":["Value of field 'type' must be part of + list: droid, mechanical, virtual"]} + +Finally, delete a robot: + +.. code-block:: bash + + curl -i -X DELETE http://localhost/my-rest-api/api/robots/4 + + HTTP/1.1 200 OK + Date: Tue, 21 Jul 2015 08:49:29 GMT + Server: Apache/2.2.22 (Unix) DAV/2 + Content-Length: 15 + Content-Type: text/html; charset=UTF-8 + + {"status":"OK"} + +Conclusion +---------- +As we have seen, develop a RESTful API with Phalcon is easy. Later in the documentation we'll explain in detail how to +use micro applications and the :doc:`PHQL ` language. + +.. _curl: http://en.wikipedia.org/wiki/CURL +.. _RESTful: http://en.wikipedia.org/wiki/Representational_state_transfer diff --git a/id/reference/tutorial-vokuro.rst b/id/reference/tutorial-vokuro.rst new file mode 100644 index 000000000000..37e592911794 --- /dev/null +++ b/id/reference/tutorial-vokuro.rst @@ -0,0 +1,189 @@ +Tutorial 6: Vökuró +================== +Vökuró is another sample application you can use to learn more about Phalcon. +Vökuró is a small website that shows how to implement a security features and +management of users and permissions. You can clone its code from Github_. + +Project Structure +----------------- +Once you clone the project in your document root you'll see the following structure: + +.. code-block:: bash + + vokuro/ + app/ + cache/ + config/ + controllers/ + forms/ + library/ + models/ + views/ + public/ + css/ + img/ + schemas/ + +This project follows a quite similar structure to INVO. Once you open the application in your +browser http://localhost/vokuro you'll see something like this: + +.. figure:: ../_static/img/vokuro-1.png + :align: center + +The application is divided into two parts, a frontend, where visitors can sign up the service +and a backend where administrative users can manage registered users. Both frontend and backend +are combined in a single module. + +Load Classes and Dependencies +----------------------------- +This project uses :doc:`Phalcon\\Loader <../api/Phalcon_Loader>` to load controllers, models, forms, etc. within the project and composer_ +to load the project's dependencies. So, the first thing you have to do before execute Vökuró is +install its dependencies via composer_. Assuming you have it correctly installed, type the +following command in the console: + +.. code-block:: bash + + cd vokuro + composer install + +Vökuró sends emails to confirm the sign up of registered users using Swift, +the composer.json looks like: + +.. code-block:: json + + { + "require" : { + "php" : ">=5.4.0", + "ext-phalcon" : ">=2.0.0", + "swiftmailer/swiftmailer" : "5.0.*", + "amazonwebservices/aws-sdk-for-php" : "~1.0" + } + } + +Now, there is a file called app/config/loader.php where all the auto-loading stuff is set up. At the end of +this file you can see that the composer autoloader is included enabling the application to autoload +any of the classes in the downloaded dependencies: + +.. code-block:: php + + registerNamespaces( + array( + 'Vokuro\Models' => $config->application->modelsDir, + 'Vokuro\Controllers' => $config->application->controllersDir, + 'Vokuro\Forms' => $config->application->formsDir, + 'Vokuro' => $config->application->libraryDir + ) + ); + + $loader->register(); + + // ... + +Instead of using registerDirectories, we use registerNamespaces. Every namespace points to a directory +defined in the configuration file (app/config/config.php). For instance the namespace Vokuro\\Controllers +points to app/controllers so all the classes required by the application within this namespace +requires it in its definition: + +.. code-block:: php + + view->form = $form; + } + } + +This action simply pass a form instance of SignUpForm to the view, which itself is rendered to +allow the user enter the login details: + +.. code-block:: html+jinja + + {{ form('class': 'form-search') }} + +

Sign Up

+ +

{{ form.label('name') }}

+

+ {{ form.render('name') }} + {{ form.messages('name') }} +

+ +

{{ form.label('email') }}

+

+ {{ form.render('email') }} + {{ form.messages('email') }} +

+ +

{{ form.label('password') }}

+

+ {{ form.render('password') }} + {{ form.messages('password') }} +

+ +

{{ form.label('confirmPassword') }}

+

+ {{ form.render('confirmPassword') }} + {{ form.messages('confirmPassword') }} +

+ +

+ {{ form.render('terms') }} {{ form.label('terms') }} + {{ form.messages('terms') }} +

+ +

{{ form.render('Sign Up') }}

+ + {{ form.render('csrf', ['value': security.getToken()]) }} + {{ form.messages('csrf') }} + +
+ + + +.. _Github: https://github.com/phalcon/vokuro +.. _composer: https://getcomposer.org/ diff --git a/id/reference/tutorial.rst b/id/reference/tutorial.rst new file mode 100755 index 000000000000..758992791213 --- /dev/null +++ b/id/reference/tutorial.rst @@ -0,0 +1,557 @@ +Tutorial 1: Let's learn by example +================================== +Throughout this first tutorial, we'll walk you through the creation of an application with a simple registration +form from the ground up. We will also explain the basic aspects of the framework's behavior. If you are interested +in automatic code generation tools for Phalcon, you can check our :doc:`developer tools `. + +Checking your installation +-------------------------- +We'll assume you have Phalcon installed already. Check your phpinfo() output for a section referencing "Phalcon" +or execute the code snippet below: + +.. code-block:: php + + + +The Phalcon extension should appear as part of the output: + +.. code-block:: php + + Array + ( + [0] => Core + [1] => libxml + [2] => filter + [3] => SPL + [4] => standard + [5] => phalcon + [6] => pdo_mysql + ) + +Creating a project +------------------ +The best way to use this guide is to follow each step in turn. You can get the complete code +`here `_. + +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. + +For the purposes of this tutorial and as a starting point, we suggest this very simple structure: + +.. code-block:: php + + tutorial/ + app/ + controllers/ + models/ + views/ + public/ + css/ + img/ + js/ + +Note that you don't need any "library" directory related to Phalcon. The framework is available in memory, +ready for you to use. + +Beautiful URLs +^^^^^^^^^^^^^^ +We'll use pretty (friendly) URLs for this tutorial. Friendly URLs are better for SEO as well as being easy for users to remember. Phalcon supports rewrite modules provided by the most popular web servers. Making your application's URLs friendly is not a requirement and you can just as easily develop without them. + +In this example we'll use the rewrite module for Apache. Let's create a couple of rewrite rules in the /tutorial/.htaccess file: + +.. code-block:: apacheconf + + #/tutorial/.htaccess + + RewriteEngine on + RewriteRule ^$ public/ [L] + RewriteRule ((?s).*) public/$1 [L] + + +All requests to the project will be rewritten to the public/ directory making it the document root. This step ensures that the internal project folders remain hidden from public viewing and thus eliminates security threats of this kind. + +The second set of rules will check if the requested file exists and, if it does, it doesn't have to be rewritten by the web server module: + +.. code-block:: apacheconf + + #/tutorial/public/.htaccess + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] + + +Bootstrap +^^^^^^^^^ +The first file you need to create is the bootstrap file. This file is very important; since it serves +as the base of your application, giving you control of all aspects of it. In this file you can implement +initialization of components as well as application behavior. + +The tutorial/public/index.php file should look like: + +.. code-block:: php + + registerDirs(array( + '../app/controllers/', + '../app/models/' + ))->register(); + + // Create a DI + $di = new FactoryDefault(); + + // Setup the view component + $di->set('view', function () { + $view = new View(); + $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 UrlProvider(); + $url->setBaseUri('/tutorial/'); + return $url; + }); + + $application = new Application($di); + + // Handle the request + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo "Exception: ", $e->getMessage(); + } + +Autoloaders +^^^^^^^^^^^ +The first part that we find in the bootstrap is registering an autoloader. This will be used to load classes as controllers and models in the application. For example we may register one or more directories of controllers increasing the flexibility of the application. In our example we have used the component :doc:`Phalcon\\Loader <../api/Phalcon_Loader>`. + +With it, we can load classes using various strategies but for this example we have chosen to locate classes based on predefined directories: + +.. code-block:: php + + registerDirs( + array( + '../app/controllers/', + '../app/models/' + ) + )->register(); + +Dependency Management +^^^^^^^^^^^^^^^^^^^^^ +A very important concept that must be understood when working with Phalcon is its :doc:`dependency injection container `. It may sound complex but is actually very simple and practical. + +A service container is a bag where we globally store the services that our application will use to function. Each time the framework requires a component, it will ask the container using an agreed upon name for the service. Since Phalcon is a highly decoupled framework, :doc:`Phalcon\\Di <../api/Phalcon_Di>` acts as glue facilitating the integration of the different components achieving their work together in a transparent manner. + +.. code-block:: php + + ` is a variant of :doc:`Phalcon\\Di <../api/Phalcon_Di>`. To make things easier, +it has registered most of the components that come with Phalcon. Thus we should not register them one by one. +Later there will be no problem in replacing a factory service. + +In the next part, we register the "view" service indicating the directory where the framework will find the views files. +As the views do not correspond to classes, they cannot be charged with an autoloader. + +Services can be registered in several ways, but for our tutorial we'll use an `anonymous function`_: + +.. code-block:: php + + set('view', function () { + $view = new View(); + $view->setViewsDir('../app/views/'); + return $view; + }); + +Next we register a base URI so that all URIs generated by Phalcon include the "tutorial" folder we setup earlier. +This will become important later on in this tutorial when we use the class :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` +to generate a hyperlink. + +.. code-block:: php + + set('url', function () { + $url = new UrlProvider(); + $url->setBaseUri('/tutorial/'); + return $url; + }); + +In the last part of this file, we find :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>`. Its purpose +is to initialize the request environment, route the incoming request, and then dispatch any discovered actions; +it aggregates any responses and returns them when the process is complete. + +.. code-block:: php + + handle(); + + $response->send(); + +As you can see, the bootstrap file is very short and we do not need to include any additional files. We have set +ourselves a flexible MVC application in less than 30 lines of code. + +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: + +.. code-block:: php + + Hello!"; + } + } + +The controller classes must have the suffix "Controller" and controller actions must have the suffix "Action". If you access the application from your browser, you should see something like this: + +.. figure:: ../_static/img/tutorial-1.png + :align: center + +Congratulations, you're flying with Phalcon! + +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): + +.. code-block:: php + + Hello!"; + +Our controller (app/controllers/IndexController.php) now has an empty action definition: + +.. code-block:: php + + ` static component is automatically created when the action execution has ended. Learn more about :doc:`views usage here `. + +Designing a sign up form +^^^^^^^^^^^^^^^^^^^^^^^^ +Now we will change the index.phtml view file, to add a link to a new controller named "signup". The goal is to allow users to sign up within our application. + +.. code-block:: php + + Hello!"; + + echo $this->tag->linkTo("signup", "Sign Up Here!"); + +The generated HTML code displays an anchor ("a") HTML tag linking to a new controller: + +.. code-block:: html + +

Hello!

Sign Up Here! + +To generate the tag we use the class :doc:`Phalcon\\Tag <../api/Phalcon_Tag>`. This is a utility class that allows +us to build HTML tags with framework conventions in mind. As this class is a also a service registered in the DI +we use :code:`$this->tag` to access it. + +A more detailed article regarding HTML generation can be :doc:`found here `. + +.. figure:: ../_static/img/tutorial-2.png + :align: center + +Here is the Signup controller (app/controllers/SignupController.php): + +.. code-block:: php + + Sign up using this form + + tag->form("signup/register"); ?> + +

+ + tag->textField("name") ?> +

+ +

+ + tag->textField("email") ?> +

+ +

+ tag->submitButton("Register") ?> +

+ + + +Viewing the form in your browser will show something like this: + +.. figure:: ../_static/img/tutorial-3.png + :align: center + +:doc:`Phalcon\\Tag <../api/Phalcon_Tag>` also provides useful methods to build form elements. + +The :code:`Phalcon\Tag::form()` method receives only one parameter for instance, a relative URI to a controller/action in +the application. + +By clicking the "Send" button, you will notice an exception thrown from the framework, indicating that we are missing the "register" action in the controller "signup". Our public/index.php file throws this exception: + + Exception: Action "register" was not found on handler "signup" + +Implementing that method will remove the exception: + +.. code-block:: php + + registerDirs(array( + '../app/controllers/', + '../app/models/' + ))->register(); + + // Create a DI + $di = new FactoryDefault(); + + // Setup the database service + $di->set('db', function () { + return new DbAdapter(array( + "host" => "localhost", + "username" => "root", + "password" => "secret", + "dbname" => "test_db" + )); + }); + + // Setup the view component + $di->set('view', function () { + $view = new View(); + $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 UrlProvider(); + $url->setBaseUri('/tutorial/'); + return $url; + }); + + $application = new Application($di); + + // Handle the request + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo "Exception: ", $e->getMessage(); + } + +With the correct database parameters, our models are ready to work and interact with the rest of the application. + +Storing data using models +^^^^^^^^^^^^^^^^^^^^^^^^^ +Receiving data from the form and storing them in the table is the next step. + +.. code-block:: php + + save($this->request->getPost(), array('name', 'email')); + + if ($success) { + echo "Thanks for registering!"; + } else { + echo "Sorry, the following problems were generated: "; + foreach ($user->getMessages() as $message) { + echo $message->getMessage(), "
"; + } + } + + $this->view->disable(); + } + } + +We then instantiate the Users class, which corresponds to a User record. The class public properties map to the fields +of the record in the users table. Setting the relevant values in the new record and calling save() will store the data in the database for that record. The save() method returns a boolean value which indicates whether the storing of the data was successful or not. + +The ORM automatically escapes the input preventing SQL injections so we only need to pass the request to the save method. + +Additional validation happens automatically on fields that are defined as not null (required). If we don't enter any of the required fields in the sign up form our screen will look like this: + +.. figure:: ../_static/img/tutorial-4.png + :align: center + +Conclusion +---------- +This is a very simple tutorial and as you can see, it's easy to start building an application using Phalcon. +The fact that Phalcon is an extension on your web server has not interfered with the ease of development or +features available. We invite you to continue reading the manual so that you can discover additional features offered by Phalcon! + +.. _anonymous function: http://php.net/manual/en/functions.anonymous.php diff --git a/id/reference/unit-testing.rst b/id/reference/unit-testing.rst new file mode 100644 index 000000000000..118e8375a2b2 --- /dev/null +++ b/id/reference/unit-testing.rst @@ -0,0 +1,246 @@ +Unit testing +============ + +Writing proper tests can assist in writing better software. If you set up proper test cases you can eliminate most functional bugs and better maintain your software. + +Integrating PHPunit with phalcon +-------------------------------- +If you don't already have phpunit installed, you can do it by using the following composer command: + +.. code-block:: bash + + composer require phpunit/phpunit + + +or by manually adding it to composer.json: + +.. code-block:: json + + { + "require-dev": { + "phpunit/phpunit": "~4.5" + } + } + +Once phpunit is installed create a directory called 'tests' in your root directory: + +.. code-block:: bash + + app/ + public/ + tests/ + +Next, we need a 'helper' file to bootstrap the application for unit testing. + +The PHPunit helper file +----------------------- +A helper file is required to bootstrap the application for running the tests. We have prepared a sample file. Put the file in your tests/ directory as TestHelper.php. + +.. code-block:: php + + registerDirs( + array( + ROOT_PATH + ) + ); + + $loader->register(); + + $di = new FactoryDefault(); + Di::reset(); + + // Add any needed services to the DI here + + Di::setDefault($di); + +Should you need to test any components from your own library, add them to the autoloader or use the autoloader from your main application. + +To help you build the unit tests, we made a few abstract classes you can use to bootstrap the unit tests themselves. +These files exist in the Phalcon incubator @ https://github.com/phalcon/incubator. + +You can use the incubator library by adding it as a dependency: + +.. code-block:: bash + + composer require phalcon/incubator + + +or by manually adding it to composer.json: + +.. code-block:: json + + { + "require": { + "phalcon/incubator": "dev-master" + } + } + +You can also clone the repository using the repo link above. + +PHPunit.xml file +---------------- +Now, create a phpunit file: + +.. code-block:: xml + + + + + ./ + + + +Modify the phpunit.xml to fit your needs and save it in tests/. + +This will run any tests under the tests/ directory. + +Sample unit test +---------------- +To run any unit tests you need to define them. The autoloader will make sure the proper files are loaded so all you need to do is create the files and phpunit will run the tests for you. + +This example does not contain a config file, most test cases however, do need one. You can add it to the DI to get the UnitTestCase file. + +First create a base unit test called UnitTestCase.php in your /tests directory: + +.. code-block:: php + + setDi($di); + + $this->_loaded = true; + } + + /** + * Check if the test case is setup properly + * + * @throws \PHPUnit_Framework_IncompleteTestError; + */ + public function __destruct() + { + if (!$this->_loaded) { + throw new \PHPUnit_Framework_IncompleteTestError('Please run parent::setUp().'); + } + } + } + +It's always a good idea to separate your Unit tests in namespaces. For this test we will create the namespace 'Test'. So create a file called \tests\Test\UnitTest.php: + +.. code-block:: php + + assertEquals('works', + 'works', + 'This is OK' + ); + + $this->assertEquals('works', + 'works1', + 'This will fail' + ); + } + } + +Now when you execute 'phpunit' in your command-line from the \tests directory you will get the following output: + +.. code-block:: bash + + $ phpunit + PHPUnit 3.7.23 by Sebastian Bergmann. + + Configuration read from /private/var/www/tests/phpunit.xml + + Time: 3 ms, Memory: 3.25Mb + + There was 1 failure: + + 1) Test\UnitTest::testTestCase + This will fail + Failed asserting that two strings are equal. + --- Expected + +++ Actual + @@ @@ + -'works' + +'works1' + + /private/var/www/tests/Test/UnitTest.php:25 + + FAILURES! + Tests: 1, Assertions: 2, Failures: 1. + +Now you can start building your unit tests. You can view a good guide here (we also recommend reading the PHPunit documentation if you're not familiar with PHPunit): + +http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/ diff --git a/id/reference/url.rst b/id/reference/url.rst new file mode 100644 index 000000000000..08a2b663c848 --- /dev/null +++ b/id/reference/url.rst @@ -0,0 +1,194 @@ +Generating URLs and Paths +========================= + +:doc:`Phalcon\\Mvc\\Url <../api/Phalcon_Mvc_Url>` is the component responsible of generate URLs in a Phalcon application. It's +capable of produce independent URLs based on routes. + +Setting a base URI +------------------ +Depending of which directory of your document root your application is installed, it may have a base URI or not. + +For example, if your document root is /var/www/htdocs and your application is installed in /var/www/htdocs/invo then your +baseUri will be /invo/. If you are using a VirtualHost or your application is installed on the document root, then your baseUri is /. +Execute the following code to know the base URI detected by Phalcon: + +.. code-block:: php + + getBaseUri(); + +By default, Phalcon automatically may detect your baseUri, but if you want to increase the performance of your application +is recommended setting up it manually: + +.. code-block:: php + + setBaseUri('/invo/'); + + // Setting a full domain as base URI + $url->setBaseUri('//my.domain.com/'); + + // Setting a full domain as base URI + $url->setBaseUri('http://my.domain.com/my-app/'); + +Usually, this component must be registered in the Dependency Injector container, so you can set up it there: + +.. code-block:: php + + set('url', function () { + $url = new Url(); + $url->setBaseUri('/invo/'); + return $url; + }); + +Generating URIs +--------------- +If you are using the :doc:`Router ` with its default behavior. Your application is able to match routes based on the +following pattern: /:controller/:action/:params. Accordingly it is easy to create routes that satisfy that pattern (or any other +pattern defined in the router) passing a string to the method "get": + +.. code-block:: php + + get("products/save"); ?> + +Note that isn't necessary to prepend the base URI. If you have named routes you can easily change it creating it dynamically. +For Example if you have the following route: + +.. code-block:: php + + add( + "/blog/{year}/{month}/{title}", + array( + 'controller' => 'posts', + 'action' => 'show' + ) + )->setName('show-post'); + +A URL can be generated in the following way: + +.. code-block:: php + + get( + array( + 'for' => 'show-post', + 'year' => 2015, + 'month' => '01', + 'title' => 'some-blog-post' + ) + ); + +Producing URLs without mod_rewrite +---------------------------------- +You can use this component also to create URLs without mod_rewrite: + +.. code-block:: php + + setBaseUri('/invo/index.php?_url=/'); + + // This produce: /invo/index.php?_url=/products/save + echo $url->get("products/save"); + +You can also use :code:`$_SERVER["REQUEST_URI"]`: + +.. code-block:: php + + setBaseUri('/invo/index.php?_url=/'); + + // Pass the URI using $_SERVER["REQUEST_URI"] + $url->setBaseUri('/invo/index.php/'); + +In this case, it's necessary to manually handle the required URI in the Router: + +.. code-block:: php + + handle($uri); + +The produced routes would look like: + +.. code-block:: php + + get("products/save"); + +Producing URLs from Volt +------------------------ +The function "url" is available in volt to generate URLs using this component: + +.. code-block:: html+jinja + + Edit + +Generate static routes: + +.. code-block:: html+jinja + + + +Static vs. Dynamic URIs +----------------------- +This component allow you to set up a different base URI for static resources in the application: + +.. code-block:: php + + setBaseUri('/'); + + // Static resources go through a CDN + $url->setStaticBaseUri('http://static.mywebsite.com/'); + +:doc:`Phalcon\\Tag ` will request both dynamical and static URIs using this component. + +Implementing your own URL Generator +----------------------------------- +The :doc:`Phalcon\\Mvc\\UrlInterface <../api/Phalcon_Mvc_UrlInterface>` interface must be implemented to create your own URL +generator replacing the one provided by Phalcon. diff --git a/id/reference/validation.rst b/id/reference/validation.rst new file mode 100644 index 000000000000..fe342bb27617 --- /dev/null +++ b/id/reference/validation.rst @@ -0,0 +1,430 @@ +Validation +========== + +:doc:`Phalcon\\Validation <../api/Phalcon_Validation>` is an independent validation component that validates an arbitrary set of data. +This component can be used to implement validation rules on data objects that do not belong to a model or collection. + +The following example shows its basic usage: + +.. code-block:: php + + add( + 'name', + new PresenceOf( + array( + 'message' => 'The name is required' + ) + ) + ); + + $validation->add( + 'email', + new PresenceOf( + array( + 'message' => 'The e-mail is required' + ) + ) + ); + + $validation->add( + 'email', + new Email( + array( + 'message' => 'The e-mail is not valid' + ) + ) + ); + + $messages = $validation->validate($_POST); + if (count($messages)) { + foreach ($messages as $message) { + echo $message, '
'; + } + } + +The loosely-coupled design of this component allows you to create your own validators along with the ones provided by the framework. + +Initializing Validation +----------------------- +Validation chains can be initialized in a direct manner by just adding validators to the :doc:`Phalcon\\Validation <../api/Phalcon_Validation>` object. +You can put your validations in a separate file for better re-use code and organization: + +.. code-block:: php + + add( + 'name', + new PresenceOf( + array( + 'message' => 'The name is required' + ) + ) + ); + + $this->add( + 'email', + new PresenceOf( + array( + 'message' => 'The e-mail is required' + ) + ) + ); + + $this->add( + 'email', + new Email( + array( + 'message' => 'The e-mail is not valid' + ) + ) + ); + } + } + +Then initialize and use your own validator: + +.. code-block:: php + + validate($_POST); + if (count($messages)) { + foreach ($messages as $message) { + echo $message, '
'; + } + } + +Validators +---------- +Phalcon exposes a set of built-in validators for this component: + ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Name | Explanation | Example | ++==============+==================================================================================================================================================================+===================================================================+ +| PresenceOf | Validates that a field's value is not null or empty string. | :doc:`Example <../api/Phalcon_Validation_Validator_PresenceOf>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Identical | Validates that a field's value is the same as a specified value | :doc:`Example <../api/Phalcon_Validation_Validator_Identical>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Email | Validates that field contains a valid email format | :doc:`Example <../api/Phalcon_Validation_Validator_Email>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| ExclusionIn | Validates that a value is not within a list of possible values | :doc:`Example <../api/Phalcon_Validation_Validator_ExclusionIn>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| InclusionIn | Validates that a value is within a list of possible values | :doc:`Example <../api/Phalcon_Validation_Validator_InclusionIn>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Regex | Validates that the value of a field matches a regular expression | :doc:`Example <../api/Phalcon_Validation_Validator_Regex>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| StringLength | Validates the length of a string | :doc:`Example <../api/Phalcon_Validation_Validator_StringLength>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Between | Validates that a value is between two values | :doc:`Example <../api/Phalcon_Validation_Validator_Between>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Confirmation | Validates that a value is the same as another present in the data | :doc:`Example <../api/Phalcon_Validation_Validator_Confirmation>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| Url | Validates that field contains a valid URL | :doc:`Example <../api/Phalcon_Validation_Validator_Url>` | ++--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ +| CreditCard | Validates a credit card number | :doc:`Example <../api/Phalcon_Validation_Validator_CreditCard>` | ++--------------+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+ + +The following example explains how to create additional validators for this component: + +.. code-block:: php + + getValue($attribute); + + if (!filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) { + + $message = $this->getOption('message'); + if (!$message) { + $message = 'The IP is not valid'; + } + + $validator->appendMessage(new Message($message, $attribute, 'Ip')); + + return false; + } + + return true; + } + } + +It is important that validators return a valid boolean value indicating if the validation was successful or not. + +Validation Messages +------------------- +:doc:`Phalcon\\Validation <../api/Phalcon_Validation>` has a messaging subsystem that provides a flexible way to output or store the +validation messages generated during the validation processes. + +Each message consists of an instance of the class :doc:`Phalcon\\Validation\\Message <../api/Phalcon_Mvc_Model_Message>`. The set of +messages generated can be retrieved with the getMessages() method. Each message provides extended information like the attribute that +generated the message or the message type: + +.. code-block:: php + + validate(); + if (count($messages)) { + foreach ($validation->getMessages() as $message) { + echo "Message: ", $message->getMessage(), "\n"; + echo "Field: ", $message->getField(), "\n"; + echo "Type: ", $message->getType(), "\n"; + } + } + +The getMessages() method can be overridden in a validation class to replace/translate the default messages generated by the validators: + +.. code-block:: php + + getType()) { + case 'PresenceOf': + $messages[] = 'The field ' . $message->getField() . ' is mandatory'; + break; + } + } + + return $messages; + } + } + +Or you can pass a 'message' parameter to change the default message in each validator: + +.. code-block:: php + + add( + 'email', + new Email( + array( + 'message' => 'The e-mail is not valid' + ) + ) + ); + +By default, 'getMessages' returns all the messages generated during validation. You can filter messages +for a specific field using the 'filter' method: + +.. code-block:: php + + validate(); + if (count($messages)) { + // Filter only the messages generated for the field 'name' + foreach ($validation->getMessages()->filter('name') as $message) { + echo $message; + } + } + +Filtering of Data +----------------- +Data can be filtered prior to the validation ensuring that malicious or incorrect data is not validated. + +.. code-block:: php + + add('name', new PresenceOf(array( + 'message' => 'The name is required' + ))) + ->add('email', new PresenceOf(array( + 'message' => 'The email is required' + ))); + + // Filter any extra space + $validation->setFilters('name', 'trim'); + $validation->setFilters('email', 'trim'); + +Filtering and sanitizing is performed using the :doc:`filter `: component. You can add more filters to this +component or use the built-in ones. + +Validation Events +----------------- +When validations are organized in classes, you can implement the 'beforeValidation' and 'afterValidation' methods to perform additional checks, filters, clean-up, etc. If the 'beforeValidation' method returns false the validation is automatically +cancelled: + +.. code-block:: php + + request->getHttpHost() != 'admin.mydomain.com') { + $messages->appendMessage(new Message('Only users can log on in the administration domain')); + + return false; + } + + return true; + } + + /** + * Executed after validation + * + * @param array $data + * @param object $entity + * @param Phalcon\Validation\Message\Group $messages + */ + public function afterValidation($data, $entity, $messages) + { + // ... Add additional messages or perform more validations + } + } + +Cancelling Validations +---------------------- +By default all validators assigned to a field are tested regardless if one of them have failed or not. You can change +this behavior by telling the validation component which validator may stop the validation: + +.. code-block:: php + + add('telephone', new PresenceOf(array( + 'message' => 'The telephone is required', + 'cancelOnFail' => true + ))) + ->add('telephone', new Regex(array( + 'message' => 'The telephone is required', + 'pattern' => '/\+44 [0-9]+/' + ))) + ->add('telephone', new StringLength(array( + 'messageMinimum' => 'The telephone is too short', + 'min' => 2 + ))); + +The first validator has the option 'cancelOnFail' with a value of true, therefore if that validator fails the remaining +validators in the chain are not executed. + +If you are creating custom validators you can dynamically stop the validation chain by setting the 'cancelOnFail' option: + +.. code-block:: php + + setOption('cancelOnFail', true); + } + + // ... + } + } + +Avoid validate empty values +--------------------------- +You can pass the option 'allowEmpty' to all the built-in validators to avoid the validation to be performed if an empty value is passed: + +.. code-block:: php + + add('telephone', new Regex(array( + 'message' => 'The telephone is required', + 'pattern' => '/\+44 [0-9]+/', + 'allowEmpty' => true + ))); diff --git a/id/reference/views.rst b/id/reference/views.rst new file mode 100644 index 000000000000..90898d1eacc8 --- /dev/null +++ b/id/reference/views.rst @@ -0,0 +1,1109 @@ +Using Views +=========== + +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. + +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` and :doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` +are responsible for the managing the view layer of your MVC application. + +Integrating Views with Controllers +---------------------------------- +Phalcon automatically passes the execution to the view component as soon as a particular controller has completed its cycle. The view component +will look in the views folder for a folder named as the same name of the last controller executed and then for a file named as the last action +executed. For instance, if a request is made to the URL *http://127.0.0.1/blog/posts/show/301*, Phalcon will parse the URL as follows: + ++-------------------+-----------+ +| Server Address | 127.0.0.1 | ++-------------------+-----------+ +| Phalcon Directory | blog | ++-------------------+-----------+ +| Controller | posts | ++-------------------+-----------+ +| Action | show | ++-------------------+-----------+ +| Parameter | 301 | ++-------------------+-----------+ + +The dispatcher will look for a "PostsController" and its action "showAction". A simple controller file for this example: + +.. code-block:: php + + view->postId = $postId; + } + } + +The setVar allows us to create view variables on demand so that they can be used in the view template. The example above demonstrates +how to pass the :code:`$postId` parameter to the respective view template. + +Hierarchical Rendering +---------------------- +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` supports a hierarchy of files and is the default component for view rendering in Phalcon. +This hierarchy allows for common layout points (commonly used views), as well as controller named folders defining respective view templates. + +This component uses by default PHP itself as the template engine, therefore views should have the .phtml extension. +If the views directory is *app/views* then view component will find automatically for these 3 view files. + ++-------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Name | File | Description | ++===================+===============================+==========================================================================================================================================================================================================================+ +| Action View | app/views/posts/show.phtml | This is the view related to the action. It only will be shown when the "show" action was executed. | ++-------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Controller Layout | app/views/layouts/posts.phtml | This is the view related to the controller. It only will be shown for every action executed within the controller "posts". All the code implemented in the layout will be reused for all the actions in this controller. | ++-------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Main Layout | app/views/index.phtml | This is main action it will be shown for every controller or action executed within the application. | ++-------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +You are not required to implement all of the files mentioned above. :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` will simply move to the +next view level in the hierarchy of files. If all three view files are implemented, they will be processed as follows: + +.. code-block:: html+php + + + +

This is show view!

+ +

I have received the parameter

+ +.. code-block:: html+php + + + +

This is the "posts" controller layout!

+ + getContent(); ?> + +.. code-block:: html+php + + + + + Example + + + +

This is main layout!

+ + getContent(); ?> + + + + +Note the lines where the method :code:`$this->getContent()` was called. This method instructs :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` +on where to inject the contents of the previous view executed in the hierarchy. For the example above, the output will be: + +.. figure:: ../_static/img/views-1.png + :align: center + +The generated HTML by the request will be: + +.. code-block:: html+php + + + + + Example + + + +

This is main layout!

+ + + +

This is the "posts" controller layout!

+ + + +

This is show view!

+ +

I have received the parameter 101

+ + + + +Using Templates +^^^^^^^^^^^^^^^ +Templates are views that can be used to share common view code. They act as controller layouts, so you need to place them in the layouts directory. + +Templates can be rendered before the layout (using :code:`$this->view->setTemplateBefore()`) or they can be rendered after the layout (using :code:`this->view->setTemplateAfter()`). In the following example the template (layouts/common.phtml) is rendered after the main layout (layouts/posts.phtml): + +.. code-block:: php + + view->setTemplateAfter('common'); + } + + public function lastAction() + { + $this->flash->notice("These are the latest posts"); + } + } + +.. code-block:: html+php + + + + + + Blog's title + + + getContent(); ?> + + + +.. code-block:: html+php + + + + + +
getContent(); ?>
+ +.. code-block:: html+php + + + +

Blog Title

+ + getContent(); ?> + +.. code-block:: html+php + + + +
+

This is a title

+

This is the post content

+
+ +
+

This is another title

+

This is another post content

+
+ +The final output will be the following: + +.. code-block:: html+php + + + + + + Blog's title + + + + + + + +
+ + + +

Blog Title

+ + + +
+

This is a title

+

This is the post content

+
+ +
+

This is another title

+

This is another post content

+
+ +
+ + + + +If we had used :code:`$this->view->setTemplateBefore('common')`, this would be the final output: + +.. code-block:: html+php + + + + + + Blog's title + + + + + +

Blog Title

+ + + + + +
+ + + +
+

This is a title

+

This is the post content

+
+ +
+

This is another title

+

This is another post content

+
+ +
+ + + + +Control Rendering Levels +^^^^^^^^^^^^^^^^^^^^^^^^ +As seen above, :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` supports a view hierarchy. You might need to control the level of rendering +produced by the view component. The method :code:`Phalcon\Mvc\View::setRenderLevel()` offers this functionality. + +This method can be invoked from the controller or from a superior view layer to interfere with the rendering process. + +.. code-block:: php + + view->setRenderLevel(View::LEVEL_NO_RENDER); + + // ... + } + + public function showAction($postId) + { + // Shows only the view related to the action + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + } + } + +The available render levels are: + ++-----------------------+--------------------------------------------------------------------------+-------+ +| Class Constant | Description | Order | ++=======================+==========================================================================+=======+ +| LEVEL_NO_RENDER | Indicates to avoid generating any kind of presentation. | | ++-----------------------+--------------------------------------------------------------------------+-------+ +| LEVEL_ACTION_VIEW | Generates the presentation to the view associated to the action. | 1 | ++-----------------------+--------------------------------------------------------------------------+-------+ +| LEVEL_BEFORE_TEMPLATE | Generates presentation templates prior to the controller layout. | 2 | ++-----------------------+--------------------------------------------------------------------------+-------+ +| LEVEL_LAYOUT | Generates the presentation to the controller layout. | 3 | ++-----------------------+--------------------------------------------------------------------------+-------+ +| LEVEL_AFTER_TEMPLATE | Generates the presentation to the templates after the controller layout. | 4 | ++-----------------------+--------------------------------------------------------------------------+-------+ +| LEVEL_MAIN_LAYOUT | Generates the presentation to the main layout. File views/index.phtml | 5 | ++-----------------------+--------------------------------------------------------------------------+-------+ + +Disabling render levels +^^^^^^^^^^^^^^^^^^^^^^^ +You can permanently or temporarily disable render levels. A level could be permanently disabled if it isn't used at all in the whole application: + +.. code-block:: php + + set('view', function () { + + $view = new View(); + + // Disable several levels + $view->disableLevel( + array( + View::LEVEL_LAYOUT => true, + View::LEVEL_MAIN_LAYOUT => true + ) + ); + + return $view; + }, true); + +Or disable temporarily in some part of the application: + +.. code-block:: php + + view->disableLevel(View::LEVEL_MAIN_LAYOUT); + } + } + +Picking Views +^^^^^^^^^^^^^ +As mentioned above, when :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` is managed by :doc:`Phalcon\\Mvc\\Application <../api/Phalcon_Mvc_Application>` +the view rendered is the one related with the last controller and action executed. You could override this by using the :code:`Phalcon\Mvc\View::pick()` method: + +.. code-block:: php + + view->pick("products/search"); + + // Pick "views-dir/books/list" as view to render + $this->view->pick(array('books')); + + // Pick "views-dir/products/search" as view to render + $this->view->pick(array(1 => 'search')); + } + } + +Disabling the view +^^^^^^^^^^^^^^^^^^ +If your controller doesn't produce any output in the view (or not even have one) you may disable the view component avoiding unnecessary processing: + +.. code-block:: php + + response->redirect('index/index'); + + // Disable the view to avoid rendering + $this->view->disable(); + } + } + +You can return a 'response' object to avoid disable the view manually: + +.. code-block:: php + + response->redirect('index/index'); + } + } + +Simple Rendering +---------------- +:doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` is an alternative component to :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>`. +It keeps most of the philosophy of :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` but lacks of a hierarchy of files which is, in fact, +the main feature of its counterpart. + +This component allows the developer to have control of when a view is rendered and its location. +In addition, this component can leverage of view inheritance available in template engines such +as :doc:`Volt ` and others. + +The default component must be replaced in the service container: + +.. code-block:: php + + set('view', function () { + + $view = new SimpleView(); + + $view->setViewsDir('../app/views/'); + + return $view; + }, true); + +Automatic rendering must be disabled in :doc:`Phalcon\\Mvc\\Application ` (if needed): + +.. code-block:: php + + useImplicitView(false); + + $response = $application->handle(); + + $response->send(); + + } catch (\Exception $e) { + echo $e->getMessage(); + } + +To render a view it's necessary to call the render method explicitly indicating the relative path to the view you want to display: + +.. code-block:: php + + view->render('index'); + + // Render 'views-dir/posts/show.phtml' + echo $this->view->render('posts/show'); + + // Render 'views-dir/index.phtml' passing variables + echo $this->view->render('index', array('posts' => Posts::find())); + + // Render 'views-dir/posts/show.phtml' passing variables + echo $this->view->render('posts/show', array('posts' => Posts::find())); + } + } + +This is different to :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` who's :code:`render()` method uses controllers and actions as parameters: + +.. code-block:: php + + Posts::find()); + + // Phalcon\Mvc\View + $view = new \Phalcon\Mvc\View(); + echo $view->render('posts', 'show', $params); + + // Phalcon\Mvc\View\Simple + $simpleView = new \Phalcon\Mvc\View\Simple(); + echo $simpleView->render('posts/show', $params); + +Using Partials +-------------- +Partial templates are another way of breaking the rendering process into simpler more manageable chunks that can be reused by different +parts of the application. With a partial, you can move the code for rendering a particular piece of a response to its own file. + +One way to use partials is to treat them as the equivalent of subroutines: as a way to move details out of a view so that your code can be more easily understood. For example, you might have a view that looks like this: + +.. code-block:: html+php + +
partial("shared/ad_banner"); ?>
+ +
+

Robots

+ +

Check out our specials for robots:

+ ... +
+ + + +Method partial() does accept a second parameter as an array of variables/parameters that only will exists in the scope of the partial: + +.. code-block:: html+php + + partial("shared/ad_banner", array('id' => $site->id, 'size' => 'big')); ?> + +Transfer values from the controller to views +-------------------------------------------- +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` is available in each controller using the view variable (:code:`$this->view`). You can +use that object to set variables directly to the view from a controller action by using the :code:`setVar()` method. + +.. code-block:: php + + view->setVar( + "posts", + Posts::find() + ); + + // Using the magic setter + $this->view->posts = Posts::find(); + + // Passing more than one variable at the same time + $this->view->setVars( + array( + 'title' => $post->title, + 'content' => $post->content + ) + ); + } + } + +A variable with the name of the first parameter of setVar() will be created in the view, ready to be used. The variable can be of any type, +from a simple string, integer etc. variable to a more complex structure such as array, collection etc. + +.. code-block:: html+php + +
+ ", $post->title, ""; + } + + ?> +
+ +Using models in the view layer +------------------------------ +Application models are always available at the view layer. The :doc:`Phalcon\\Loader <../api/Phalcon_Loader>` will instantiate them at +runtime automatically: + +.. code-block:: html+php + +
+ ", $category->name, ""; + } + + ?> +
+ +Although you may perform model manipulation operations such as insert() or update() in the view layer, it is not recommended since it is not possible to forward the execution flow to another controller in the case of an error or an exception. + +Caching View Fragments +---------------------- +Sometimes when you develop dynamic websites and some areas of them are not updated very often, the output is exactly +the same between requests. :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` offers caching a part or the whole +rendered output to increase performance. + +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` integrates with :doc:`Phalcon\\Cache ` to provide an easier way +to cache output fragments. You could manually set the cache handler or set a global handler: + +.. code-block:: php + + view->cache(true); + } + + public function showArticleAction() + { + // Cache this view for 1 hour + $this->view->cache( + array( + "lifetime" => 3600 + ) + ); + } + + public function resumeAction() + { + // Cache this view for 1 day with the key "resume-cache" + $this->view->cache( + array( + "lifetime" => 86400, + "key" => "resume-cache" + ) + ); + } + + public function downloadAction() + { + // Passing a custom service + $this->view->cache( + array( + "service" => "myCache", + "lifetime" => 86400, + "key" => "resume-cache" + ) + ); + } + } + +When we do not define a key to the cache, the component automatically creates one using an MD5_ hash of the name of the controller and view currently being rendered in the format of "controller/view". +It is a good practice to define a key for each action so you can easily identify the cache associated with each view. + +When the View component needs to cache something it will request a cache service from the services container. +The service name convention for this service is "viewCache": + +.. code-block:: php + + set('viewCache', function () { + + // Cache data for one day by default + $frontCache = new OutputFrontend( + array( + "lifetime" => 86400 + ) + ); + + // Memcached connection settings + $cache = new MemcacheBackend( + $frontCache, + array( + "host" => "localhost", + "port" => "11211" + ) + ); + + return $cache; + }); + +.. highlights:: + The frontend must always be :doc:`Phalcon\\Cache\\Frontend\\Output <../api/Phalcon_Cache_Frontend_Output>` and the service 'viewCache' must be registered as + always open (not shared) in the services container (DI). + +When using views, caching can be used to prevent controllers from needing to generate view data on each request. + +To achieve this we must identify uniquely each cache with a key. First we verify that the cache does not exist or has +expired to make the calculations/queries to display data in the view: + +.. code-block:: html+php + + view->getCache()->exists('downloads')) { + + // Query the latest downloads + $latest = Downloads::find( + array( + 'order' => 'created_at DESC' + ) + ); + + $this->view->latest = $latest; + } + + // Enable the cache with the same key "downloads" + $this->view->cache( + array( + 'key' => 'downloads' + ) + ); + } + } + +The `PHP alternative site`_ is an example of implementing the caching of fragments. + +Template Engines +---------------- +Template Engines help designers to create views without the use of a complicated syntax. Phalcon includes a powerful and fast templating engine +called :doc:`Volt `. + +Additionally, :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` allows you to use other template engines instead of plain PHP or Volt. + +Using a different template engine, usually requires complex text parsing using external PHP libraries in order to generate the final output +for the user. This usually increases the number of resources that your application will use. + +If an external template engine is used, :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` provides exactly the same view hierarchy and it's +still possible to access the API inside these templates with a little more effort. + +This component uses adapters, these help Phalcon to speak with those external template engines in a unified way, let's see how to do that integration. + +Creating your own Template Engine Adapter +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +There are many template engines, which you might want to integrate or create one of your own. The first step to start using an external template engine is create an adapter for it. + +A template engine adapter is a class that acts as bridge between :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` and the template engine itself. +Usually it only needs two methods implemented: :code:`__construct()` and :code:`render()`. The first one receives the :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` +instance that creates the engine adapter and the DI container used by the application. + +The method :code:`render()` accepts an absolute path to the view file and the view parameters set using :code:`$this->view->setVar()`. You could read or require it +when it's necessary. + +.. code-block:: php + + _view; + + // Access options + $options = $this->_options; + + // Render the view + // ... + } + } + +Changing the Template Engine +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can replace or add more a template engine from the controller as follows: + +.. code-block:: php + + view->registerEngines( + array( + ".my-html" => "MyTemplateAdapter" + ) + ); + } + + public function showAction() + { + // Using more than one template engine + $this->view->registerEngines( + array( + ".my-html" => 'MyTemplateAdapter', + ".phtml" => 'Phalcon\Mvc\View\Engine\Php' + ) + ); + } + } + +You can replace the template engine completely or use more than one template engine at the same time. The method :code:`Phalcon\Mvc\View::registerEngines()` +accepts an array containing data that define the template engines. The key of each engine is an extension that aids in distinguishing one from another. +Template files related to the particular engine must have those extensions. + +The order that the template engines are defined with :code:`Phalcon\Mvc\View::registerEngines()` defines the relevance of execution. If +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` finds two views with the same name but different extensions, it will only render the first one. + +If you want to register a template engine or a set of them for each request in the application. You could register it when the view service is created: + +.. code-block:: php + + set('view', function () { + + $view = new View(); + + // A trailing directory separator is required + $view->setViewsDir('../app/views/'); + + $view->registerEngines( + array( + ".my-html" => 'MyTemplateAdapter' + ) + ); + + return $view; + }, true); + +There are adapters available for several template engines on the `Phalcon Incubator `_ + +Injecting services in View +-------------------------- +Every view executed is included inside a :doc:`Phalcon\\Di\\Injectable <../api/Phalcon_Di_Injectable>` instance, providing easy access +to the application's service container. + +The following example shows how to write a jQuery `ajax request`_ using a URL with the framework conventions. +The service "url" (usually :doc:`Phalcon\\Mvc\\Url `) is injected in the view by accessing a property with the same name: + +.. code-block:: html+php + + + +Stand-Alone Component +--------------------- +All the components in Phalcon can be used as *glue* components individually because they are loosely coupled to each other: + +Hierarchical Rendering +^^^^^^^^^^^^^^^^^^^^^^ +Using :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` in a stand-alone mode can be demonstrated below: + +.. code-block:: php + + setViewsDir("../app/views/"); + + // Passing variables to the views, these will be created as local variables + $view->setVar("someProducts", $products); + $view->setVar("someFeatureEnabled", true); + + // Start the output buffering + $view->start(); + + // Render all the view hierarchy related to the view products/list.phtml + $view->render("products", "list"); + + // Finish the output buffering + $view->finish(); + + echo $view->getContent(); + +A short syntax is also available: + +.. code-block:: php + + getRender('products', 'list', + array( + "someProducts" => $products, + "someFeatureEnabled" => true + ), + function ($view) { + // Set any extra options here + $view->setViewsDir("../app/views/"); + $view->setRenderLevel(View::LEVEL_LAYOUT); + } + ); + +Simple Rendering +^^^^^^^^^^^^^^^^ +Using :doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` in a stand-alone mode can be demonstrated below: + +.. code-block:: php + + setViewsDir("../app/views/"); + + // Render a view and return its contents as a string + echo $view->render("templates/welcomeMail"); + + // Render a view passing parameters + echo $view->render( + "templates/welcomeMail", + array( + 'email' => $email, + 'content' => $content + ) + ); + +View Events +----------- +:doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` and :doc:`Phalcon\\Mvc\\View\\Simple <../api/Phalcon_Mvc_View_Simple>` are able to send events to an :doc:`EventsManager ` if it is present. Events are triggered using the type "view". Some events when returning boolean false could stop the active operation. The following events are supported: + ++----------------------+------------------------------------------------------------+---------------------+ +| Event Name | Triggered | Can stop operation? | ++======================+============================================================+=====================+ +| beforeRender | Triggered before starting the render process | Yes | ++----------------------+------------------------------------------------------------+---------------------+ +| beforeRenderView | Triggered before rendering an existing view | Yes | ++----------------------+------------------------------------------------------------+---------------------+ +| afterRenderView | Triggered after rendering an existing view | No | ++----------------------+------------------------------------------------------------+---------------------+ +| afterRender | Triggered after completing the render process | No | ++----------------------+------------------------------------------------------------+---------------------+ +| notFoundView | Triggered when a view was not found | No | ++----------------------+------------------------------------------------------------+---------------------+ + +The following example demonstrates how to attach listeners to this component: + +.. code-block:: php + + set('view', function () { + + // Create an events manager + $eventsManager = new EventsManager(); + + // Attach a listener for type "view" + $eventsManager->attach("view", function ($event, $view) { + echo $event->getType(), ' - ', $view->getActiveRenderPath(), PHP_EOL; + }); + + $view = new View(); + $view->setViewsDir("../app/views/"); + + // Bind the eventsManager to the view component + $view->setEventsManager($eventsManager); + + return $view; + + }, true); + +The following example shows how to create a plugin that clean/repair the HTML produced by the render process using Tidy_: + +.. code-block:: php + + true, + 'output-xhtml' => true, + 'show-body-only' => true, + 'wrap' => 0 + ); + + $tidy = tidy_parse_string($view->getContent(), $tidyConfig, 'UTF8'); + $tidy->cleanRepair(); + + $view->setContent((string) $tidy); + } + } + + // Attach the plugin as a listener + $eventsManager->attach("view:afterRender", new TidyPlugin()); + +.. _this Github repository: https://github.com/bobthecow/mustache.php +.. _ajax request: http://api.jquery.com/jQuery.ajax/ +.. _Tidy: http://www.php.net/manual/en/book.tidy.php +.. _md5: http://php.net/manual/en/function.md5.php +.. _PHP alternative site: https://github.com/phalcon/php-site diff --git a/id/reference/volt.rst b/id/reference/volt.rst new file mode 100644 index 000000000000..31d934704f09 --- /dev/null +++ b/id/reference/volt.rst @@ -0,0 +1,1573 @@ +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. + +.. figure:: ../_static/img/volt.jpg + :align: center + +Volt is inspired by Jinja_, originally created by `Armin Ronacher`_. Therefore many developers will be in familiar +territory using the same syntax they have been using with similar template engines. Volt's syntax and features +have been enhanced with more elements and of course with the performance that developers have been +accustomed to while working with Phalcon. + +Introduction +------------ +Volt views are compiled to pure PHP code, so basically they save the effort of writing PHP code manually: + +.. code-block:: html+jinja + + {# 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 %} + +Activating Volt +--------------- +As with other templating engines, you may register Volt in the view component, using a new extension or +reusing the standard .phtml: + +.. code-block:: php + + set( + 'view', + function () { + + $view = new View(); + + $view->setViewsDir('../app/views/'); + + $view->registerEngines( + array( + ".volt" => 'Phalcon\Mvc\View\Engine\Volt' + ) + ); + + return $view; + } + ); + +Use the standard ".phtml" extension: + +.. code-block:: php + + registerEngines( + array( + ".phtml" => 'Phalcon\Mvc\View\Engine\Volt' + ) + ); + +Basic Usage +----------- +A view consists of Volt code, PHP and HTML. A set of special delimiters is available to enter into +Volt mode. :code:`{% ... %}` is used to execute statements such as for-loops or assign values and :code:`{{ ... }}`, +prints the result of an expression to the template. + +Below is a minimal template that illustrates a few basics: + +.. code-block:: html+jinja + + {# app/views/posts/show.phtml #} + + + + {{ title }} - An example blog + + + + {% if show_navigation %} + + {% endif %} + +

{{ post.title }}

+ +
+ {{ post.content }} +
+ + + + +Using :doc:`Phalcon\\Mvc\\View <../api/Phalcon_Mvc_View>` you can pass variables from the controller to the views. +In the above example, three variables were passed to the view: :code:`title`, :code:`menu` and :code:`post`: + +.. code-block:: php + + view->title = $post->title; + $this->view->post = $post; + $this->view->menu = $menu; + $this->view->show_navigation = true; + + // Or... + + $this->view->setVar("title", $post->title); + $this->view->setVar("post", $post); + $this->view->setVar("menu", $menu); + $this->view->setVar("show_navigation", true); + } + } + +Variables +--------- +Object variables may have attributes which can be accessed using the syntax: :code:`foo.bar`. +If you are passing arrays, you have to use the square bracket syntax: :code:`foo['bar']` + +.. code-block:: jinja + + {{ post.title }} {# for $post->title #} + {{ post['title'] }} {# for $post['title'] #} + +Filters +------- +Variables can be formatted or modified using filters. The pipe operator :code:`|` is used to apply filters to +variables: + +.. code-block:: jinja + + {{ post.title|e }} + {{ post.content|striptags }} + {{ name|capitalize|trim }} + +The following is the list of available built-in filters in Volt: + ++--------------------------+------------------------------------------------------------------------------+ +| Filter | Description | ++==========================+==============================================================================+ +| :code:`e` | Applies :code:`Phalcon\Escaper->escapeHtml()` to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`escape` | Applies :code:`Phalcon\Escaper->escapeHtml()` to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`escape_css` | Applies :code:`Phalcon\Escaper->escapeCss()` to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`escape_js` | Applies :code:`Phalcon\Escaper->escapeJs()` to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`escape_attr` | Applies :code:`Phalcon\Escaper->escapeHtmlAttr()` to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`trim` | Applies the trim_ PHP function to the value. Removing extra spaces | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`left_trim` | Applies the ltrim_ PHP function to the value. Removing extra spaces | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`right_trim` | Applies the rtrim_ PHP function to the value. Removing extra spaces | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`striptags` | Applies the striptags_ PHP function to the value. Removing HTML tags | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`slashes` | Applies the slashes_ PHP function to the value. Escaping values | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`stripslashes` | Applies the stripslashes_ PHP function to the value. Removing escaped quotes | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`capitalize` | Capitalizes a string by applying the ucwords_ PHP function to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`lower` | Change the case of a string to lowercase | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`upper` | Change the case of a string to uppercase | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`length` | Counts the string length or how many items are in an array or object | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`nl2br` | Changes newlines \\n by line breaks (
). Uses the PHP function nl2br_ | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`sort` | Sorts an array using the PHP function asort_ | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`keys` | Returns the array keys using array_keys_ | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`join` | Joins the array parts using a separator join_ | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`format` | Formats a string using sprintf_. | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`json_encode` | Converts a value into its JSON_ representation | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`json_decode` | Converts a value from its JSON_ representation to a PHP representation | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`abs` | Applies the abs_ PHP function to a value. | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`url_encode` | Applies the urlencode_ PHP function to the value | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`default` | Sets a default value in case that the evaluated expression is empty | +| | (is not set or evaluates to a falsy value) | ++--------------------------+------------------------------------------------------------------------------+ +| :code:`convert_encoding` | Converts a string from one charset to another | ++--------------------------+------------------------------------------------------------------------------+ + +Examples: + +.. code-block:: jinja + + {# e or escape filter #} + {{ "

Hello

"|e }} + {{ "

Hello

"|escape }} + + {# trim filter #} + {{ " hello "|trim }} + + {# striptags filter #} + {{ "

Hello

"|striptags }} + + {# slashes filter #} + {{ "'this is a string'"|slashes }} + + {# stripslashes filter #} + {{ "\'this is a string\'"|stripslashes }} + + {# capitalize filter #} + {{ "hello"|capitalize }} + + {# lower filter #} + {{ "HELLO"|lower }} + + {# upper filter #} + {{ "hello"|upper }} + + {# length filter #} + {{ "robots"|length }} + {{ [1, 2, 3]|length }} + + {# nl2br filter #} + {{ "some\ntext"|nl2br }} + + {# sort filter #} + {% set sorted = [3, 1, 2]|sort %} + + {# keys filter #} + {% set keys = ['first': 1, 'second': 2, 'third': 3]|keys %} + + {# join filter #} + {% set joined = "a".."z"|join(",") %} + + {# format filter #} + {{ "My real name is %s"|format(name) }} + + {# json_encode filter #} + {% set encoded = robots|json_encode %} + + {# json_decode filter #} + {% set decoded = '{"one":1,"two":2,"three":3}'|json_decode %} + + {# url_encode filter #} + {{ post.permanent_link|url_encode }} + + {# convert_encoding filter #} + {{ "désolé"|convert_encoding('utf8', 'latin1') }} + +Comments +-------- +Comments may also be added to a template using the :code:`{# ... #}` delimiters. All text inside them is just ignored in the final output: + +.. code-block:: jinja + + {# note: this is a comment + {% set price = 100; %} + #} + +List of Control Structures +-------------------------- +Volt provides a set of basic but powerful control structures for use in templates: + +For +^^^ +Loop over each item in a sequence. The following example shows how to traverse a set of "robots" and print his/her name: + +.. code-block:: html+jinja + +

Robots

+
    + {% for robot in robots %} +
  • + {{ robot.name|e }} +
  • + {% endfor %} +
+ +for-loops can also be nested: + +.. code-block:: html+jinja + +

Robots

+ {% for robot in robots %} + {% for part in robot.parts %} + Robot: {{ robot.name|e }} Part: {{ part.name|e }}
+ {% endfor %} + {% endfor %} + +You can get the element "keys" as in the PHP counterpart using the following syntax: + +.. code-block:: html+jinja + + {% set numbers = ['one': 1, 'two': 2, 'three': 3] %} + + {% for name, value in numbers %} + Name: {{ name }} Value: {{ value }} + {% endfor %} + +An "if" evaluation can be optionally set: + +.. code-block:: html+jinja + + {% set numbers = ['one': 1, 'two': 2, 'three': 3] %} + + {% for value in numbers if value < 2 %} + Value: {{ value }} + {% endfor %} + + {% for name, value in numbers if name != 'two' %} + Name: {{ name }} Value: {{ value }} + {% endfor %} + +If an 'else' is defined inside the 'for', it will be executed if the expression in the iterator result in zero iterations: + +.. code-block:: html+jinja + +

Robots

+ {% for robot in robots %} + Robot: {{ robot.name|e }} Part: {{ part.name|e }}
+ {% else %} + There are no robots to show + {% endfor %} + +Alternative syntax: + +.. code-block:: html+jinja + +

Robots

+ {% for robot in robots %} + Robot: {{ robot.name|e }} Part: {{ part.name|e }}
+ {% elsefor %} + There are no robots to show + {% endfor %} + +Loop Controls +^^^^^^^^^^^^^ +The 'break' and 'continue' statements can be used to exit from a loop or force an iteration in the current block: + +.. code-block:: html+jinja + + {# skip the even robots #} + {% for index, robot in robots %} + {% if index is even %} + {% continue %} + {% endif %} + ... + {% endfor %} + +.. code-block:: html+jinja + + {# exit the foreach on the first even robot #} + {% for index, robot in robots %} + {% if index is even %} + {% break %} + {% endif %} + ... + {% endfor %} + +If +^^ +As PHP, an "if" statement checks if an expression is evaluated as true or false: + +.. code-block:: html+jinja + +

Cyborg Robots

+
    + {% for robot in robots %} + {% if robot.type == "cyborg" %} +
  • {{ robot.name|e }}
  • + {% endif %} + {% endfor %} +
+ +The else clause is also supported: + +.. code-block:: html+jinja + +

Robots

+
    + {% for robot in robots %} + {% if robot.type == "cyborg" %} +
  • {{ robot.name|e }}
  • + {% else %} +
  • {{ robot.name|e }} (not a cyborg)
  • + {% endif %} + {% endfor %} +
+ +The 'elseif' control flow structure can be used together with if to emulate a 'switch' block: + +.. code-block:: html+jinja + + {% if robot.type == "cyborg" %} + Robot is a cyborg + {% elseif robot.type == "virtual" %} + Robot is virtual + {% elseif robot.type == "mechanical" %} + Robot is mechanical + {% endif %} + +Loop Context +^^^^^^^^^^^^ +A special variable is available inside 'for' loops providing you information about + ++------------------------+---------------------------------------------------------------+ +| Variable | Description | ++========================+===============================================================+ +| :code:`loop.index` | The current iteration of the loop. (1 indexed) | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.index0` | The current iteration of the loop. (0 indexed) | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.revindex` | The number of iterations from the end of the loop (1 indexed) | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.revindex0` | The number of iterations from the end of the loop (0 indexed) | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.first` | True if in the first iteration. | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.last` | True if in the last iteration. | ++------------------------+---------------------------------------------------------------+ +| :code:`loop.length` | The number of items to iterate | ++------------------------+---------------------------------------------------------------+ + +.. code-block:: html+jinja + + {% for robot in robots %} + {% if loop.first %} + + + + + + + {% endif %} + + + + + + {% if loop.last %} +
#IdName
{{ loop.index }}{{ robot.id }}{{ robot.name }}
+ {% endif %} + {% endfor %} + +Assignments +----------- +Variables may be changed in a template using the instruction "set": + +.. code-block:: html+jinja + + {% set fruits = ['Apple', 'Banana', 'Orange'] %} + {% set name = robot.name %} + +Multiple assignments are allowed in the same instruction: + +.. code-block:: html+jinja + + {% set fruits = ['Apple', 'Banana', 'Orange'], name = robot.name, active = true %} + +Additionally, you can use compound assignment operators: + +.. code-block:: html+jinja + + {% set price += 100.00 %} + {% set age *= 5 %} + +The following operators are available: + ++----------------------+------------------------------------------------------------------------------+ +| Operator | Description | ++======================+==============================================================================+ +| = | Standard Assignment | ++----------------------+------------------------------------------------------------------------------+ +| += | Addition assignment | ++----------------------+------------------------------------------------------------------------------+ +| -= | Subtraction assignment | ++----------------------+------------------------------------------------------------------------------+ +| \*= | Multiplication assignment | ++----------------------+------------------------------------------------------------------------------+ +| /= | Division assignment | ++----------------------+------------------------------------------------------------------------------+ + +Expressions +----------- +Volt provides a basic set of expression support, including literals and common operators. + +A expression can be evaluated and printed using the '{{' and '}}' delimiters: + +.. code-block:: html+jinja + + {{ (1 + 1) * 2 }} + +If an expression needs to be evaluated without be printed the 'do' statement can be used: + +.. code-block:: html+jinja + + {% do (1 + 1) * 2 %} + +Literals +^^^^^^^^ +The following literals are supported: + ++----------------------+------------------------------------------------------------------------------+ +| Filter | Description | ++======================+==============================================================================+ +| "this is a string" | Text between double quotes or single quotes are handled as strings | ++----------------------+------------------------------------------------------------------------------+ +| 100.25 | Numbers with a decimal part are handled as doubles/floats | ++----------------------+------------------------------------------------------------------------------+ +| 100 | Numbers without a decimal part are handled as integers | ++----------------------+------------------------------------------------------------------------------+ +| false | Constant "false" is the boolean false value | ++----------------------+------------------------------------------------------------------------------+ +| true | Constant "true" is the boolean true value | ++----------------------+------------------------------------------------------------------------------+ +| null | Constant "null" is the Null value | ++----------------------+------------------------------------------------------------------------------+ + +Arrays +^^^^^^ +Whether you're using PHP 5.3 or >= 5.4 you can create arrays by enclosing a list of values in square brackets: + +.. code-block:: html+jinja + + {# Simple array #} + {{ ['Apple', 'Banana', 'Orange'] }} + + {# Other simple array #} + {{ ['Apple', 1, 2.5, false, null] }} + + {# Multi-Dimensional array #} + {{ [[1, 2], [3, 4], [5, 6]] }} + + {# Hash-style array #} + {{ ['first': 1, 'second': 4/2, 'third': '3'] }} + +Curly braces also can be used to define arrays or hashes: + +.. code-block:: html+jinja + + {% set myArray = {'Apple', 'Banana', 'Orange'} %} + {% set myHash = {'first': 1, 'second': 4/2, 'third': '3'} %} + +Math +^^^^ +You may make calculations in templates using the following operators: + ++-----------+-------------------------------------------------------------------------------+ +| Operator | Description | ++===========+===============================================================================+ +| :code:`+` | Perform an adding operation. :code:`{{ 2 + 3 }}` returns 5 | ++-----------+-------------------------------------------------------------------------------+ +| :code:`-` | Perform a substraction operation :code:`{{ 2 - 3 }}` returns -1 | ++-----------+-------------------------------------------------------------------------------+ +| :code:`*` | Perform a multiplication operation :code:`{{ 2 * 3 }}` returns 6 | ++-----------+-------------------------------------------------------------------------------+ +| :code:`/` | Perform a division operation :code:`{{ 10 / 2 }}` returns 5 | ++-----------+-------------------------------------------------------------------------------+ +| :code:`%` | Calculate the remainder of an integer division :code:`{{ 10 % 3 }}` returns 1 | ++-----------+-------------------------------------------------------------------------------+ + +Comparisons +^^^^^^^^^^^ +The following comparison operators are available: + ++-------------+-------------------------------------------------------------------+ +| Operator | Description | ++=============+===================================================================+ +| :code:`==` | Check whether both operands are equal | ++-------------+-------------------------------------------------------------------+ +| :code:`!=` | Check whether both operands aren't equal | ++-------------+-------------------------------------------------------------------+ +| :code:`<>` | Check whether both operands aren't equal | ++-------------+-------------------------------------------------------------------+ +| :code:`>` | Check whether left operand is greater than right operand | ++-------------+-------------------------------------------------------------------+ +| :code:`<` | Check whether left operand is less than right operand | ++-------------+-------------------------------------------------------------------+ +| :code:`<=` | Check whether left operand is less or equal than right operand | ++-------------+-------------------------------------------------------------------+ +| :code:`>=` | Check whether left operand is greater or equal than right operand | ++-------------+-------------------------------------------------------------------+ +| :code:`===` | Check whether both operands are identical | ++-------------+-------------------------------------------------------------------+ +| :code:`!==` | Check whether both operands aren't identical | ++-------------+-------------------------------------------------------------------+ + +Logic +^^^^^ +Logic operators are useful in the "if" expression evaluation to combine multiple tests: + ++------------------+-------------------------------------------------------------------+ +| Operator | Description | ++==================+===================================================================+ +| :code:`or` | Return true if the left or right operand is evaluated as true | ++------------------+-------------------------------------------------------------------+ +| :code:`and` | Return true if both left and right operands are evaluated as true | ++------------------+-------------------------------------------------------------------+ +| :code:`not` | Negates an expression | ++------------------+-------------------------------------------------------------------+ +| :code:`( expr )` | Parenthesis groups expressions | ++------------------+-------------------------------------------------------------------+ + +Other Operators +^^^^^^^^^^^^^^^ +Additional operators seen the following operators are available: + ++-------------------------+---------------------------------------------------------------------------------------+ +| Operator | Description | ++=========================+=======================================================================================+ +| :code:`~` | Concatenates both operands :code:`{{ "hello " ~ "world" }}` | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`|` | Applies a filter in the right operand to the left :code:`{{ "hello"|uppercase }}` | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`..` | Creates a range :code:`{{ 'a'..'z' }}` :code:`{{ 1..10 }}` | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`is` | Same as == (equals), also performs tests | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`in` | To check if an expression is contained into other expressions :code:`if "a" in "abc"` | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`is not` | Same as != (not equals) | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`'a' ? 'b' : 'c'` | Ternary operator. The same as the PHP ternary operator | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`++` | Increments a value | ++-------------------------+---------------------------------------------------------------------------------------+ +| :code:`--` | Decrements a value | ++-------------------------+---------------------------------------------------------------------------------------+ + +The following example shows how to use operators: + +.. code-block:: html+jinja + + {% set robots = ['Voltron', 'Astro Boy', 'Terminator', 'C3PO'] %} + + {% for index in 0..robots|length %} + {% if robots[index] is defined %} + {{ "Name: " ~ robots[index] }} + {% endif %} + {% endfor %} + +Tests +----- +Tests can be used to test if a variable has a valid expected value. The operator "is" is used to perform the tests: + +.. code-block:: html+jinja + + {% set robots = ['1': 'Voltron', '2': 'Astro Boy', '3': 'Terminator', '4': 'C3PO'] %} + + {% for position, name in robots %} + {% if position is odd %} + {{ name }} + {% endif %} + {% endfor %} + +The following built-in tests are available in Volt: + ++---------------------+----------------------------------------------------------------------+ +| Test | Description | ++=====================+======================================================================+ +| :code:`defined` | Checks if a variable is defined (:code:`isset()`) | ++---------------------+----------------------------------------------------------------------+ +| :code:`empty` | Checks if a variable is empty | ++---------------------+----------------------------------------------------------------------+ +| :code:`even` | Checks if a numeric value is even | ++---------------------+----------------------------------------------------------------------+ +| :code:`odd` | Checks if a numeric value is odd | ++---------------------+----------------------------------------------------------------------+ +| :code:`numeric` | Checks if value is numeric | ++---------------------+----------------------------------------------------------------------+ +| :code:`scalar` | Checks if value is scalar (not an array or object) | ++---------------------+----------------------------------------------------------------------+ +| :code:`iterable` | Checks if a value is iterable. Can be traversed by a "for" statement | ++---------------------+----------------------------------------------------------------------+ +| :code:`divisibleby` | Checks if a value is divisible by other value | ++---------------------+----------------------------------------------------------------------+ +| :code:`sameas` | Checks if a value is identical to other value | ++---------------------+----------------------------------------------------------------------+ +| :code:`type` | Checks if a value is of the specified type | ++---------------------+----------------------------------------------------------------------+ + +More examples: + +.. code-block:: html+jinja + + {% if robot is defined %} + The robot variable is defined + {% endif %} + + {% if robot is empty %} + The robot is null or isn't defined + {% endif %} + + {% for key, name in [1: 'Voltron', 2: 'Astroy Boy', 3: 'Bender'] %} + {% if key is even %} + {{ name }} + {% endif %} + {% endfor %} + + {% for key, name in [1: 'Voltron', 2: 'Astroy Boy', 3: 'Bender'] %} + {% if key is odd %} + {{ name }} + {% endif %} + {% endfor %} + + {% for key, name in [1: 'Voltron', 2: 'Astroy Boy', 'third': 'Bender'] %} + {% if key is numeric %} + {{ name }} + {% endif %} + {% endfor %} + + {% set robots = [1: 'Voltron', 2: 'Astroy Boy'] %} + {% if robots is iterable %} + {% for robot in robots %} + ... + {% endfor %} + {% endif %} + + {% set world = "hello" %} + {% if world is sameas("hello") %} + {{ "it's hello" }} + {% endif %} + + {% set external = false %} + {% if external is type('boolean') %} + {{ "external is false or true" }} + {% endif %} + +Macros +------ +Macros can be used to reuse logic in a template, they act as PHP functions, can receive parameters and return values: + +.. code-block:: html+jinja + + {# Macro "display a list of links to related topics" #} + {%- macro related_bar(related_links) %} + + {%- endmacro %} + + {# Print related links #} + {{ related_bar(links) }} + +
This is the content
+ + {# Print related links again #} + {{ related_bar(links) }} + +When calling macros, parameters can be passed by name: + +.. code-block:: html+jinja + + {%- macro error_messages(message, field, type) %} +
+ {{ type }} + {{ field }} + {{ message }} +
+ {%- endmacro %} + + {# Call the macro #} + {{ error_messages('type': 'Invalid', 'message': 'The name is invalid', 'field': 'name') }} + +Macros can return values: + +.. code-block:: html+jinja + + {%- macro my_input(name, class) %} + {% return text_field(name, 'class': class) %} + {%- endmacro %} + + {# Call the macro #} + {{ '

' ~ my_input('name', 'input-text') ~ '

' }} + +And receive optional parameters: + +.. code-block:: html+jinja + + {%- macro my_input(name, class="input-text") %} + {% return text_field(name, 'class': class) %} + {%- endmacro %} + + {# Call the macro #} + {{ '

' ~ my_input('name') ~ '

' }} + {{ '

' ~ my_input('name', 'input-text') ~ '

' }} + +Using Tag Helpers +----------------- +Volt is highly integrated with :doc:`Phalcon\\Tag `, so it's easy to use the helpers provided by that component in a Volt template: + +.. code-block:: html+jinja + + {{ javascript_include("js/jquery.js") }} + + {{ form('products/save', 'method': 'post') }} + + + {{ text_field("name", "size": 32) }} + + + {{ select("type", productTypes, 'using': ['id', 'name']) }} + + {{ submit_button('Send') }} + + {{ end_form() }} + +The following PHP is generated: + +.. code-block:: html+php + + + + 'post')); ?> + + + 32)); ?> + + + array('id', 'name'))); ?> + + + + {{ end_form() }} + +To call a :doc:`Phalcon\\Tag <../api/Phalcon_Tag>` helper, you only need to call an uncamelized version of the method: + ++-----------------------------------------+----------------------------+ +| Method | Volt function | ++=========================================+============================+ +| :code:`Phalcon\Tag::linkTo` | :code:`link_to` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::textField` | :code:`text_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::passwordField` | :code:`password_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::hiddenField` | :code:`hidden_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::fileField` | :code:`file_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::checkField` | :code:`check_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::radioField` | :code:`radio_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::dateField` | :code:`date_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::emailField` | :code:`email_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::numericField` | :code:`numeric_field` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::submitButton` | :code:`submit_button` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::selectStatic` | :code:`select_static` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::select` | :code:`select` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::textArea` | :code:`text_area` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::form` | :code:`form` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::endForm` | :code:`end_form` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::getTitle` | :code:`get_title` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::stylesheetLink` | :code:`stylesheet_link` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::javascriptInclude` | :code:`javascript_include` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::image` | :code:`image` | ++-----------------------------------------+----------------------------+ +| :code:`Phalcon\Tag::friendlyTitle` | :code:`friendly_title` | ++-----------------------------------------+----------------------------+ + +Functions +--------- +The following built-in functions are available in Volt: + ++---------------------+-------------------------------------------------------------+ +| Name | Description | ++=====================+=============================================================+ +| :code:`content` | Includes the content produced in a previous rendering stage | ++---------------------+-------------------------------------------------------------+ +| :code:`get_content` | Same as :code:`content` | ++---------------------+-------------------------------------------------------------+ +| :code:`partial` | Dynamically loads a partial view in the current template | ++---------------------+-------------------------------------------------------------+ +| :code:`super` | Render the contents of the parent block | ++---------------------+-------------------------------------------------------------+ +| :code:`time` | Calls the PHP function with the same name | ++---------------------+-------------------------------------------------------------+ +| :code:`date` | Calls the PHP function with the same name | ++---------------------+-------------------------------------------------------------+ +| :code:`dump` | Calls the PHP function :code:`var_dump()` | ++---------------------+-------------------------------------------------------------+ +| :code:`version` | Returns the current version of the framework | ++---------------------+-------------------------------------------------------------+ +| :code:`constant` | Reads a PHP constant | ++---------------------+-------------------------------------------------------------+ +| :code:`url` | Generate a URL using the 'url' service | ++---------------------+-------------------------------------------------------------+ + +View Integration +---------------- +Also, Volt is integrated with :doc:`Phalcon\\Mvc\\View `, you can play with the view hierarchy and include partials as well: + +.. code-block:: html+jinja + + {{ content() }} + + + + + + + +A partial is included in runtime, Volt also provides "include", this compiles the content of a view and returns its contents +as part of the view which was included: + +.. code-block:: html+jinja + + {# Simple include of a partial #} + + + {# Passing extra variables #} + + +Include +^^^^^^^ +'include' has a special behavior that will help us improve performance a bit when using Volt, if you specify the extension +when including the file and it exists when the template is compiled, Volt can inline the contents of the template in the parent +template where it's included. Templates aren't inlined if the 'include' have variables passed with 'with': + +.. code-block:: html+jinja + + {# The contents of 'partials/footer.volt' is compiled and inlined #} + + +Partial vs Include +^^^^^^^^^^^^^^^^^^ +Keep the following points in mind when choosing to use the "partial" function or "include": + +* 'Partial' allows you to include templates made in Volt and in other template engines as well +* 'Partial' allows you to pass an expression like a variable allowing to include the content of other view dynamically +* 'Partial' is better if the content that you have to include changes frequently + +* 'Include' copies the compiled content into the view which improves the performance +* 'Include' only allows to include templates made with Volt +* 'Include' requires an existing template at compile time + +Template Inheritance +-------------------- +With template inheritance you can create base templates that can be extended by others templates allowing to reuse code. A base template +define *blocks* than can be overridden by a child template. Let's pretend that we have the following base template: + +.. code-block:: html+jinja + + {# templates/base.volt #} + + + + {% block head %} + + {% endblock %} + {% block title %}{% endblock %} - My Webpage + + +
{% block content %}{% endblock %}
+ + + + + +From other template we could extend the base template replacing the blocks: + +.. code-block:: jinja + + {% extends "templates/base.volt" %} + + {% block title %}Index{% endblock %} + + {% block head %}{% endblock %} + + {% block content %} +

Index

+

Welcome on my awesome homepage.

+ {% endblock %} + +Not all blocks must be replaced at a child template, only those that are needed. The final output produced will be the following: + +.. code-block:: html + + + + + + Index - My Webpage + + +
+

Index

+

Welcome on my awesome homepage.

+
+ + + + + +Multiple Inheritance +^^^^^^^^^^^^^^^^^^^^ +Extended templates can extend other templates. The following example illustrates this: + +.. code-block:: html+jinja + + {# main.volt #} + + + + Title + + + {% block content %}{% endblock %} + + + +Template "layout.volt" extends "main.volt" + +.. code-block:: html+jinja + + {# layout.volt #} + {% extends "main.volt" %} + + {% block content %} + +

Table of contents

+ + {% endblock %} + +Finally a view that extends "layout.volt": + +.. code-block:: html+jinja + + {# index.volt #} + {% extends "layout.volt" %} + + {% block content %} + + {{ super() }} + +
    +
  • Some option
  • +
  • Some other option
  • +
+ + {% endblock %} + +Rendering "index.volt" produces: + +.. code-block:: html + + + + + Title + + + +

Table of contents

+ +
    +
  • Some option
  • +
  • Some other option
  • +
+ + + + +Note the call to the function :code:`super()`. With that function it's possible to render the contents of the parent block. + +As partials, the path set to "extends" is a relative path under the current views directory (i.e. app/views/). + +.. highlights:: + + By default, and for performance reasons, Volt only checks for changes in the children templates + to know when to re-compile to plain PHP again, so it is recommended initialize Volt with the option + :code:`'compileAlways' => true`. Thus, the templates are compiled always taking into account changes in + the parent templates. + +Autoescape mode +--------------- +You can enable auto-escaping of all variables printed in a block using the autoescape mode: + +.. code-block:: html+jinja + + Manually escaped: {{ robot.name|e }} + + {% autoescape true %} + Autoescaped: {{ robot.name }} + {% autoescape false %} + No Autoescaped: {{ robot.name }} + {% endautoescape %} + {% endautoescape %} + +Setting up the Volt Engine +-------------------------- +Volt can be configured to alter its default behavior, the following example explain how to do that: + +.. code-block:: php + + set( + 'voltService', + function ($view, $di) { + + $volt = new Volt($view, $di); + + $volt->setOptions( + array( + "compiledPath" => "../app/compiled-templates/", + "compiledExtension" => ".compiled" + ) + ); + + return $volt; + } + ); + + // Register Volt as template engine + $di->set( + 'view', + function () { + + $view = new View(); + + $view->setViewsDir('../app/views/'); + + $view->registerEngines( + array( + ".volt" => 'voltService' + ) + ); + + return $view; + } + ); + +If you do not want to reuse Volt as a service you can pass an anonymous function to register the engine instead of a service name: + +.. code-block:: php + + set( + 'view', + function () { + + $view = new \Phalcon\Mvc\View(); + + $view->setViewsDir('../app/views/'); + + $view->registerEngines( + array( + ".volt" => function ($view, $di) { + $volt = new Volt($view, $di); + + // Set some options here + + return $volt; + } + ) + ); + + return $view; + } + ); + +The following options are available in Volt: + ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| Option | Description | Default | ++===========================+==============================================================================================================================+=========+ +| :code:`compiledPath` | A writable path where the compiled PHP templates will be placed | ./ | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`compiledExtension` | An additional extension appended to the compiled PHP file | .php | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`compiledSeparator` | Volt replaces the directory separators / and \\ by this separator in order to create a single file in the compiled directory | %% | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`stat` | Whether Phalcon must check if exists differences between the template file and its compiled path | true | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`compileAlways` | Tell Volt if the templates must be compiled in each request or only when they change | false | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`prefix` | Allows to prepend a prefix to the templates in the compilation path | null | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ +| :code:`autoescape` | Enables globally autoescape of HTML | false | ++---------------------------+------------------------------------------------------------------------------------------------------------------------------+---------+ + +The compilation path is generated according to the above options, if the developer wants total freedom defining the compilation path, +an anonymous function can be used to generate it, this function receives the relative path to the template in the +views directory. The following examples show how to change the compilation path dynamically: + +.. code-block:: php + + setOptions( + array( + 'compiledPath' => function ($templatePath) { + return $templatePath . '.php'; + } + ) + ); + + // Recursively create the same structure in another directory + $volt->setOptions( + array( + 'compiledPath' => function ($templatePath) { + $dirName = dirname($templatePath); + + if (!is_dir('cache/' . $dirName)) { + mkdir('cache/' . $dirName); + } + + return 'cache/' . $dirName . '/'. $templatePath . '.php'; + } + ) + ); + +Extending Volt +-------------- +Unlike other template engines, Volt itself is not required to run the compiled templates. +Once the templates are compiled there is no dependence on Volt. With performance independence in mind, +Volt only acts as a compiler for PHP templates. + +The Volt compiler allow you to extend it adding more functions, tests or filters to the existing ones. + +Functions +^^^^^^^^^ +Functions act as normal PHP functions, a valid string name is required as function name. +Functions can be added using two strategies, returning a simple string or using an anonymous +function. Always is required that the chosen strategy returns a valid PHP string expression: + +.. code-block:: php + + getCompiler(); + + // This binds the function name 'shuffle' in Volt to the PHP function 'str_shuffle' + $compiler->addFunction('shuffle', 'str_shuffle'); + +Register the function with an anonymous function. This case we use :code:`$resolvedArgs` to pass the arguments exactly +as were passed in the arguments: + +.. code-block:: php + + addFunction( + 'widget', + function ($resolvedArgs, $exprArgs) { + return 'MyLibrary\Widgets::get(' . $resolvedArgs . ')'; + } + ); + +Treat the arguments independently and unresolved: + +.. code-block:: php + + addFunction( + 'repeat', + function ($resolvedArgs, $exprArgs) use ($compiler) { + + // Resolve the first argument + $firstArgument = $compiler->expression($exprArgs[0]['expr']); + + // Checks if the second argument was passed + if (isset($exprArgs[1])) { + $secondArgument = $compiler->expression($exprArgs[1]['expr']); + } else { + // Use '10' as default + $secondArgument = '10'; + } + + return 'str_repeat(' . $firstArgument . ', ' . $secondArgument . ')'; + } + ); + +Generate the code based on some function availability: + +.. code-block:: php + + addFunction( + 'contains_text', + function ($resolvedArgs, $exprArgs) { + if (function_exists('mb_stripos')) { + return 'mb_stripos(' . $resolvedArgs . ')'; + } else { + return 'stripos(' . $resolvedArgs . ')'; + } + } + ); + +Built-in functions can be overridden adding a function with its name: + +.. code-block:: php + + addFunction('dump', 'print_r'); + +Filters +^^^^^^^ +A filter has the following form in a template: leftExpr|name(optional-args). Adding new filters +is similar as seen with the functions: + +.. code-block:: php + + addFilter('hash', 'md5'); + +.. code-block:: php + + addFilter( + 'int', + function ($resolvedArgs, $exprArgs) { + return 'intval(' . $resolvedArgs . ')'; + } + ); + +Built-in filters can be overridden adding a function with its name: + +.. code-block:: php + + addFilter('capitalize', 'lcfirst'); + +Extensions +^^^^^^^^^^ +With extensions the developer has more flexibility to extend the template engine, and override the compilation +of a specific instruction, change the behavior of an expression or operator, add functions/filters, and more. + +An extension is a class that implements the events triggered by Volt as a method of itself. + +For example, the class below allows to use any PHP function in Volt: + +.. code-block:: php + + addExtension(new PhpFunctionExtension()); + +Caching view fragments +---------------------- +With Volt it's easy cache view fragments. This caching improves performance preventing +that the contents of a block from being executed by PHP each time the view is displayed: + +.. code-block:: html+jinja + + {% cache "sidebar" %} + + {% endcache %} + +Setting a specific number of seconds: + +.. code-block:: html+jinja + + {# cache the sidebar by 1 hour #} + {% cache "sidebar" 3600 %} + + {% endcache %} + +Any valid expression can be used as cache key: + +.. code-block:: html+jinja + + {% cache ("article-" ~ post.id) 3600 %} + +

{{ post.title }}

+ +

{{ post.content }}

+ + {% endcache %} + +The caching is done by the :doc:`Phalcon\\Cache ` component via the view component. +Learn more about how this integration works in the section :doc:`"Caching View Fragments" `. + +Inject Services into a Template +------------------------------- +If a service container (DI) is available for Volt, you can use the services by only accessing the name of the service in the template: + +.. code-block:: html+jinja + + {# Inject the 'flash' service #} +
{{ flash.output() }}
+ + {# Inject the 'security' service #} + + +Stand-alone component +--------------------- +Using Volt in a stand-alone mode can be demonstrated below: + +.. code-block:: php + + setOptions( + array( + // ... + ) + ); + + // Compile a template string returning PHP code + echo $compiler->compileString('{{ "hello" }}'); + + // Compile a template in a file specifying the destination file + $compiler->compileFile('layouts/main.volt', 'cache/layouts/main.volt.php'); + + // Compile a template in a file based on the options passed to the compiler + $compiler->compile('layouts/main.volt'); + + // Require the compiled templated (optional) + require $compiler->getCompiledTemplatePath(); + +External Resources +------------------ +* A bundle for Sublime/Textmate is available `here `_ +* `Album-O-Rama `_ is a sample application using Volt as template engine, [`Album-O-Rama on Github `_] +* `Our website `_ is running using Volt as template engine, [`Our website on Github `_] +* `Phosphorum `_, the Phalcon's forum, also uses Volt, [`Phosphorum on Github `_] +* `Vökuró `_, is another sample application that use Volt, [`Vökuró on Github `_] + +.. _Armin Ronacher: https://github.com/mitsuhiko +.. _Twig: https://github.com/vito/chyrp/wiki/Twig-Reference +.. _Jinja: http://jinja.pocoo.org/ +.. _trim: http://php.net/manual/en/function.trim.php +.. _ltrim: http://php.net/manual/en/function.ltrim.php +.. _rtrim: http://php.net/manual/en/function.rtrim.php +.. _striptags: http://php.net/manual/en/function.striptags.php +.. _slashes: http://php.net/manual/en/function.slashes.php +.. _stripslashes: http://php.net/manual/en/function.stripslashes.php +.. _ucwords: http://php.net/manual/en/function.ucwords.php +.. _nl2br: http://php.net/manual/en/function.nl2br.php +.. _asort: http://php.net/manual/en/function.asort.php +.. _array_keys: http://php.net/manual/en/function.array-keys.php +.. _abs: http://php.net/manual/en/function.abs.php +.. _urlencode: http://php.net/manual/en/function.urlencode.php +.. _sprintf: http://php.net/manual/en/function.sprintf.php +.. _join: http://php.net/manual/en/function.join.php +.. _JSON: http://php.net/manual/en/function.json-encode.php diff --git a/id/reference/wamp.rst b/id/reference/wamp.rst new file mode 100755 index 000000000000..7d4cc62eb30f --- /dev/null +++ b/id/reference/wamp.rst @@ -0,0 +1,49 @@ +Installation on WAMP +==================== + +WampServer_ is a Windows web development environment. It allows you to create web applications with Apache2, PHP and a MySQL database. Below are detailed instructions on how to install Phalcon on WampServer for Windows. Using the latest WampServer version is highly recommended. + +Download the right version of Phalcon +------------------------------------- +WAMP has both 32 and 64 bit versions. From the download section, you can choose the Phalcon for Windows accordingly to your desired architecture. + +After download the Phalcon library you will have a zip file like the one shown below: + +.. figure:: ../_static/img/xampp-1.png + :align: center + +Extract the library from the archive to get the Phalcon DLL: + +.. figure:: ../_static/img/xampp-2.png + :align: center + +Copy the file php_phalcon.dll to the PHP extensions. If WAMP is installed in the C:\\wamp folder, the extension needs to be in C:\\wamp\\bin\\php\\php5.5.12\\ext + +.. figure:: ../_static/img/wamp-1.png + :align: center + +Edit the php.ini file, it is located at C:\\wamp\\bin\\php\\php5.5.12\\php.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. + +.. figure:: ../_static/img/wamp-2.png + :align: center + +Also edit another php.ini file, which is located at C:\\wamp\\bin\\apache\\apache2.4.9\\bin\\php.ini. Append at the end of the file: extension=php_phalcon.dll and save it. + +Restart the Apache Web Server. Do a single click on the WampServer icon at system tray. Choose "Restart All Services" from the pop-up menu. Check out that tray icon will become green again. + +.. figure:: ../_static/img/wamp-3.png + :align: center + +Open your browser to navigate to http://localhost. The WAMP welcome page will appear. Look at the section "extensions loaded" to check if phalcon was loaded. + +.. figure:: ../_static/img/wamp-4.png + :align: center + +Congrats!, You are now flying with Phalcon. + +Related Guides +-------------- +* :doc:`General Installation ` +* :doc:`Detailed Installation on XAMPP for Windows ` + +.. _WampServer: http://www.wampserver.com/en/ diff --git a/id/reference/whats-next.rst b/id/reference/whats-next.rst new file mode 100644 index 000000000000..f26cf27282ee --- /dev/null +++ b/id/reference/whats-next.rst @@ -0,0 +1,150 @@ +Increasing Performance: What's next? +==================================== + +Get faster applications requires refine many aspects: server, client, network, database, web server, static sources, etc. +In this chapter we highlight scenarios where you can improve performance and how detect what is really slow in your application. + +Profile on the Server +--------------------- +Each application is different, the permanent profiling is important to understand where performance can be increased. +Profiling gives us a real picture on what is really slow and what does not. Profiles can vary between a request and another, +so it is important to make enough measurements to make conclusions. + +Profiling with XDebug +^^^^^^^^^^^^^^^^^^^^^ +Xdebug_ provides an easier way to profile PHP applications, just install the extension and enable profiling in the php.ini: + +.. code-block:: ini + + xdebug.profiler_enable = On + +Using a tool like Webgrind_ you can see which functions/methods are slower than others: + +.. figure:: ../_static/img/webgrind.jpg + :align: center + +Profiling with Xhprof +^^^^^^^^^^^^^^^^^^^^^ +Xhprof_ is another interesting extension to profile PHP applications. Add the following line to the start of the bootstrap file: + +.. code-block:: php + + save_run($xhprof_data, "xhprof_testing"); + + echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n"; + +Xhprof provides a built-in HTML viewer to analyze the profiled data: + +.. figure:: ../_static/img/xhprof-2.jpg + :align: center + +.. figure:: ../_static/img/xhprof-1.jpg + :align: center + +Profiling SQL Statements +^^^^^^^^^^^^^^^^^^^^^^^^ +Most database systems provide tools to identify slow SQL statements. Detecting and fixing slow queries is very important in order to increase performance +in the server side. In the Mysql case, you can use the slow query log to know what SQL queries are taking more time than expected: + +.. code-block:: ini + + log-slow-queries = /var/log/slow-queries.log + long_query_time = 1.5 + +Profile on the Client +--------------------- +Sometimes we may need to improve the loading of static elements such as images, javascript and css to improve performance. +The following tools are useful to detect common bottlenecks in the client side: + +Profile with Chrome/Firefox +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Most modern browsers have tools to profile the page loading time. In Chrome you can use the web inspector to know how much time is taking the +loading of the different resources required by a single page: + +.. figure:: ../_static/img/chrome-1.jpg + :align: center + +Firebug_ provides a similar functionality: + +.. figure:: ../_static/img/firefox-1.jpg + :align: center + +Yahoo! YSlow +------------ +YSlow_ analyzes web pages and suggests ways to improve their performance based on a set of `rules for high performance web pages`_ + +.. figure:: ../_static/img/yslow-1.jpg + :align: center + +Profile with Speed Tracer +^^^^^^^^^^^^^^^^^^^^^^^^^ +`Speed Tracer`_ is a tool to help you identify and fix performance problems in your web applications. It visualizes metrics that are taken +from low level instrumentation points inside of the browser and analyzes them as your application runs. Speed Tracer is available as a +Chrome extension and works on all platforms where extensions are currently supported (Windows and Linux). + +.. figure:: ../_static/img/speed-tracer.jpg + :align: center + +This tool is very useful because it help you to get the real time used to render the whole page including HTML parsing, +Javascript evaluation and CSS styling. + +Use a recent PHP version +------------------------ +PHP is faster every day, using the latest version improves the performance of your applications and also of Phalcon. + +Use a PHP Bytecode Cache +------------------------ +APC_ as many other bytecode caches help an application to reduce the overhead of read, tokenize and parse PHP files in each request. +Once the extension is installed use the following setting to enable APC: + +.. code-block:: ini + + apc.enabled = On + +PHP 5.5 includes a built-in bytecode cache called ZendOptimizer+, this extension is also available for 5.3 and 5.4. + +Do blocking work in the background +---------------------------------- +Process a video, send e-mails, compress a file or an image, etc., are slow tasks that must be processed in background jobs. +There are a variety of tools that provide queuing or messaging systems that work well with PHP: + +* `Beanstalkd `_ +* `Redis `_ +* `RabbitMQ `_ +* `Resque `_ +* `Gearman `_ +* `ZeroMQ `_ + +Google Page Speed +----------------- +mod_pagespeed_ speeds up your site and reduces page load time. This open-source Apache HTTP server module (also available +for nginx as ngx_pagespeed_) automatically applies web performance best practices to pages, and associated assets +(CSS, JavaScript, images) without requiring that you modify your existing content or workflow. + +.. _firebug: http://getfirebug.com/ +.. _YSlow: http://developer.yahoo.com/yslow/ +.. _rules for high performance web pages: http://developer.yahoo.com/performance/rules.html +.. _XDebug: http://xdebug.org/docs +.. _Xhprof: https://github.com/facebook/xhprof +.. _Speed Tracer: https://developers.google.com/web-toolkit/speedtracer/ +.. _Webgrind: https://github.com/jokkedk/webgrind/ +.. _APC: http://php.net/manual/en/book.apc.php +.. _mod_pagespeed: https://developers.google.com/speed/pagespeed/mod +.. _ngx_pagespeed: https://developers.google.com/speed/pagespeed/ngx diff --git a/id/reference/wintools.rst b/id/reference/wintools.rst new file mode 100644 index 000000000000..76f6c183701d --- /dev/null +++ b/id/reference/wintools.rst @@ -0,0 +1,74 @@ +Phalcon Developer Tools on Windows +================================== + +These steps will guide you through the process of installing Phalcon Developer Tools for Windows. + +Prerequisites +------------- +The Phalcon PHP extension is required to run Phalcon Tools. If you haven't installed it yet, please see the :doc:`Installation ` section for instructions. + +Download +-------- +You can download a cross platform package containing the developer tools from the Download_ section. Also you can clone it from Github_. + +On the Windows platform, you need to configure the system PATH to include Phalcon tools as well as the PHP executable. If you download the Phalcon tools as a zip archive, extract it on any path of your local drive i.e. *c:\\phalcon-tools*. You will need this path in the steps below. Edit the file "phalcon.bat" by right clicking on the file and selecting "Edit": + +.. figure:: ../_static/img/path-0.png + :align: center + +Change the path to the one you installed the Phalcon tools (set PTOOLSPATH=C:\phalcon-tools\): + +.. figure:: ../_static/img/path-01.png + :align: center + +Save the changes. + +Adding PHP and Tools to your system PATH +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Because the scripts are written in PHP, you need to install it on your machine. Depending on your PHP installation, the executable can be located in various places. Search for the file php.exe and copy the path it is located in. For instance, if using the latest WAMP stack, PHP is located in: *C:\\wamp\bin\\php\\php5.3.10\\php.exe*. + +From the Windows start menu, right mouse click on the "Computer" icon and select "Properties": + +.. figure:: ../_static/img/path-1.png + :align: center + +Click the "Advanced" tab and then the button "Environment Variables": + +.. figure:: ../_static/img/path-2.png + :align: center + +At the bottom, look for the section "System variables" and edit the variable "Path": + +.. figure:: ../_static/img/path-3.png + :align: center + +Be very careful on this step! You need to append at the end of the long string the path where your php.exe was located and the path where Phalcon tools are installed. Use the ";" character to separate the different paths in the variable: + +.. figure:: ../_static/img/path-4.png + :align: center + +Accept the changes made by clicking "OK" and close the dialogs opened. From the start menu click on the option "Run". If you can't find this option, press "Windows Key" + "R". + +.. figure:: ../_static/img/path-5.png + :align: center + +Type "cmd" and press enter to open the windows command line utility: + +.. figure:: ../_static/img/path-6.png + :align: center + +Type the commands "php -v" and "phalcon" and you will see something like this: + +.. figure:: ../_static/img/path-7.png + :align: center + +Congratulations you now have Phalcon tools installed! + +Related Guides +^^^^^^^^^^^^^^ +* :doc:`Using Developer Tools ` +* :doc:`Installation on OS X ` +* :doc:`Installation on Linux ` + +.. _Download: http://phalconphp.com/download +.. _Github: https://github.com/phalcon/phalcon-devtools diff --git a/id/reference/xampp.rst b/id/reference/xampp.rst new file mode 100755 index 000000000000..179398152dae --- /dev/null +++ b/id/reference/xampp.rst @@ -0,0 +1,60 @@ +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. + +Download the right version of Phalcon +------------------------------------- +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: + +.. figure:: ../_static/img/xampp-1.png + :align: center + +Extract the library from the archive to get the Phalcon DLL: + +.. figure:: ../_static/img/xampp-2.png + :align: center + +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:\\xampp\\php\\ext + +.. figure:: ../_static/img/xampp-3.png + :align: center + +Edit the php.ini file, it is located at C:\\xampp\\php\\php.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. + +.. figure:: ../_static/img/xampp-4.png + :align: center + +Restart the Apache Web Server from the XAMPP Control Center. This will load the new PHP configuration. + +.. figure:: ../_static/img/xampp-5.png + :align: center + +Open your browser to navigate to http://localhost. The XAMPP welcome page will appear. Click on the link phpinfo(). + +.. figure:: ../_static/img/xampp-6.png + :align: center + +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. + +.. figure:: ../_static/img/xampp-7.png + :align: center + +If you can see the phalcon version in the phpinfo() output, congrats!, You are now flying with Phalcon. + +Screencast +---------- +The following screencast is a step by step guide to install Phalcon on Windows: + +.. raw:: html + +
+ +Related Guides +-------------- +* :doc:`General Installation ` +* :doc:`Detailed Installation on WAMP for Windows ` + +.. _XAMPP: https://www.apachefriends.org/download.html diff --git a/ja/api/index.rst b/ja/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/ja/api/index.rst +++ b/ja/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/ja/conf.py b/ja/conf.py index 850ba77c7082..f6c2a50c8eb1 100755 --- a/ja/conf.py +++ b/ja/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/ja/reference/config.rst b/ja/reference/config.rst index 19e218ee3a5f..9350ac6558b4 100755 --- a/ja/reference/config.rst +++ b/ja/reference/config.rst @@ -149,3 +149,38 @@ The above code produces the following: ) There are more adapters available for this components in the `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/ja/reference/db.rst b/ja/reference/db.rst index 46e4563b546b..b367d49eefe1 100755 --- a/ja/reference/db.rst +++ b/ja/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ 独自アダプタの実装 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - 追加のPDOオプションの設定 --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/ja/reference/routing.rst b/ja/reference/routing.rst index 95e842437a75..78198c34d1ba 100755 --- a/ja/reference/routing.rst +++ b/ja/reference/routing.rst @@ -786,10 +786,32 @@ Not Found パス add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); ホスト名によるアクセス制限 -------------------------- diff --git a/pl/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/pl/api/Phalcon_Db_Adapter_Pdo_Oracle.rst deleted file mode 100644 index 1ed2fd825010..000000000000 --- a/pl/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ /dev/null @@ -1,775 +0,0 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` - -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Specific functions for the Oracle database system - -.. code-block:: php - - "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - - - -Methods -------- - -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); - - - - -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns a PDO prepared statement to be executed with 'executePrepared' - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo - -Executes a prepared statement binding. This function uses integer indexes starting from zero - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows - -.. code-block:: php - - query("SELECT * FROM robots WHERE type='mechanical'"); - $resultset = $connection->query("SELECT * FROM robots WHERE type=?", array("mechanical")); - - - - -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows - -.. code-block:: php - - execute("INSERT INTO robots VALUES (1, 'Astro Boy')"); - $success = $connection->execute("INSERT INTO robots VALUES (?, ?)", array(1, 'Astro Boy')); - - - - -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system - -.. code-block:: php - - execute("DELETE FROM robots"); - echo $connection->affectedRows(), ' were deleted'; - - - - -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends - - - -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a column/table/schema name - -.. code-block:: php - - escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); - - - - -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a value to avoid SQL injections according to the active charset in the connection - -.. code-block:: php - - escapeString('some dangerous value'); - - - - -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Converts bound parameters such as :name: or ?1 into PDO bind params ? - -.. code-block:: php - - convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); - - - - -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Starts a transaction in the connection - - - -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Rollbacks the active transaction in the connection - - - -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Commits the active transaction in the connection - - - -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the current transaction nesting level - - - -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Checks whether the connection is under a transaction - -.. code-block:: php - - begin(); - var_dump($connection->isUnderTransaction()); //true - - - - -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return internal PDO handler - - - -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return the error info, if any - - - -public **getDialectType** () inherited from Phalcon\\Db\\Adapter - -Name of the dialect used - - - -public **getType** () inherited from Phalcon\\Db\\Adapter - -Type of database system the adapter is used for - - - -public **getSqlVariables** () inherited from Phalcon\\Db\\Adapter - -Active SQL bound parameter variables - - - -public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Db\\Adapter - -Sets the event manager - - - -public **getEventsManager** () inherited from Phalcon\\Db\\Adapter - -Returns the internal event manager - - - -public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) inherited from Phalcon\\Db\\Adapter - -Sets the dialect used to produce the SQL - - - -public **getDialect** () inherited from Phalcon\\Db\\Adapter - -Returns internal dialect instance - - - -public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Returns the first row in a SQL query result - -.. code-block:: php - - fetchOne("SELECT * FROM robots"); - print_r($robot); - - //Getting first robot with associative indexes only - $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - print_r($robot); - - - - -public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Dumps the complete result of a query into an array - -.. code-block:: php - - fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - foreach ($robots as $robot) { - print_r($robot); - } - - //Getting all robots that contains word "robot" withing the name - $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", - Phalcon\Db::FETCH_ASSOC, - array('name' => '%robot%') - ); - foreach($robots as $robot){ - print_r($robot); - } - - - - -public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) inherited from Phalcon\\Db\\Adapter - -Returns the n'th field of first row in a SQL query result - -.. code-block:: php - - fetchColumn("SELECT count(*) FROM robots"); - print_r($robotsCount); - - //Getting name of last edited robot - $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); - print_r($robot); - - - - -public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - // Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insertAsDict( - "robots", - array( - "name" => "Astro Boy", - "year" => 1952 - ) - ); - - //Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax - -.. code-block:: php - - update( - "robots", - array("name"), - array("New Astro Boy"), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - //Updating existing robot with array condition and $dataTypes - $success = $connection->update( - "robots", - array("name"), - array("New Astro Boy"), - array( - 'conditions' => "id = ?", - 'bind' => array($some_unsafe_id), - 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param - ), - array(PDO::PARAM_STR) - ); - -Warning! If $whereCondition is string it not escaped. - - - -public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax - -.. code-block:: php - - update( - "robots", - array( - "name" => "New Astro Boy" - ), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - - - -public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Deletes data from a table using custom RBDM SQL syntax - -.. code-block:: php - - delete( - "robots", - "id = 101" - ); - - //Next SQL sentence is generated - DELETE FROM `robots` WHERE `id` = 101 - - - - -public *string* **getColumnList** (*array* $columnList) inherited from Phalcon\\Db\\Adapter - -Gets a list of columns - - - -public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Adapter - -Appends a LIMIT clause to $sqlQuery argument - -.. code-block:: php - - limit("SELECT * FROM robots", 5); - - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("blog", "posts")); - - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.view - -.. code-block:: php - - viewExists("active_users", "posts")); - - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a FOR UPDATE clause - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a LOCK IN SHARE MODE clause - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - -public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a table from a schema/database - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Creates a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a view - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Adds a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter - -Drops a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\Adapter - -Drop an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds a primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\Adapter - -Drops a table's primary key - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\Adapter - -Adds a foreign key to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\Adapter - -Drops a foreign key from a table - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Returns the SQL column definition from a column - - - -public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all tables on a database - -.. code-block:: php - - listTables("blog")); - - - - -public **listViews** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all views on a database - -.. code-block:: php - - listViews("blog")); - - - - -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - -public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Gets creation options from a table - -.. code-block:: php - - tableOptions('robots')); - - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Creates a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Releases given savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Rollbacks given savepoint - - - -public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) inherited from Phalcon\\Db\\Adapter - -Set if nested transactions should use savepoints - - - -public **isNestedTransactionsWithSavepoints** () inherited from Phalcon\\Db\\Adapter - -Returns if nested transactions should use savepoints - - - -public **getNestedTransactionSavepointName** () inherited from Phalcon\\Db\\Adapter - -Returns the savepoint name to use for nested transactions - - - -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter - -Returns the default value to make the RBDM use the default value declared in the table definition - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") - ); - - - - -public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter - -Return descriptor used to connect to the active database - - - -public *string* **getConnectionId** () inherited from Phalcon\\Db\\Adapter - -Gets the active connection unique identifier - - - -public **getSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - -public **getRealSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object without replace bound paramters - - - -public *array* **getSQLBindTypes** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - diff --git a/pl/api/Phalcon_Db_Dialect_Oracle.rst b/pl/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/pl/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/pl/api/index.rst b/pl/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/pl/api/index.rst +++ b/pl/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/pl/conf.py b/pl/conf.py index a7d49c42b855..8dc3206133ba 100644 --- a/pl/conf.py +++ b/pl/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pl/reference/config.rst b/pl/reference/config.rst index b6cb1e8de73e..a89f18bbb60d 100644 --- a/pl/reference/config.rst +++ b/pl/reference/config.rst @@ -149,3 +149,38 @@ The above code produces the following: ) There are more adapters available for this components in the `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/pl/reference/db.rst b/pl/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100644 --- a/pl/reference/db.rst +++ b/pl/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/pl/reference/routing.rst b/pl/reference/routing.rst index 11488227e43a..0ac481ebbc96 100644 --- a/pl/reference/routing.rst +++ b/pl/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/pt/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/pt/api/Phalcon_Db_Adapter_Pdo_Oracle.rst deleted file mode 100644 index 1ed2fd825010..000000000000 --- a/pt/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ /dev/null @@ -1,775 +0,0 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` - -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Specific functions for the Oracle database system - -.. code-block:: php - - "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - - - -Methods -------- - -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); - - - - -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns a PDO prepared statement to be executed with 'executePrepared' - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo - -Executes a prepared statement binding. This function uses integer indexes starting from zero - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows - -.. code-block:: php - - query("SELECT * FROM robots WHERE type='mechanical'"); - $resultset = $connection->query("SELECT * FROM robots WHERE type=?", array("mechanical")); - - - - -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows - -.. code-block:: php - - execute("INSERT INTO robots VALUES (1, 'Astro Boy')"); - $success = $connection->execute("INSERT INTO robots VALUES (?, ?)", array(1, 'Astro Boy')); - - - - -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system - -.. code-block:: php - - execute("DELETE FROM robots"); - echo $connection->affectedRows(), ' were deleted'; - - - - -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends - - - -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a column/table/schema name - -.. code-block:: php - - escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); - - - - -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a value to avoid SQL injections according to the active charset in the connection - -.. code-block:: php - - escapeString('some dangerous value'); - - - - -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Converts bound parameters such as :name: or ?1 into PDO bind params ? - -.. code-block:: php - - convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); - - - - -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Starts a transaction in the connection - - - -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Rollbacks the active transaction in the connection - - - -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Commits the active transaction in the connection - - - -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the current transaction nesting level - - - -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Checks whether the connection is under a transaction - -.. code-block:: php - - begin(); - var_dump($connection->isUnderTransaction()); //true - - - - -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return internal PDO handler - - - -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return the error info, if any - - - -public **getDialectType** () inherited from Phalcon\\Db\\Adapter - -Name of the dialect used - - - -public **getType** () inherited from Phalcon\\Db\\Adapter - -Type of database system the adapter is used for - - - -public **getSqlVariables** () inherited from Phalcon\\Db\\Adapter - -Active SQL bound parameter variables - - - -public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Db\\Adapter - -Sets the event manager - - - -public **getEventsManager** () inherited from Phalcon\\Db\\Adapter - -Returns the internal event manager - - - -public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) inherited from Phalcon\\Db\\Adapter - -Sets the dialect used to produce the SQL - - - -public **getDialect** () inherited from Phalcon\\Db\\Adapter - -Returns internal dialect instance - - - -public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Returns the first row in a SQL query result - -.. code-block:: php - - fetchOne("SELECT * FROM robots"); - print_r($robot); - - //Getting first robot with associative indexes only - $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - print_r($robot); - - - - -public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Dumps the complete result of a query into an array - -.. code-block:: php - - fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - foreach ($robots as $robot) { - print_r($robot); - } - - //Getting all robots that contains word "robot" withing the name - $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", - Phalcon\Db::FETCH_ASSOC, - array('name' => '%robot%') - ); - foreach($robots as $robot){ - print_r($robot); - } - - - - -public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) inherited from Phalcon\\Db\\Adapter - -Returns the n'th field of first row in a SQL query result - -.. code-block:: php - - fetchColumn("SELECT count(*) FROM robots"); - print_r($robotsCount); - - //Getting name of last edited robot - $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); - print_r($robot); - - - - -public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - // Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insertAsDict( - "robots", - array( - "name" => "Astro Boy", - "year" => 1952 - ) - ); - - //Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax - -.. code-block:: php - - update( - "robots", - array("name"), - array("New Astro Boy"), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - //Updating existing robot with array condition and $dataTypes - $success = $connection->update( - "robots", - array("name"), - array("New Astro Boy"), - array( - 'conditions' => "id = ?", - 'bind' => array($some_unsafe_id), - 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param - ), - array(PDO::PARAM_STR) - ); - -Warning! If $whereCondition is string it not escaped. - - - -public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax - -.. code-block:: php - - update( - "robots", - array( - "name" => "New Astro Boy" - ), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - - - -public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Deletes data from a table using custom RBDM SQL syntax - -.. code-block:: php - - delete( - "robots", - "id = 101" - ); - - //Next SQL sentence is generated - DELETE FROM `robots` WHERE `id` = 101 - - - - -public *string* **getColumnList** (*array* $columnList) inherited from Phalcon\\Db\\Adapter - -Gets a list of columns - - - -public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Adapter - -Appends a LIMIT clause to $sqlQuery argument - -.. code-block:: php - - limit("SELECT * FROM robots", 5); - - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("blog", "posts")); - - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.view - -.. code-block:: php - - viewExists("active_users", "posts")); - - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a FOR UPDATE clause - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a LOCK IN SHARE MODE clause - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - -public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a table from a schema/database - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Creates a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a view - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Adds a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter - -Drops a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\Adapter - -Drop an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds a primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\Adapter - -Drops a table's primary key - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\Adapter - -Adds a foreign key to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\Adapter - -Drops a foreign key from a table - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Returns the SQL column definition from a column - - - -public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all tables on a database - -.. code-block:: php - - listTables("blog")); - - - - -public **listViews** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all views on a database - -.. code-block:: php - - listViews("blog")); - - - - -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - -public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Gets creation options from a table - -.. code-block:: php - - tableOptions('robots')); - - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Creates a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Releases given savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Rollbacks given savepoint - - - -public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) inherited from Phalcon\\Db\\Adapter - -Set if nested transactions should use savepoints - - - -public **isNestedTransactionsWithSavepoints** () inherited from Phalcon\\Db\\Adapter - -Returns if nested transactions should use savepoints - - - -public **getNestedTransactionSavepointName** () inherited from Phalcon\\Db\\Adapter - -Returns the savepoint name to use for nested transactions - - - -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter - -Returns the default value to make the RBDM use the default value declared in the table definition - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") - ); - - - - -public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter - -Return descriptor used to connect to the active database - - - -public *string* **getConnectionId** () inherited from Phalcon\\Db\\Adapter - -Gets the active connection unique identifier - - - -public **getSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - -public **getRealSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object without replace bound paramters - - - -public *array* **getSQLBindTypes** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - diff --git a/pt/api/Phalcon_Db_Dialect_Oracle.rst b/pt/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/pt/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/pt/api/index.rst b/pt/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/pt/api/index.rst +++ b/pt/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/pt/conf.py b/pt/conf.py index a27405030227..c4510b9735fd 100755 --- a/pt/conf.py +++ b/pt/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pt/reference/config.rst b/pt/reference/config.rst index edbb8f61cf2f..45a8dba48071 100755 --- a/pt/reference/config.rst +++ b/pt/reference/config.rst @@ -146,3 +146,38 @@ O código acima produz o seguinte: ) Existem mais adaptadores disponíveis para esse componente em `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/pt/reference/db.rst b/pt/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100755 --- a/pt/reference/db.rst +++ b/pt/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/pt/reference/routing.rst b/pt/reference/routing.rst index 3261dd0bb10f..3867aa58d637 100755 --- a/pt/reference/routing.rst +++ b/pt/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/ru/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/ru/api/Phalcon_Db_Adapter_Pdo_Oracle.rst deleted file mode 100644 index 1ed2fd825010..000000000000 --- a/ru/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ /dev/null @@ -1,775 +0,0 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` - -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Specific functions for the Oracle database system - -.. code-block:: php - - "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - - - -Methods -------- - -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); - - - - -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns a PDO prepared statement to be executed with 'executePrepared' - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo - -Executes a prepared statement binding. This function uses integer indexes starting from zero - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows - -.. code-block:: php - - query("SELECT * FROM robots WHERE type='mechanical'"); - $resultset = $connection->query("SELECT * FROM robots WHERE type=?", array("mechanical")); - - - - -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows - -.. code-block:: php - - execute("INSERT INTO robots VALUES (1, 'Astro Boy')"); - $success = $connection->execute("INSERT INTO robots VALUES (?, ?)", array(1, 'Astro Boy')); - - - - -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system - -.. code-block:: php - - execute("DELETE FROM robots"); - echo $connection->affectedRows(), ' were deleted'; - - - - -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends - - - -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a column/table/schema name - -.. code-block:: php - - escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); - - - - -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a value to avoid SQL injections according to the active charset in the connection - -.. code-block:: php - - escapeString('some dangerous value'); - - - - -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Converts bound parameters such as :name: or ?1 into PDO bind params ? - -.. code-block:: php - - convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); - - - - -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Starts a transaction in the connection - - - -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Rollbacks the active transaction in the connection - - - -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Commits the active transaction in the connection - - - -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the current transaction nesting level - - - -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Checks whether the connection is under a transaction - -.. code-block:: php - - begin(); - var_dump($connection->isUnderTransaction()); //true - - - - -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return internal PDO handler - - - -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return the error info, if any - - - -public **getDialectType** () inherited from Phalcon\\Db\\Adapter - -Name of the dialect used - - - -public **getType** () inherited from Phalcon\\Db\\Adapter - -Type of database system the adapter is used for - - - -public **getSqlVariables** () inherited from Phalcon\\Db\\Adapter - -Active SQL bound parameter variables - - - -public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Db\\Adapter - -Sets the event manager - - - -public **getEventsManager** () inherited from Phalcon\\Db\\Adapter - -Returns the internal event manager - - - -public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) inherited from Phalcon\\Db\\Adapter - -Sets the dialect used to produce the SQL - - - -public **getDialect** () inherited from Phalcon\\Db\\Adapter - -Returns internal dialect instance - - - -public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Returns the first row in a SQL query result - -.. code-block:: php - - fetchOne("SELECT * FROM robots"); - print_r($robot); - - //Getting first robot with associative indexes only - $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - print_r($robot); - - - - -public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Dumps the complete result of a query into an array - -.. code-block:: php - - fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - foreach ($robots as $robot) { - print_r($robot); - } - - //Getting all robots that contains word "robot" withing the name - $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", - Phalcon\Db::FETCH_ASSOC, - array('name' => '%robot%') - ); - foreach($robots as $robot){ - print_r($robot); - } - - - - -public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) inherited from Phalcon\\Db\\Adapter - -Returns the n'th field of first row in a SQL query result - -.. code-block:: php - - fetchColumn("SELECT count(*) FROM robots"); - print_r($robotsCount); - - //Getting name of last edited robot - $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); - print_r($robot); - - - - -public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - // Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insertAsDict( - "robots", - array( - "name" => "Astro Boy", - "year" => 1952 - ) - ); - - //Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax - -.. code-block:: php - - update( - "robots", - array("name"), - array("New Astro Boy"), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - //Updating existing robot with array condition and $dataTypes - $success = $connection->update( - "robots", - array("name"), - array("New Astro Boy"), - array( - 'conditions' => "id = ?", - 'bind' => array($some_unsafe_id), - 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param - ), - array(PDO::PARAM_STR) - ); - -Warning! If $whereCondition is string it not escaped. - - - -public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax - -.. code-block:: php - - update( - "robots", - array( - "name" => "New Astro Boy" - ), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - - - -public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Deletes data from a table using custom RBDM SQL syntax - -.. code-block:: php - - delete( - "robots", - "id = 101" - ); - - //Next SQL sentence is generated - DELETE FROM `robots` WHERE `id` = 101 - - - - -public *string* **getColumnList** (*array* $columnList) inherited from Phalcon\\Db\\Adapter - -Gets a list of columns - - - -public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Adapter - -Appends a LIMIT clause to $sqlQuery argument - -.. code-block:: php - - limit("SELECT * FROM robots", 5); - - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("blog", "posts")); - - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.view - -.. code-block:: php - - viewExists("active_users", "posts")); - - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a FOR UPDATE clause - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a LOCK IN SHARE MODE clause - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - -public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a table from a schema/database - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Creates a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a view - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Adds a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter - -Drops a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\Adapter - -Drop an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds a primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\Adapter - -Drops a table's primary key - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\Adapter - -Adds a foreign key to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\Adapter - -Drops a foreign key from a table - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Returns the SQL column definition from a column - - - -public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all tables on a database - -.. code-block:: php - - listTables("blog")); - - - - -public **listViews** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all views on a database - -.. code-block:: php - - listViews("blog")); - - - - -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - -public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Gets creation options from a table - -.. code-block:: php - - tableOptions('robots')); - - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Creates a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Releases given savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Rollbacks given savepoint - - - -public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) inherited from Phalcon\\Db\\Adapter - -Set if nested transactions should use savepoints - - - -public **isNestedTransactionsWithSavepoints** () inherited from Phalcon\\Db\\Adapter - -Returns if nested transactions should use savepoints - - - -public **getNestedTransactionSavepointName** () inherited from Phalcon\\Db\\Adapter - -Returns the savepoint name to use for nested transactions - - - -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter - -Returns the default value to make the RBDM use the default value declared in the table definition - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") - ); - - - - -public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter - -Return descriptor used to connect to the active database - - - -public *string* **getConnectionId** () inherited from Phalcon\\Db\\Adapter - -Gets the active connection unique identifier - - - -public **getSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - -public **getRealSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object without replace bound paramters - - - -public *array* **getSQLBindTypes** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - diff --git a/ru/api/Phalcon_Db_Dialect_Oracle.rst b/ru/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/ru/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/ru/api/index.rst b/ru/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/ru/api/index.rst +++ b/ru/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/ru/conf.py b/ru/conf.py index fd3506446f3c..1af2b80d9b85 100755 --- a/ru/conf.py +++ b/ru/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/ru/reference/config.rst b/ru/reference/config.rst index 3f0068477bea..497743821798 100644 --- a/ru/reference/config.rst +++ b/ru/reference/config.rst @@ -149,3 +149,38 @@ Ini-файлы являются довольно распространённы ) Существует еще несколько типов адаптеров конфигурации, их можно получить в "Инкубаторе" - `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/ru/reference/db.rst b/ru/reference/db.rst index 87d3082e7984..2aed26c6a3f1 100755 --- a/ru/reference/db.rst +++ b/ru/reference/db.rst @@ -25,8 +25,6 @@ +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | Библиотека SQLite реализует автономную, бессерверную, не требующую конфигурации и при этом поддерживающую транзакции базу данных на основе языка SQL. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle является объектно-реляционной системой управления базами данных, производится и продается компанией Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Реализации собственных адаптеров ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | Специфичные диалекты SQL для SQLite | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | Специфичные диалекты SQL для Oracle | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Реализации собственных диалектов ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ // Создаем соединение $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Расширенная конфигурация - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Создаем соединение - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Настройка дополнительных параметров PDO --------------------------------------- Вы можете установить опции PDO во время соединения, передавая параметры ‘options’: diff --git a/ru/reference/routing.rst b/ru/reference/routing.rst index 6ad3c166b1c1..99505073fcb8 100644 --- a/ru/reference/routing.rst +++ b/ru/reference/routing.rst @@ -824,10 +824,32 @@ This is typically for an Error 404 page. add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Начиная с Phalcon 2.1.0 beta 1, существует ещё один способ сделать эту проверку: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Проверяет был ли запрос сделан с помощью Ajax + return $request->isAjax(); + }); Ограничение по имени хоста -------------------------- diff --git a/scripts/gen-api.php b/scripts/gen-api.php index ea106646bfa3..00c473ba7866 100644 --- a/scripts/gen-api.php +++ b/scripts/gen-api.php @@ -22,7 +22,7 @@ throw new Exception("CPHALCON directory does not exist"); } -$languages = array('en', 'es', 'fr', 'ja', 'pl', 'pt', 'ru', 'uk', 'zh'); +$languages = array('en', 'es', 'fr', 'id', 'ja', 'pl', 'pt', 'ru', 'uk', 'zh'); /** * Class ApiGenerator diff --git a/uk/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/uk/api/Phalcon_Db_Adapter_Pdo_Oracle.rst deleted file mode 100644 index 1ed2fd825010..000000000000 --- a/uk/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ /dev/null @@ -1,775 +0,0 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` - -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Specific functions for the Oracle database system - -.. code-block:: php - - "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - - - -Methods -------- - -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); - - - - -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns a PDO prepared statement to be executed with 'executePrepared' - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo - -Executes a prepared statement binding. This function uses integer indexes starting from zero - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows - -.. code-block:: php - - query("SELECT * FROM robots WHERE type='mechanical'"); - $resultset = $connection->query("SELECT * FROM robots WHERE type=?", array("mechanical")); - - - - -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows - -.. code-block:: php - - execute("INSERT INTO robots VALUES (1, 'Astro Boy')"); - $success = $connection->execute("INSERT INTO robots VALUES (?, ?)", array(1, 'Astro Boy')); - - - - -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system - -.. code-block:: php - - execute("DELETE FROM robots"); - echo $connection->affectedRows(), ' were deleted'; - - - - -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends - - - -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a column/table/schema name - -.. code-block:: php - - escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); - - - - -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a value to avoid SQL injections according to the active charset in the connection - -.. code-block:: php - - escapeString('some dangerous value'); - - - - -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Converts bound parameters such as :name: or ?1 into PDO bind params ? - -.. code-block:: php - - convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); - - - - -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Starts a transaction in the connection - - - -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Rollbacks the active transaction in the connection - - - -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Commits the active transaction in the connection - - - -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the current transaction nesting level - - - -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Checks whether the connection is under a transaction - -.. code-block:: php - - begin(); - var_dump($connection->isUnderTransaction()); //true - - - - -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return internal PDO handler - - - -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return the error info, if any - - - -public **getDialectType** () inherited from Phalcon\\Db\\Adapter - -Name of the dialect used - - - -public **getType** () inherited from Phalcon\\Db\\Adapter - -Type of database system the adapter is used for - - - -public **getSqlVariables** () inherited from Phalcon\\Db\\Adapter - -Active SQL bound parameter variables - - - -public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Db\\Adapter - -Sets the event manager - - - -public **getEventsManager** () inherited from Phalcon\\Db\\Adapter - -Returns the internal event manager - - - -public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) inherited from Phalcon\\Db\\Adapter - -Sets the dialect used to produce the SQL - - - -public **getDialect** () inherited from Phalcon\\Db\\Adapter - -Returns internal dialect instance - - - -public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Returns the first row in a SQL query result - -.. code-block:: php - - fetchOne("SELECT * FROM robots"); - print_r($robot); - - //Getting first robot with associative indexes only - $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - print_r($robot); - - - - -public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Dumps the complete result of a query into an array - -.. code-block:: php - - fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - foreach ($robots as $robot) { - print_r($robot); - } - - //Getting all robots that contains word "robot" withing the name - $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", - Phalcon\Db::FETCH_ASSOC, - array('name' => '%robot%') - ); - foreach($robots as $robot){ - print_r($robot); - } - - - - -public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) inherited from Phalcon\\Db\\Adapter - -Returns the n'th field of first row in a SQL query result - -.. code-block:: php - - fetchColumn("SELECT count(*) FROM robots"); - print_r($robotsCount); - - //Getting name of last edited robot - $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); - print_r($robot); - - - - -public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - // Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insertAsDict( - "robots", - array( - "name" => "Astro Boy", - "year" => 1952 - ) - ); - - //Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax - -.. code-block:: php - - update( - "robots", - array("name"), - array("New Astro Boy"), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - //Updating existing robot with array condition and $dataTypes - $success = $connection->update( - "robots", - array("name"), - array("New Astro Boy"), - array( - 'conditions' => "id = ?", - 'bind' => array($some_unsafe_id), - 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param - ), - array(PDO::PARAM_STR) - ); - -Warning! If $whereCondition is string it not escaped. - - - -public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax - -.. code-block:: php - - update( - "robots", - array( - "name" => "New Astro Boy" - ), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - - - -public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Deletes data from a table using custom RBDM SQL syntax - -.. code-block:: php - - delete( - "robots", - "id = 101" - ); - - //Next SQL sentence is generated - DELETE FROM `robots` WHERE `id` = 101 - - - - -public *string* **getColumnList** (*array* $columnList) inherited from Phalcon\\Db\\Adapter - -Gets a list of columns - - - -public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Adapter - -Appends a LIMIT clause to $sqlQuery argument - -.. code-block:: php - - limit("SELECT * FROM robots", 5); - - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("blog", "posts")); - - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.view - -.. code-block:: php - - viewExists("active_users", "posts")); - - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a FOR UPDATE clause - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a LOCK IN SHARE MODE clause - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - -public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a table from a schema/database - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Creates a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a view - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Adds a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter - -Drops a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\Adapter - -Drop an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds a primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\Adapter - -Drops a table's primary key - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\Adapter - -Adds a foreign key to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\Adapter - -Drops a foreign key from a table - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Returns the SQL column definition from a column - - - -public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all tables on a database - -.. code-block:: php - - listTables("blog")); - - - - -public **listViews** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all views on a database - -.. code-block:: php - - listViews("blog")); - - - - -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - -public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Gets creation options from a table - -.. code-block:: php - - tableOptions('robots')); - - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Creates a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Releases given savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Rollbacks given savepoint - - - -public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) inherited from Phalcon\\Db\\Adapter - -Set if nested transactions should use savepoints - - - -public **isNestedTransactionsWithSavepoints** () inherited from Phalcon\\Db\\Adapter - -Returns if nested transactions should use savepoints - - - -public **getNestedTransactionSavepointName** () inherited from Phalcon\\Db\\Adapter - -Returns the savepoint name to use for nested transactions - - - -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter - -Returns the default value to make the RBDM use the default value declared in the table definition - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") - ); - - - - -public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter - -Return descriptor used to connect to the active database - - - -public *string* **getConnectionId** () inherited from Phalcon\\Db\\Adapter - -Gets the active connection unique identifier - - - -public **getSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - -public **getRealSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object without replace bound paramters - - - -public *array* **getSQLBindTypes** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - diff --git a/uk/api/Phalcon_Db_Dialect_Oracle.rst b/uk/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/uk/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/uk/api/index.rst b/uk/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/uk/api/index.rst +++ b/uk/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/uk/conf.py b/uk/conf.py index c9bfc5a92524..b9195a7009bf 100644 --- a/uk/conf.py +++ b/uk/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/uk/reference/config.rst b/uk/reference/config.rst index b6cb1e8de73e..a89f18bbb60d 100644 --- a/uk/reference/config.rst +++ b/uk/reference/config.rst @@ -149,3 +149,38 @@ The above code produces the following: ) There are more adapters available for this components in the `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/uk/reference/db.rst b/uk/reference/db.rst index 0de393fdc5c8..a9bf2b0a7d58 100644 --- a/uk/reference/db.rst +++ b/uk/reference/db.rst @@ -25,8 +25,6 @@ database engines are supported: +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle is an object-relational database management system produced and marketed by Oracle Corporation. | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Implementing your own adapters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,8 +44,6 @@ Phalcon encapsulates the specific details of each database engine in dialects. T +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQL specific dialect for SQLite database system | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | SQL specific dialect for Oracle database system | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ Implementing your own dialects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -106,28 +102,6 @@ below shows how to create a connection passing both required and optional parame // Create a connection $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // Advanced configuration - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // Create a connection - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - Setting up additional PDO options --------------------------------- You can set PDO options at connection time by passing the parameters 'options': diff --git a/uk/reference/routing.rst b/uk/reference/routing.rst index 11488227e43a..0ac481ebbc96 100644 --- a/uk/reference/routing.rst +++ b/uk/reference/routing.rst @@ -830,10 +830,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); Hostname Constraints -------------------- diff --git a/zh/api/Phalcon_Db_Adapter_Pdo_Oracle.rst b/zh/api/Phalcon_Db_Adapter_Pdo_Oracle.rst deleted file mode 100644 index 1ed2fd825010..000000000000 --- a/zh/api/Phalcon_Db_Adapter_Pdo_Oracle.rst +++ /dev/null @@ -1,775 +0,0 @@ -Class **Phalcon\\Db\\Adapter\\Pdo\\Oracle** -=========================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Adapter\\Pdo ` - -*implements* :doc:`Phalcon\\Events\\EventsAwareInterface `, :doc:`Phalcon\\Db\\AdapterInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Specific functions for the Oracle database system - -.. code-block:: php - - "//localhost/dbname", - "username" => "oracle", - "password" => "oracle" - ); - - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - - - -Methods -------- - -public *boolean* **connect** ([*array* $descriptor]) - -This method is automatically called in Phalcon\\Db\\Adapter\\Pdo constructor. Call it when you need to restore a database connection. - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Returns an array of Phalcon\\Db\\Column objects describing a table print_r($connection->describeColumns("posts")); ?> - - - -public **lastInsertId** ([*unknown* $sequenceName]) - -Returns the insert id for the auto_increment/serial column inserted in the lastest executed SQL statement - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - //Getting the generated id - $id = $connection->lastInsertId(); - - - - -public **useExplicitIdValue** () - -Check whether the database system requires an explicit value for identity columns - - - -public **getDefaultIdValue** () - -Return the default identity value to insert in an identity column - - - -public **supportSequences** () - -Check whether the database system requires a sequence to produce auto-numeric values - - - -public **__construct** (*array* $descriptor) inherited from Phalcon\\Db\\Adapter\\Pdo - -Constructor for Phalcon\\Db\\Adapter\\Pdo - - - -public **prepare** (*unknown* $sqlStatement) inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns a PDO prepared statement to be executed with 'executePrepared' - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public *\PDOStatement* **executePrepared** (*\PDOStatement* $statement, *array* $placeholders, *array* $dataTypes) inherited from Phalcon\\Db\\Adapter\\Pdo - -Executes a prepared statement binding. This function uses integer indexes starting from zero - -.. code-block:: php - - prepare('SELECT * FROM robots WHERE name = :name'); - $result = $connection->executePrepared($statement, array('name' => 'Voltron')); - - - - -public **query** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows - -.. code-block:: php - - query("SELECT * FROM robots WHERE type='mechanical'"); - $resultset = $connection->query("SELECT * FROM robots WHERE type=?", array("mechanical")); - - - - -public **execute** (*unknown* $sqlStatement, [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server doesn't return any rows - -.. code-block:: php - - execute("INSERT INTO robots VALUES (1, 'Astro Boy')"); - $success = $connection->execute("INSERT INTO robots VALUES (?, ?)", array(1, 'Astro Boy')); - - - - -public **affectedRows** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the number of affected rows by the lastest INSERT/UPDATE/DELETE executed in the database system - -.. code-block:: php - - execute("DELETE FROM robots"); - echo $connection->affectedRows(), ' were deleted'; - - - - -public **close** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends - - - -public *string* **escapeIdentifier** (*string* $identifier) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a column/table/schema name - -.. code-block:: php - - escapeIdentifier('robots'); - $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); - - - - -public **escapeString** (*unknown* $str) inherited from Phalcon\\Db\\Adapter\\Pdo - -Escapes a value to avoid SQL injections according to the active charset in the connection - -.. code-block:: php - - escapeString('some dangerous value'); - - - - -public **convertBoundParams** (*unknown* $sql, [*array* $params]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Converts bound parameters such as :name: or ?1 into PDO bind params ? - -.. code-block:: php - - convertBoundParams('SELECT * FROM robots WHERE name = :name:', array('Bender'))); - - - - -public **begin** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Starts a transaction in the connection - - - -public **rollback** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Rollbacks the active transaction in the connection - - - -public **commit** ([*unknown* $nesting]) inherited from Phalcon\\Db\\Adapter\\Pdo - -Commits the active transaction in the connection - - - -public **getTransactionLevel** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Returns the current transaction nesting level - - - -public **isUnderTransaction** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Checks whether the connection is under a transaction - -.. code-block:: php - - begin(); - var_dump($connection->isUnderTransaction()); //true - - - - -public **getInternalHandler** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return internal PDO handler - - - -public *array* **getErrorInfo** () inherited from Phalcon\\Db\\Adapter\\Pdo - -Return the error info, if any - - - -public **getDialectType** () inherited from Phalcon\\Db\\Adapter - -Name of the dialect used - - - -public **getType** () inherited from Phalcon\\Db\\Adapter - -Type of database system the adapter is used for - - - -public **getSqlVariables** () inherited from Phalcon\\Db\\Adapter - -Active SQL bound parameter variables - - - -public **setEventsManager** (:doc:`Phalcon\\Events\\ManagerInterface ` $eventsManager) inherited from Phalcon\\Db\\Adapter - -Sets the event manager - - - -public **getEventsManager** () inherited from Phalcon\\Db\\Adapter - -Returns the internal event manager - - - -public **setDialect** (:doc:`Phalcon\\Db\\DialectInterface ` $dialect) inherited from Phalcon\\Db\\Adapter - -Sets the dialect used to produce the SQL - - - -public **getDialect** () inherited from Phalcon\\Db\\Adapter - -Returns internal dialect instance - - - -public **fetchOne** (*unknown* $sqlQuery, [*unknown* $fetchMode], [*unknown* $bindParams], [*unknown* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Returns the first row in a SQL query result - -.. code-block:: php - - fetchOne("SELECT * FROM robots"); - print_r($robot); - - //Getting first robot with associative indexes only - $robot = $connection->fetchOne("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - print_r($robot); - - - - -public *array* **fetchAll** (*string* $sqlQuery, [*int* $fetchMode], [*array* $bindParams], [*array* $bindTypes]) inherited from Phalcon\\Db\\Adapter - -Dumps the complete result of a query into an array - -.. code-block:: php - - fetchAll("SELECT * FROM robots", Phalcon\Db::FETCH_ASSOC); - foreach ($robots as $robot) { - print_r($robot); - } - - //Getting all robots that contains word "robot" withing the name - $robots = $connection->fetchAll("SELECT * FROM robots WHERE name LIKE :name", - Phalcon\Db::FETCH_ASSOC, - array('name' => '%robot%') - ); - foreach($robots as $robot){ - print_r($robot); - } - - - - -public *string|* **fetchColumn** (*string* $sqlQuery, [*array* $placeholders], [*int|string* $column]) inherited from Phalcon\\Db\\Adapter - -Returns the n'th field of first row in a SQL query result - -.. code-block:: php - - fetchColumn("SELECT count(*) FROM robots"); - print_r($robotsCount); - - //Getting name of last edited robot - $robot = $connection->fetchColumn("SELECT id, name FROM robots order by modified desc", 1); - print_r($robot); - - - - -public *boolean* **insert** (*string|array* $table, *array* $values, [*array* $fields], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", 1952), - array("name", "year") - ); - - // Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **insertAsDict** (*string* $table, *array* $data, [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Inserts data into a table using custom RBDM SQL syntax - -.. code-block:: php - - insertAsDict( - "robots", - array( - "name" => "Astro Boy", - "year" => 1952 - ) - ); - - //Next SQL sentence is sent to the database system - INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952); - - - - -public *boolean* **update** (*string|array* $table, *array* $fields, *array* $values, [*string|array* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax - -.. code-block:: php - - update( - "robots", - array("name"), - array("New Astro Boy"), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - //Updating existing robot with array condition and $dataTypes - $success = $connection->update( - "robots", - array("name"), - array("New Astro Boy"), - array( - 'conditions' => "id = ?", - 'bind' => array($some_unsafe_id), - 'bindTypes' => array(PDO::PARAM_INT) //use only if you use $dataTypes param - ), - array(PDO::PARAM_STR) - ); - -Warning! If $whereCondition is string it not escaped. - - - -public *boolean* **updateAsDict** (*string* $table, *array* $data, [*string* $whereCondition], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax - -.. code-block:: php - - update( - "robots", - array( - "name" => "New Astro Boy" - ), - "id = 101" - ); - - //Next SQL sentence is sent to the database system - UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101 - - - - -public *boolean* **delete** (*string|array* $table, [*string* $whereCondition], [*array* $placeholders], [*array* $dataTypes]) inherited from Phalcon\\Db\\Adapter - -Deletes data from a table using custom RBDM SQL syntax - -.. code-block:: php - - delete( - "robots", - "id = 101" - ); - - //Next SQL sentence is generated - DELETE FROM `robots` WHERE `id` = 101 - - - - -public *string* **getColumnList** (*array* $columnList) inherited from Phalcon\\Db\\Adapter - -Gets a list of columns - - - -public **limit** (*unknown* $sqlQuery, *unknown* $number) inherited from Phalcon\\Db\\Adapter - -Appends a LIMIT clause to $sqlQuery argument - -.. code-block:: php - - limit("SELECT * FROM robots", 5); - - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("blog", "posts")); - - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Generates SQL checking for the existence of a schema.view - -.. code-block:: php - - viewExists("active_users", "posts")); - - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a FOR UPDATE clause - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Adapter - -Returns a SQL modified with a LOCK IN SHARE MODE clause - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) inherited from Phalcon\\Db\\Adapter - -Creates a table - - - -public **dropTable** (*unknown* $tableName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a table from a schema/database - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Creates a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) inherited from Phalcon\\Db\\Adapter - -Drops a view - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Adds a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) inherited from Phalcon\\Db\\Adapter - -Modifies a table column based on a definition - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) inherited from Phalcon\\Db\\Adapter - -Drops a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) inherited from Phalcon\\Db\\Adapter - -Drop an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) inherited from Phalcon\\Db\\Adapter - -Adds a primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) inherited from Phalcon\\Db\\Adapter - -Drops a table's primary key - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) inherited from Phalcon\\Db\\Adapter - -Adds a foreign key to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) inherited from Phalcon\\Db\\Adapter - -Drops a foreign key from a table - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) inherited from Phalcon\\Db\\Adapter - -Returns the SQL column definition from a column - - - -public **listTables** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all tables on a database - -.. code-block:: php - - listTables("blog")); - - - - -public **listViews** ([*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -List all views on a database - -.. code-block:: php - - listViews("blog")); - - - - -public :doc:`Phalcon\\Db\\Index ` [] **describeIndexes** (*string* $table, [*string* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table indexes - -.. code-block:: php - - describeIndexes('robots_parts')); - - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) inherited from Phalcon\\Db\\Adapter - -Lists table references - -.. code-block:: php - - describeReferences('robots_parts')); - - - - -public **tableOptions** (*unknown* $tableName, [*unknown* $schemaName]) inherited from Phalcon\\Db\\Adapter - -Gets creation options from a table - -.. code-block:: php - - tableOptions('robots')); - - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Creates a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Releases given savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Adapter - -Rollbacks given savepoint - - - -public **setNestedTransactionsWithSavepoints** (*unknown* $nestedTransactionsWithSavepoints) inherited from Phalcon\\Db\\Adapter - -Set if nested transactions should use savepoints - - - -public **isNestedTransactionsWithSavepoints** () inherited from Phalcon\\Db\\Adapter - -Returns if nested transactions should use savepoints - - - -public **getNestedTransactionSavepointName** () inherited from Phalcon\\Db\\Adapter - -Returns the savepoint name to use for nested transactions - - - -public **getDefaultValue** () inherited from Phalcon\\Db\\Adapter - -Returns the default value to make the RBDM use the default value declared in the table definition - -.. code-block:: php - - insert( - "robots", - array("Astro Boy", $connection->getDefaultValue()), - array("name", "year") - ); - - - - -public *array* **getDescriptor** () inherited from Phalcon\\Db\\Adapter - -Return descriptor used to connect to the active database - - - -public *string* **getConnectionId** () inherited from Phalcon\\Db\\Adapter - -Gets the active connection unique identifier - - - -public **getSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - -public **getRealSQLStatement** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object without replace bound paramters - - - -public *array* **getSQLBindTypes** () inherited from Phalcon\\Db\\Adapter - -Active SQL statement in the object - - - diff --git a/zh/api/Phalcon_Db_Dialect_Oracle.rst b/zh/api/Phalcon_Db_Dialect_Oracle.rst deleted file mode 100644 index 48db9b95213d..000000000000 --- a/zh/api/Phalcon_Db_Dialect_Oracle.rst +++ /dev/null @@ -1,417 +0,0 @@ -Class **Phalcon\\Db\\Dialect\\Oracle** -====================================== - -*extends* abstract class :doc:`Phalcon\\Db\\Dialect ` - -*implements* :doc:`Phalcon\\Db\\DialectInterface ` - -.. role:: raw-html(raw) - :format: html - -:raw-html:`Source on GitHub` - -Generates database specific SQL for the Oracle RDBMS - - -Methods -------- - -public **limit** (*unknown* $sqlQuery, *unknown* $number) - -Generates the SQL for LIMIT clause - - - -public **getColumnDefinition** (:doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Gets the column name in Oracle - - - -public **addColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column) - -Generates SQL to add a column to a table - - - -public **modifyColumn** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ColumnInterface ` $column, [:doc:`Phalcon\\Db\\ColumnInterface ` $currentColumn]) - -Generates SQL to modify a column in a table - - - -public **dropColumn** (*unknown* $tableName, *unknown* $schemaName, *unknown* $columnName) - -Generates SQL to delete a column from a table - - - -public **addIndex** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add an index to a table - - - -public **dropIndex** (*unknown* $tableName, *unknown* $schemaName, *unknown* $indexName) - -/** /** Generates SQL to delete an index from a table - - - -public **addPrimaryKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\IndexInterface ` $index) - -Generates SQL to add the primary key to a table - - - -public **dropPrimaryKey** (*unknown* $tableName, *unknown* $schemaName) - -Generates SQL to delete primary key from a table - - - -public **addForeignKey** (*unknown* $tableName, *unknown* $schemaName, :doc:`Phalcon\\Db\\ReferenceInterface ` $reference) - -Generates SQL to add an index to a table - - - -public **dropForeignKey** (*unknown* $tableName, *unknown* $schemaName, *unknown* $referenceName) - -Generates SQL to delete a foreign key from a table - - - -public **createTable** (*unknown* $tableName, *unknown* $schemaName, *array* $definition) - -Generates SQL to create a table in Oracle - - - -public **dropTable** (*unknown* $tableName, *unknown* $schemaName, [*unknown* $ifExists]) - -Generates SQL to drop a table - - - -public **createView** (*unknown* $viewName, *array* $definition, [*unknown* $schemaName]) - -Generates SQL to create a view - - - -public **dropView** (*unknown* $viewName, [*unknown* $schemaName], [*unknown* $ifExists]) - -Generates SQL to drop a view - - - -public **viewExists** (*unknown* $viewName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.view - - - -public **listViews** ([*unknown* $schemaName]) - -Generates the SQL to list all views of a schema or user - - - -public **tableExists** (*unknown* $tableName, [*unknown* $schemaName]) - -Generates SQL checking for the existence of a schema.table - -.. code-block:: php - - tableExists("posts", "blog"); - echo $dialect->tableExists("posts"); - - - - -public **describeColumns** (*unknown* $table, [*unknown* $schema]) - -Generates SQL describing a table - -.. code-block:: php - - describeColumns("posts")); - - - - -public **listTables** ([*unknown* $schemaName]) - -List all tables in database - -.. code-block:: php - - listTables("blog")) - - - - -public **describeIndexes** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query indexes on a table - - - -public **describeReferences** (*unknown* $table, [*unknown* $schema]) - -Generates SQL to query foreign keys on a table - - - -public **tableOptions** (*unknown* $table, [*unknown* $schema]) - -Generates the SQL to describe the table creation options - - - -public **supportsSavepoints** () - -Checks whether the platform supports savepoints - - - -public **supportsReleaseSavepoints** () - -Checks whether the platform supports releasing savepoints. - - - -protected **prepareTable** (*unknown* $table, [*unknown* $schema], [*unknown* $alias], [*unknown* $escapeChar]) - -Prepares table for this RDBMS - - - -public **registerCustomFunction** (*unknown* $name, *unknown* $customFunction) inherited from Phalcon\\Db\\Dialect - -Registers custom SQL functions - - - -public **getCustomFunctions** () inherited from Phalcon\\Db\\Dialect - -Returns registered functions - - - -final public **escape** (*unknown* $str, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Escape identifiers - - - -public **forUpdate** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a FOR UPDATE clause - -.. code-block:: php - - forUpdate('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots FOR UPDATE - - - - -public **sharedLock** (*unknown* $sqlQuery) inherited from Phalcon\\Db\\Dialect - -Returns a SQL modified with a LOCK IN SHARE MODE clause - -.. code-block:: php - - sharedLock('SELECT * FROM robots'); - echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE - - - - -final public **getColumnList** (*array* $columnList, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Gets a list of columns with escaped identifiers - -.. code-block:: php - - getColumnList(array('column1', 'column')); - - - - -final public **getSqlColumn** (*unknown* $column, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -public **getSqlExpression** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Transforms an intermediate representation for a expression into a database system valid expression - - - -final public **getSqlTable** (*unknown* $table, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Transform an intermediate representation of a schema/table into a database system valid expression - - - -public **select** (*array* $definition) inherited from Phalcon\\Db\\Dialect - -Builds a SELECT statement - - - -public **createSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to create a new savepoint - - - -public **releaseSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to release a savepoint - - - -public **rollbackSavepoint** (*unknown* $name) inherited from Phalcon\\Db\\Dialect - -Generate SQL to rollback a savepoint - - - -final protected **getSqlExpressionScalar** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Column expressions - - - -final protected **getSqlExpressionObject** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve object expressions - - - -final protected **getSqlExpressionQualified** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve qualified expressions - - - -final protected **getSqlExpressionBinaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve binary operations expressions - - - -final protected **getSqlExpressionUnaryOperations** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve unary operations expressions - - - -final protected **getSqlExpressionFunctionCall** (*array* $expression, *unknown* $escapeChar, [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve function calls - - - -final protected **getSqlExpressionList** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve Lists - - - -final protected **getSqlExpressionAll** (*array* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve * - - - -final protected **getSqlExpressionCastValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CAST of values - - - -final protected **getSqlExpressionConvertValue** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CONVERT of values encodings - - - -final protected **getSqlExpressionCase** (*array* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve CASE expressions - - - -final protected **getSqlExpressionFrom** (*unknown* $expression, [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Resolve a FROM clause - - - -final protected **getSqlExpressionJoins** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a JOINs clause - - - -final protected **getSqlExpressionWhere** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a WHERE clause - - - -final protected **getSqlExpressionGroupBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a GROUP BY clause - - - -final protected **getSqlExpressionHaving** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a HAVING clause - - - -final protected **getSqlExpressionOrderBy** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a ORDER BY clause - - - -final protected **getSqlExpressionLimit** (*unknown* $expression, [*unknown* $escapeChar], [*unknown* $bindCounts]) inherited from Phalcon\\Db\\Dialect - -Resolve a LIMIT clause - - - -protected **prepareColumnAlias** (*unknown* $qualified, [*unknown* $alias], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares column for this RDBMS - - - -protected **prepareQualified** (*unknown* $column, [*unknown* $domain], [*unknown* $escapeChar]) inherited from Phalcon\\Db\\Dialect - -Prepares qualified for this RDBMS - - - diff --git a/zh/api/index.rst b/zh/api/index.rst index 23247c1636d2..24b4af7663c6 100644 --- a/zh/api/index.rst +++ b/zh/api/index.rst @@ -69,13 +69,11 @@ API Indice Phalcon_Db_Adapter Phalcon_Db_Adapter_Pdo Phalcon_Db_Adapter_Pdo_Mysql - Phalcon_Db_Adapter_Pdo_Oracle Phalcon_Db_Adapter_Pdo_Postgresql Phalcon_Db_Adapter_Pdo_Sqlite Phalcon_Db_Column Phalcon_Db_Dialect Phalcon_Db_Dialect_MySQL - Phalcon_Db_Dialect_Oracle Phalcon_Db_Dialect_Postgresql Phalcon_Db_Dialect_Sqlite Phalcon_Db_Exception diff --git a/zh/conf.py b/zh/conf.py index c06704f88ce9..ac31b0d3a0da 100644 --- a/zh/conf.py +++ b/zh/conf.py @@ -48,10 +48,10 @@ # built documents. # # The short X.Y version. -version = '2.0.x' +version = '3.0.x' # The full version, including alpha/beta/rc tags. -release = '2.0.13' +release = '3.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/zh/reference/config.rst b/zh/reference/config.rst index e2548aca387c..81accc4b2137 100644 --- a/zh/reference/config.rst +++ b/zh/reference/config.rst @@ -146,3 +146,38 @@ INI文件是存储设置的常用方法。 :doc:`Phalcon\\Config <../api/Phalcon ) 有更多的适配器可用于这个组件: `Phalcon Incubator `_ + +Injecting Configuration Dependency +---------------------------------- +You can inject configuration dependency to controller allowing us to use :doc:`Phalcon\\Config <../api/Phalcon_Config>` inside :doc:`Phalcon\\Mvc\\Controller <../api/Phalcon_Mvc_Controller>`. To be able to do that, add following code inside your dependency injector script. + +.. code-block:: php + + set('config', function () { + $configData = require 'config/config.php'; + return new Config($configData); + }); + +Now in your controller you can access your configuration by using dependency injection feature using name `config` like following code: + +.. code-block:: php + + config->database->dbname; + } + } diff --git a/zh/reference/db.rst b/zh/reference/db.rst index 733b3e97e5ff..241ee5e4294e 100644 --- a/zh/reference/db.rst +++ b/zh/reference/db.rst @@ -23,8 +23,6 @@ +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ | SQLite | SQLite是一个实现一个自包含的,无服务器,零配置,支持事务的SQL数据库引擎的软件库 | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Sqlite <../api/Phalcon_Db_Adapter_Pdo_Sqlite>` | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Oracle | Oracle是一个对象-关系数据库,由甲骨文公司生产和销售。 | :doc:`Phalcon\\Db\\Adapter\\Pdo\\Oracle <../api/Phalcon_Db_Adapter_Pdo_Oracle>` | -+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ 自定义适配器(Implementing your own adapters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -44,8 +42,6 @@ Phalcon把每个数据库引擎的具体操作封装成“方言”,这些“ +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ | SQLite | SQLite的具体“方言” | :doc:`Phalcon\\Db\\Dialect\\Sqlite <../api/Phalcon_Db_Dialect_Sqlite>` | +------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ -| Oracle | Oracle的具体“方言” | :doc:`Phalcon\\Db\\Dialect\\Oracle <../api/Phalcon_Db_Dialect_Oracle>` | -+------------+-----------------------------------------------------+--------------------------------------------------------------------------------+ 自定义“方言”(Implementing your own dialects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -104,28 +100,6 @@ Phalcon把每个数据库引擎的具体操作封装成“方言”,这些“ // 创建连接 $connection = new \Phalcon\Db\Adapter\Pdo\Sqlite($config); -.. code-block:: php - - 'scott', - 'password' => 'tiger', - 'dbname' => '192.168.10.145/orcl' - ); - - // 高级配置信息 - $config = array( - 'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))', - 'username' => 'scott', - 'password' => 'tiger', - 'charset' => 'AL32UTF8' - ); - - // 创建连接 - $connection = new \Phalcon\Db\Adapter\Pdo\Oracle($config); - 设置额外的 PDO 选项(Setting up additional PDO options) -------------------------------------------------------- 你可以在连接的时候,通过传递'options'参数,设置PDO选项: diff --git a/zh/reference/routing.rst b/zh/reference/routing.rst index 72dd393cd8df..b639e0764903 100644 --- a/zh/reference/routing.rst +++ b/zh/reference/routing.rst @@ -831,10 +831,32 @@ And use this class instead of the anonymous function: add('/get/info/{id}', array( + $router->add('/get/info/{id}', [ 'controller' => 'products', 'action' => 'info' - ))->beforeMatch(array(new AjaxFilter(), 'check')); + ])->beforeMatch([new AjaxFilter(), 'check']); + +Since Phalcon 2.1.0 beta 1, there is another way to check this: + +.. code-block:: php + + add('/login', [ + 'module' => 'admin', + 'controller' => 'session' + ])->beforeMatch(function ($uri, $route) { + /** + * @var string $uri + * @var \Phalcon\Mvc\Router\Route $route + * @var \Phalcon\DiInterface $this + * @var \Phalcon\Http\Request $request + */ + $request = $this->getShared('request'); + + // Check if the request was made with Ajax + return $request->isAjax(); + }); 限制主机名(Hostname Constraints) ----------------------------------