OBS : ce package a été remplacé par le package MinasORM.
Un petit projet CRUD développé pour faciliter les routines quotidiennes et accélérer le processus de communication avec la base de données avec sécurité et transparence.
Quelques précautions et instructions étape par étape pour télécharger et installer le package.
Pour pouvoir utiliser SimplePHP vous aurez besoin d'avoir :
PHP ^7.2.5
EXT-PDO *
SimplePHP peut être installé via composer.json ou via le terminal de commande :
composer require nicollassilva/ SimplePHP
ou composer.json :
"nicollassilva/ SimplePHP ": "^1.9"
>>>>>>> Stashed changes
Pour configurer la connexion à la base de données, vous devez accéder à : SourceRootConfig.php . Exemple du fichier à retrouver :
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
]
];
Après avoir terminé la configuration de la base de données, créez un dossier à la racine du projet où seront vos modèles et créez la classe.
namespace Models ;
use SimplePHP Model SimplePHP ;
class User extends SimplePHP {
function __construct ()
{
/**
* @param string Table Name
* @param string Primary Key
*/
parent :: __construct ( ' users ' , ' id ' );
}
}
Après toutes les étapes précédentes, créez un index.php à la racine du projet en donnant un require dans le chargement automatique du composer et dans votre classe de modèle , après cela, instanciez votre modèle et vous pouvez commencer à utiliser SimplePHP . Ci-dessous un exemple :
require " vendor/autoload.php " ;
require " models/user.php " ;
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ()-> execute ();
Erreur fatale : Erreur non détectée : Classe ' SimplePHP Model SimplePHP ' introuvable
Pour résoudre ce problème, exécutez la commande suivante dans le dossier racine du projet :
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 ' );
Remarque : la méthode except() ne fonctionne pas en chaîne avec la méthodeexecute(true) , uniquementexecute() sans paramètre true.
Remarque : la méthode except() ne fonctionne que lors de la recherche d'informations spécifiques, dans les tableaux multidimensionnels, elle ne fonctionne pas. Cela sera bientôt corrigé.
Toutes les méthodes sont conviviales les unes avec les autres, ce qui signifie que vous pouvez effectuer des requêtes complexes. Exemple réel :
/** 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 ();
C'est également possible en passant un tableau direct :
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
Lorsqu'une erreur est générée par SimplePHP , elle apparaîtra dans le répertoire configuré dans la configuration du dossier, le rapport est généré par le package monolog .
Ce projet est sous licence MIT - voir le fichier LICENSE.md pour plus de détails