git init git add . git commit -m "" , on peut rajouter un -m "" pour specifie plus de messages git remote add origin "route du github" git push origin "master" ou le nom de la branche 👍
il faut en ajouter quand c'est des erreurs liées au code et non a l utilisation du site
les exceptions sont dans \Exception
toujours etendre de la class native Exception , native avec le slash \
throw new Exception pour invoquer
l'utilisation de try suivi d un catch pour appeller le message ou autre catch(Exeception $e) {$e->getmessage}
function router dans un fichier router, nouvelle instance
$router = new Router();
% call la function et l'inclure le $path et suivi de l action $action = function `$router->register('/', function() {
})`
% explode($__SERVER['REQUEST_URI'])
poour separer le path de l action contact?send=message
explode('?', $uri)[0];
concerve unique le 1er argument
$action = $this->routes[$path] ?? null;
on cherche le chemin et on l'inclus dans la variable $action sinon il retourne null
ne pas oublier le use \route\of\class
pour utiliser une function d une class
voir composer et psr-4 pour creer une route logique avec un dossier public
pour recharger il faut dans un terminal taper composer dumpautoload
mettre une valeur en argument avec [] qu permet avec cet array de definir plusieurs arguments
['\', ['Conttroller/homeController', othe argument]]
pour passer different type à une variable, il suffit de mettre après le 1er arguement | par exemple callable|array
pour initie les 2 types
si vous voulez verifier que ces un array ou callable il faut ecrire is_array ou is_callable
il y a d'autre class en php pour verifier class_exists, method_exists pour verifier les deux $$
entre
la valeur $action retourne deux chose, le controller et l action index, pour extraire ces donnees il suffit de faire `[$class, $method] = $action;
pour revenir un cran en dessous dirname(__DIR__)
la commande define
avec 2 arguments permets de definir son chemin
les namespaces principaux peuvent etre definit dans le composer 'source\': 'src/'
système de buffering
permeter d'extraire des parametres (variable) avant de require une 'view' par exemple
ob_get_clean()
pour relacher le tampon
plus esthetique et simple de rendre une vue en utilisant type static
permet de faire adopter a la class ou function un comportement, elle commence toujours par _to
possible de faire appel a une function d'une class comme ceci (new App($route))->new();
pour creer une table CREATE TABLE ensuite toujours creer le id en type INT et valeur primary key not null (obligation d'implemanter)
pour incrementer dans une table insert into le nom de la table puis values
il faut definir une nouvelle instance $pdo = new \PDO('mysql:dbname=name of db';host=host defini avec docker, 'user', 'password') ensuite dans un array = [] on peut lui indiquer d'envoyer toutes les données sous forme d'object \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ et pour renvoyer les erreurs sous forme d'exception \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
essayer de mettre des constante pour user password host et les appeler constant::db_user
retourner les infos de la base function getpdo: \PDO avec return static::$pdo
pour prendre les données ne pas oublier de query('SELECT * FROM USER') on prend tout de la class user puis un fetchAll
sur les framework c'est beaucoup plus simple de recuperer les infos des tables $nomdetable->all();
il ne faut pas a chaque fois taper les tables un simple 'private string $table = 'users' puis dans le query de pdo injecter avec {$this->table}
$this->table = get_class($this); il recuperer l'entierter du model Model/user il faut donc faire un explode $this->table = explode('\', get_class($this)[1]); il prend juste en compte user de la class qui correspond au user de la table puis strtolower pour s'assurer qu'il soit en minuscule
compact permet de sortir le resultat en tableau au lieu dans array puis apres le ob_start qui permet de mettre en buffering les informations on peut faire la function extract($params) sur nos paramettres
nous avons maintenant acces a nos $params [array] dans note vue du coup un foreach pour recuperer en mode object
et $user->email (le nom de la table dans le sql)
telecharger via composer phpunit
il faut extends la class que l'on creer pour le test de phpunit, Testcase
pour qu'il comprenne que c'est un test, on peut ecrire au debut du nom de la function test, ou bien au dessus /** @test **/
dans la function il attend quelque chose $this->assertTrue(true)
; puis lancer le test phpunit ./vendor/bin/phpunit
pour inserer differente valeur par exemple $this->assertEquals('/', 'Controllers/Homeconstroller', 'index')