#phalcon
Tabla de contenido
Acerca de 1
Observaciones 2
Enlaces útiles: 2
Versiones 2
Examples 3
Instalación 3
Windows 3
Plataformas linux 3
Usuarios de Ubuntu 4
Mac OS X 4
Homebrew 4
Examples 6
Examples 7
Examples 9
Examples 10
Capítulo 6: Incubadora 14
Examples 14
Introducción 14
Instalación 14
Uso 16
Sintaxis 17
Observaciones 17
Examples 17
Creando un ACL 17
Capítulo 8: Validación 21
Observaciones 21
Examples 21
Construido en validadores 21
Creditos 24
Acerca de
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: phalcon
It is an unofficial and free phalcon ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official phalcon.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/es/home 1
Capítulo 1: Empezando con phalcon
Observaciones
Phalcon es un framework de código abierto y de pila completa para PHP.
La funcionalidad se expone como clases de PHP listas para ser utilizadas. Escrito como una
extensión C, está optimizado para un rendimiento extremadamente alto, siendo el marco más
rápido posible disponible para los desarrolladores de PHP.
Enlaces útiles:
Recurso Enlazar
Equipo https://phalconphp.com/en/team
Documentación https://docs.phalconphp.com/
Foro https://forum.phalconphp.com/
Blog https://blog.phalconphp.com/
GitHub https://github.com/phalcon/cphalcon
Versiones
2.0.0 2014-04-17
2.0.1 2015-05-08
2.0.2 2015-05-25
2.0.3 2015-06-10
2.0.4 2015-07-07
https://riptutorial.com/es/home 2
Versión Fecha de lanzamiento
2.0.5 2015-07-14
2.0.6 2015-07-21
2.0.7 2015-08-17
2.0.8 2015-09-25
2.0.9 2015-11-23
2.0.10 2016-02-04
2.0.11 2016-05-04
2.0.12 2016-05-16
2.0.13 2016-05-24
3.0.0 2016-07-29
3.0.1 2016-08-24
Examples
Instalación
Descargue los archivos de instalación de la página de descarga dedicada de Phalcon, así como
también busque manuales sobre cómo hacer que Phalcon funcione con plataformas populares.
Windows
Coloque los archivos DLL reales en un directorio adecuado para ampliar la funcionalidad de PHP.
Para XAMPP use xampp\php\ext\ - y para WAMP use wamp\bin\php\php*\ext\ derectory. Luego
habilite Phalcon agregando extension=php_phalcon.dll al archivo php.ini apropiado. Reinicie el
servidor web y Phalcon debería estar disponible.
Plataformas linux
Para compilar la versión deseada de Phalcon, primero instale las fuentes PHP junto con algunas
otras herramientas necesarias:
#Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
https://riptutorial.com/es/home 3
#Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
#RHEL
sudo yum install php-devel php-mysql gcc libtool
#Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
Después de que todos estén correctamente instalados, Phalcon puede ser compilado:
Usuarios de Ubuntu
Es posible instalar Phalcon directamente desde los repositorios usando los siguientes comandos:
Mac OS X
Homebrew
Si tiene instalado brew, primero debe tocar homebrew-php:
Después de eso necesitas determinar tu versión de PHP. Esto se puede hacer a través del
comando:
php -v
El comando producirá algo similar a PHP 5.6.22 que desea que el primer y segundo número, que
https://riptutorial.com/es/home 4
son 5 y 6 en este caso. Luego ejecuta el siguiente comando para instalar la versión adecuada
(reemplazando 5 y 6 con la versión que tienes):
Fuentes:
• https://docs.phalconphp.com/en/latest/reference/install.html#mac-os-x
https://riptutorial.com/es/home 5
Capítulo 2: Encargado de eventos
Examples
Comprobación dinámica de ACL
<?php
namespace Plugins;
use Phalcon\Events\Event;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Acl;
use Phalcon\Acl\Role;
use Phalcon\Acl\Resource;
use Phalcon\Acl\Adapter\Memory as AclList;
https://riptutorial.com/es/home 6
Capítulo 3: Enrutamiento y despacho
Examples
Rutas API RESTful para aplicaciones de múltiples módulos
curl -i -X POST -d
'{"name": "John Snow", "title": "King of the North"}'
http://example.com/api/v1/users
// make a group to avoid setting namespace and module for every route definition
$moduleGroup = new \Phalcon\Mvc\Router\Group([
'namespace' => $namespace,
'module' => $module
]);
https://riptutorial.com/es/home 7
]);
$router->mount($moduleGroup);
}
return $router;
https://riptutorial.com/es/home 8
Capítulo 4: Filtrado y desinfección
Examples
Conveniente desinfección en el modelo
namespace Base;
$this->sanitize('email', 'email');
// input $this->email: youre(-)mail@dom/ain.com
// output: youremail@domain.com
$this->sanitize('wage', 'float');
// input $this->wage: +1234ab.56cd
// output: 1234.56
$this->sanitize('name', 'string');
// input $this->name: <john>
// output: john
}
}
https://riptutorial.com/es/home 9
Capítulo 5: Gestión de base de datos
Examples
Usando SQL estándar directamente con modelos
Para usar la sintaxis SQL con el modelo, que transferiría el resultado a las instancias adecuadas,
debe usar directamente una de las clases Phalcon \ Mvc \ Model \ Resultset:
Se puede crear un modelo para una nueva tabla ejecutando la siguiente recomendación desde la
ubicación raíz del terminal:
SELECCIONAR
Hay dos funciones predeterminadas para realizar la operación de selección en phalcon, find() y
findFirst()
se usa para obtener la primera fila que satisface las condiciones que estamos
findFirst()
pasando. Devuelve un solo objeto con los datos en la primera fila.
Ejemplo:
Esto devuelve al usuario con el correo electrónico dado y el valor de la columna verificado y activo
es 1
https://riptutorial.com/es/home 10
find() se usa para obtener todas las filas que satisfacen las condiciones que estamos pasando.
Ejemplo:
INSERTAR
$user->name = "Arun";
$user->email = "abc@gmail.com";
$user->verified = 1;
$user->active = 1;
$user->save();
ACTUALIZAR
Primero tenemos que seleccionar la fila que tenemos que actualizar usando findFirst()
$user = Users::findFirst("email='a@a.com'");
$user->verified = 0;
$user->active = 0;
$user->save();
Esto cambiará los valores de la columna verificada y activa para la fila con el correo electrónico
dado.
Ejemplo:
Users::findFirst("email='a@a.com'")->delete();
También puede ejecutar comandos SQL personalizados con modelos usando el siguiente código:
$user = $query->execute();
https://riptutorial.com/es/home 11
Configuración del servicio de conexión por defecto
Phalcon usa el servicio db por defecto para obtener conexión a las bases de datos.
Suponiendo que tiene un archivo de configuración con un campo de database configurado, puede
incluir o cargar automáticamente el siguiente código para obtener la conexión con la base de
datos para su proyecto:
case 'mysql':
return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
'host' => $dbconf->host,
'username' => $dbconf->username,
'password' => $dbconf->password,
// default database to work with
'dbname' => $dbconf->dbname,
// default character set
'charset' => $dbconf->charset,
// connection warm-up commands for PDO
'options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "' . $dbconf->charset . '"',
PDO::ATTR_CASE => PDO::CASE_LOWER
)
));
case 'postgresql':
return new \Phalcon\Db\Adapter\Pdo\Postgresql(array(
'host' => $dbconf->host,
'username' => $dbconf->username,
'password' => $dbconf->password,
'dbname' => $dbconf->dbname,
'options' => array(
)
));
default:
throw new \Exception('Unimplemented database::adapter in config.ini');
}
});
Phalcon recopila cierta información sobre las tablas que está utilizando, por lo que es posible
validar los datos que se insertan en ellas sin implementar todo a mano. Esos son metadatos para
los modelos. Para acelerar y evitar que Phalcon genere Meta Data cada vez que se actualice la
página, es posible almacenarlos en caché. Para hacerlo, necesita implementar el servicio de
metaData para que lo use:
https://riptutorial.com/es/home 12
switch (strtolower($config->models->metadata->adapter)) {
case 'apc':
$metaData = new MetaDataApcAdapter([
'lifetime' => $config->models->metadata->lifetime,
'suffix' => $config->models->metadata->suffix,
]);
break;
case 'xcache':
$metaData = new MetaDataXCacheAdapter([
'lifetime' => $config->models->metadata->lifetime,
'prefix' => $config->models->metadata->suffix,
]);
break;
case 'memory':
$metaData = new MetaDataMemoryAdapter();
break;
default:
throw new \Exception('Unimplemented models::metadata.adapter in config.ini');
}
return $metaData;
});
https://riptutorial.com/es/home 13
Capítulo 6: Incubadora
Examples
Introducción
La comunidad puede usar la Incubadora Phalcon para experimentar con nuevas funciones o
expandirse a los adaptadores, prototipos o funcionalidades existentes de Phalcon.
Instalación
|-- app
|-- public
| `-- index.php
|-- vendor
|-- composer.json
Agregue el siguiente contenido al archivo composer.json . Si todavía está utilizando Phalcon 2.0.x
{
"require": {
"phalcon/incubator": "^2.0"
}
}
{
"require": {
"phalcon/incubator": "~3.0"
}
}
Después de modificar el archivo composer.json , debe ejecutar el siguiente comando, desde la raíz
de su proyecto.
https://riptutorial.com/es/home 14
Si ya instaló sus archivos y desea actualizarlos en su lugar. A continuación, utilice la update lugar
de install .
Por defecto, Composer creará una nueva carpeta llamada vendor en la raíz de su proyecto y
descargará todos los archivos solicitados en este directorio.
|-- app
|-- public
| `-- index.php
|-- vendor
| `-- phalcon
| `-- incubator
| `-- docs
| `-- Library
| `-- tests
|-- composer.json
|-- app
|-- public
| `-- index.php
|-- vendor
| `-- phalcon
Ahora navegue dentro de la carpeta phalcon y clone la Incubadora desde el repositorio de Github.
|-- app
https://riptutorial.com/es/home 15
|-- public
| `-- index.php
|-- vendor
| `-- phalcon
Uso
$loader->registerNamespaces([
'Phalcon' => '/path/to/your/vendor/phalcon/incubator/Library/Phalcon/',
// any other namespaces you have loaded
// ...
]);
$loader->register();
Ahora puede acceder a todas las funcionalidades de la incubadora utilizando los espacios de
nombres normales de Phalcon:
\Phalcon\Acl\Adapter\Database;
https://riptutorial.com/es/home 16
Capítulo 7: Trabajando con ACL
Sintaxis
• Puede usar '*' como segundo y tercer parámetro en los Phalcon\Acl::allow y
Phalcon\Acl::deny . Esto significará cualquier recurso y acción respectivamente.
• El segundo argumento en Phalcon\Acl::addRole le dice a qué rol de herencia acceso.
Observaciones
• Debería serializar su ACL a algún archivo o respaldo de caché en lugar de crearlo en cada
solicitud.
• También es buena idea mantener la ACL en un archivo separado.
• Phalcon\Acl puede enviar eventos al administrador de eventos, hay dos eventos:
beforeCheckAccess y afterCheckAccess .
• Puede usar Phalcon\Acl\AdapterInterface para implementar su propio adaptador de ACL.
• Puede proteger sus rutas utilizando ACL con la combinación de un oyente adecuado en el
despachador.
Examples
Creando un ACL
Por defecto, phalcon permite la acción al recurso que no se ha definido, para cambiar esto puede
usar:
$acl->setDefaultAction(Phalcon\Acl::DENY);
Los roles se pueden agregar de dos maneras: usando Phalcon\Acl\Role o simplemente una
cadena simple:
Los recursos también se pueden agregar de dos maneras, puede agregar acciones como una
sola acción o como una matriz:
https://riptutorial.com/es/home 17
Definición de control de acceso y consulta de una ACL
Puede verificar si el rol está permitido para alguna acción en el recurso utilizando:
También puede agregar más lógica que debe verificarse en su ACL mediante funciones
anónimas. Se ejecutarán cuando se use Phalcon\Acl\Adapter\Memory::allow() o
Phalcon\Acl\Adapter\Memory::deny() , si devuelven verdadero, su rol podrá acceder a cierta acción
en el recurso.
Observe cómo se pasan los parámetros a la función. Su clave en la matriz debe tener el mismo
nombre que en la función. También se pueden pasar parámetros de parámetros predeterminados,
así como objetos.
https://riptutorial.com/es/home 18
public function getId()
{
return $this->id;
}
También la capacidad de usar objetos se puede combinar con una condición adicional en acl:
https://riptutorial.com/es/home 19
Tenga en cuenta que con la condición adicional y el uso de objetos en el método isAllowed , no es
necesario pasar esos objetos como argumentos. Se pasan automáticamente solo si hay tipos
correctos antes de los argumentos en la función. Esto le brinda una gran capacidad de control si
ciertos usuarios pueden editar, por ejemplo, ciertos modelos en su aplicación y cuándo pueden
hacerlo.
https://riptutorial.com/es/home 20
Capítulo 8: Validación
Observaciones
• La referencia de la API a la clase de validación se puede encontrar aquí:
https://docs.phalconphp.com/en/latest/api/Phalcon_Validation.html
• Si hay una entidad proporcionada en \Phalcon\Validation , no necesita pasar la clave del
modelo en \Phalcon\Validation\Validator\Uniqueness
Examples
Construido en validadores
StringLength : valida que una cadena tenga las restricciones máximas y mínimas especificadas.
La prueba se pasa si para la longitud de una cadena L, min <= L <= max, es decir, L debe ser al
https://riptutorial.com/es/home 21
menos min, y como máximo max.
Regex : permite validar si el valor de un campo coincide con una expresión regular
Entre : valida que un valor se encuentre entre un rango inclusivo de dos valores. Para un valor x,
la prueba se pasa si mínimo <= x <= máximo.
https://riptutorial.com/es/home 22
Componente de validación personalizado reCaptcha de Google
La clase
use Phalcon\Validation\Validator;
use Phalcon\Validation\ValidatorInterface;
use Phalcon\Validation\Message;
$reCaptchaField->addValidator(new \RecaptchaValidator([
'message' => 'Your reCaptcha error message'
]));
https://riptutorial.com/es/home 23
Creditos
S.
Capítulos Contributors
No
Encargado de
2 galki
eventos
Enrutamiento y
3 galki, Nikolay Mihaylov, Timothy
despacho
Filtrado y
4 galki, Timothy
desinfección
Gestión de base de
5 Arun D Nambissan, yergo
datos
6 Incubadora Timothy
https://riptutorial.com/es/home 24