OBS: Este paquete fue reemplazado por el paquete MinasORM.
Un pequeño proyecto CRUD desarrollado para ayudar en las rutinas diarias y acelerar el proceso de comunicación con la base de datos con seguridad y transparencia.
Algunas precauciones e instrucciones paso a paso para descargar e instalar el paquete.
Para poder utilizar SimplePHP necesitarás tener:
PHP ^7.2.5
EXT-PDO *
SimplePHP se puede instalar a través de Composer.json o mediante la terminal de comandos :
composer require nicollassilva/ SimplePHP
o compositor.json :
"nicollassilva/ SimplePHP ": "^1.9"
>>>>>>> Stashed changes
Para configurar la conexión a la base de datos se debe acceder a: SourceRootConfig.php . Ejemplo del archivo a encontrar:
protected $ config = [
" driver " => " mysql " ,
" hostname " => " localhost " ,
" charset " => " utf8mb4 " ,
" port " => 3306 ,
" username " => " root " ,
" password " => "" ,
" database " => "" ,
" timezone " => " America/Sao_Paulo " ,
" pathLog " => __DIR__ . " /../../../../../your-log.log " ,
" options " => [
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
PDO :: ATTR_CASE => PDO :: CASE_NATURAL ,
PDO :: ATTR_ORACLE_NULLS => PDO :: NULL_EMPTY_STRING
]
];
Después de completar la configuración de la base de datos, cree una carpeta en la raíz del proyecto donde estarán sus Modelos y cree la clase.
namespace Models ;
use SimplePHP Model SimplePHP ;
class User extends SimplePHP {
function __construct ()
{
/**
* @param string Table Name
* @param string Primary Key
*/
parent :: __construct ( ' users ' , ' id ' );
}
}
Después de todos los pasos anteriores, cree un index.php en la raíz del proyecto dando un requerimiento en la carga automática del compositor y en su clase de modelo , luego de eso, cree una instancia de su modelo y podrá comenzar a usar SimplePHP . A continuación se muestra un ejemplo:
require " vendor/autoload.php " ;
require " models/user.php " ;
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ()-> execute ();
Error grave: Error no detectado: Clase ' SimplePHP Model SimplePHP ' no encontrada
Para solucionarlo, ejecute el siguiente comando en la carpeta raíz del proyecto:
composer dump -o
use Models User ;
$ userModel = new User ();
/** find all users */
$ user = $ userModel -> find ()-> execute ();
/** find user by id */
$ user = $ userModel -> find ( 5 )-> execute ();
/** find users and return the total result count */
$ count = $ userModel -> count ()-> execute ();
/** find user with one where */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' Nicollas ' ]
])-> execute ();
/** find user with several where. Conditional AND default */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' John ' ],
[ ' email ' , ' = ' , ' [email protected] ' ]
])-> execute ();
/** find user with LIKE. Conditional AND default */
$ user = $ userModel -> where ([
[ ' name ' , ' LIKE ' , ' %Guilherme% ' ],
[ ' email ' , ' = ' , ' [email protected] ' ]
])-> execute ();
/** find user with conditional where. Condicional OR */
$ user = $ userModel -> where ([
[ ' name ' , ' LIKE ' , ' %Nicollas% ' ],
[ ' name ' , ' LIKE ' , ' %Nicolas% ' ]
], ' OR ' )-> execute ();
/** find users by name = Nicollas OR name = Nicolas */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' Nicollas ' ]
])
-> orWhere ([
[ ' name ' , ' = ' , ' Nicolas ' ]
])-> execute ();
/** find user using the basic structure query */
$ user = $ userModel -> whereRaw ( " name = 'Nicollas' " )-> execute ();
/** find users with limit */
$ user = $ userModel -> limit ( 5 )-> execute ();
/** find users with limit & offset */
$ user = $ userModel -> limit ( 5 )-> offset ( 5 )-> execute ();
/** find users with skip & take | the same as limit & offset */
$ user = $ userModel -> take ( 5 )-> skip ( 5 )-> execute ();
/** find users with orderBy. second parameter optional, default ASC */
$ user = $ userModel -> orderBy ( ' id ' , ' DESC ' )-> orderBy ( ' name ' )-> execute ();
/** find users and return results as attributes. EXAMPLE: $user->name instead of $user['name'] */
$ user = $ userModel -> find ()-> execute ( true );
/** find users with specific columns. */
$ user = $ userModel -> find ()-> only ([ ' name ' , ' id ' , ' email ' ])-> execute ();
/** find users creating exceptions in columns. */
$ user = $ userModel -> find ( 5 )-> except ([ ' password ' ])-> execute ();
/** search in other database table */
$ user = ( new User ())-> useTable ( ' posts ' )-> find ()-> where ([[ ' owner_id ' , ' = ' , $ user -> id ]])-> execute ();
/** debug query for possible errors | return string */
$ user = $ userModel -> whereRaw ( " uuid = 'f031b537-672f-4fba-b8a6-af45e778ad93' " )-> debugQuery ();
/** group by method */
$ user = $ userModel -> groupBy ( ' id ' );
Nota: el método excepto() no funciona encadenado con el método ejecutar(verdadero) , solo ejecuta() sin el parámetro verdadero.
Nota: el método except() solo funciona cuando se busca información específica, en matrices multidimensionales no funciona. Esto se solucionará pronto.
Todos los métodos son amigables entre sí, lo que significa que puede realizar consultas complejas. Ejemplo real:
/** Search for a user's posts varying between the privacy in which it was saved */
/** You can pass false as a fourth argument, the class will understand that you are trying to relate tables and will not put single quotes */
$ posts = ( new User ())-> useTable ( ' posts p, users u ' )
-> where ([[ ' u.id ' , ' = ' , $ user [ ' id ' ] ?? $ visit [ ' id ' ]],
[ ' u.id ' , ' = ' , ' p.user_id ' , false ], /** example of the fourth argument for relating tables */
[ ' p.privacity ' , ' <= ' , isset ( $ privacity ) && is_array ( $ privacity ) ? 3 : ( $ visit [ ' url ' ] != $ flag ? 1 : 4 )]])
-> only ([ ' p.* ' , ' u.name ' , ' u.url ' , ' u.i_profile ' ])
-> limit ( 10 )
-> orderBy ( ' p.id ' )
-> execute ();
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 3 )-> execute ( true );
/** @return null|bool */
if ( $ user -> destroy ()) {
echo " Success delete! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 5 )-> execute ( true );
$ user -> name = " Other name " ;
$ user -> email = " [email protected] " ;
/** @return null|bool */
if ( $ user -> save ()) {
echo " Success! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 8 )-> only ([ ' id ' , ' name ' ])-> execute ( true );
$ user -> name = " Russian Gabolev " ;
$ user -> email = " [email protected] " ;
/** This informations was not called from the database, but they exist. */
$ user -> updated_at = time ();
/** @return null|bool */
if ( $ user -> save ()) {
echo " Success! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> request ([
" name " => " Dr. Haylie Bahringer " ,
" email " => ' [email protected] ' ,
" password " => 123456 // Encrypt before sending to the database
])-> create ();
También es posible pasando una matriz directa:
use Models User ;
$ userModel = new User ();
$ _POST = [
" name " => " Hadjei Moccab " ,
" email " => " [email protected] " ,
" password " => 123456 // Encrypt before sending to the database
];
$ user = $ userModel -> request ( $ _POST )-> create ();
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 18 )-> execute ( true );
/** @return string | @param string $hash, @param Array $options */
$ user -> password = $ userModel -> hashFormat ( $ _POST [ ' password ' ]);
/** @return string | @param string $url */
$ user -> home = $ userModel -> urlFormat ( ' Dr. John,Sik!@ ' ); // dr-john-sik
/** @return bool | @param string $email */
if (! $ userModel -> validateEmail ( $ _POST [ ' email ' ])) {
echo " Invalid email! " ;
}
/** @return bool | @param string $pass */
if (! $ userModel -> validatePassword ( $ _POST [ ' password ' ])) {
echo " Invalid password! " ;
}
/** @return bool | @param string $phone */
if (! $ userModel -> validatePhone ( $ _POST [ ' telephone ' ])) {
echo " Invalid telephone! " ;
}
/** @return bool | @param int $size */
$ user -> recovery_token = $ userModel -> aleatoryToken ( 15 );
$ user -> save ()
"Pác^kà@gê Sí#mp%lePHP" -> "pac-ka-ge-si-mp-lephp"
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
123456 // false
QUASE123! // false
#OpA1 // false
#essaSenhaEGrande1234 // false
#OpA1? // true
Foi123! // true
(00)0000-0000
(00)00000-0000
0000-0000
00000-0000
Cuando SimplePHP genera un error, aparecerá en el directorio configurado en la configuración de la carpeta, el informe lo genera el paquete monolog .
Este proyecto tiene la licencia MIT; consulte el archivo LICENSE.md para obtener más detalles.