Bonjour,

Le but de mon topic ici n'est pas d'avoir de l'aide mais de comprendre pourquoi faire ?

POO oui c'est classe on peut faire ça :

    public function Request($statement,$attrs=null,$one = null)
    {

        if(!is_null($attrs)){

            $req = $this->getPDO()->prepare($statement);

            $req->execute($attrs);

            if($one === 1){

                //retour 1 result
                return $req->fetch();

            }else{

                //return all result
                return $req->fetchAll();

            }

        }else{

            //si attrs = null return query
            return $this->getPDO()->query($statement); 

        }
        return null;

    }

Ok c'est cool j'ai plus non plus faire de global avec mon this PDO

    /*
    * return instance PDO
    */
    private function Cnx(){
        return new Database();
    }

j'en suis encore au début mais je remarque que en fin de compte ça revien a mettre tout mon code au dessus de mon HTML

parce que je suis quand même obligé de mettre ça dans ma vue

<?php 
$posted = new App\ViewForums();
$gettags = new App\Tags();
$nav = new App\Func();
?>

Ce qui revien a mettre directement le script dans un fichier inclu dynamiquement non ?!

ce que je faisait jusqu'ici c'est $page.php et $page.func.php

c'est une manière d'autoloading que j'avais avec mon get, alors oui on fait moins de code mais si je créer une fonction pagination, une class form etc... l'autoloader lui va inclure plus de fichiers

Si inclure des fichiers en boucle n'est pas génant pour les performances ok ça me va.

Enfin voilà je suis juste curieux.

8 réponses


Salut,

la POO te permet de bien séparer ton code.

Par exemple, tu peux créer une class pour gérer la connexion à ta base de données et une class pour gérer la construction de tes requêtes.

Par la suite tu verras les namespaces et l'autoloading, mais si tu as besoin d'une class dans ton fichier, tu dois forcément l'inclure pour l'utiliser.

Après avoir suivi la formation "La POO en PHP", je te conseils vivement la formation "Mise en pratique de la POO en PHP".

Pas simple à suivre par moment, mais tu y apprendras beaucoup de choses avant de passer sur un framework comme Symfony ou Laravel.

Bon courage.

neecride
Auteur

Merci de ta réponse j'ai pas suivis de formation j'ai juste regarder la logique, les fonction c'est pareil ça change pas, les objet non plus... je n'utiliserai jamais de framwork mais j'utilise des librairie par contre avant d'utilisé une librairie j'aime bien savoir comment la faire sois même.

le but pour moi c'est d'aller plus loin dans la compréhention.

Hello

je n'utiliserai jamais de framwork

Pourquoi es-tu si catégorique ?

C'est bien de pas en utiliser maintenant surtout si tu ne comprends pas encore l'intérêt de la POO mais ne soit pas si catégorique je pense. Il ne faut pas se fermer de barrière.

Mmmh alors sans framework tu va réinventer le roue sur plein de feature, en tant que dev amateuur c'est une bonne chose, mais en tant de dev professionnel c'est pas top de se passer de framework, et même en amateur une fois que tu aura bien compris le fonctionnement du code faudra comprendre le fonctionnement du framework ça prends du temps

Ton but c'est de comprendre donc oui au début pas de ramework c'est bien, mais quand tu passeras pro tu ne pourras pas faire sans frameworks, ou alors tu devra te contenter de faire des tous petits projets et passer à coté de projets plus importants :/

Sans framework il y a deux problèmes:

-Perte de temps considérable car tu dois refaire la roue pour tout, tout ce qui est routing, architecture, rendu, workers, aujourd'hui tu es supposé pouvoir tout mettre en place en très peu de temps, pour donner une idée sur Laravel par ex tu tapes les commandes php artisan make:controller TopicController -r, php artisan make:model Topic -m, php artisan make:factory TopicFactory, php arttisan make:seeder TopicSeeder, php artisan make:test TopicTest

La déjà tu a fait en quelqueus commande toutu un environnement avec des factories et des tests, ça a prit 2minutes, à la main tu en aurait pour 2-3jours

Et il y a plus rapide, par exemple Ruby on Rails: rails g controller TopicController index, cette commande génère tout d'un coup avec les views model controller factory tests migrations et ça met à jour le router, 20secondes, c'est le temps que ça doit te prendre, plusieurs jours, c'est le temps que ça te prendrait en refaisant tout à la main pour un résultat moins bien en plus ^^'

-La "roue" que tu aura réinventé sera moins opti que la feature proposée par le framework (tu peux être un dev senior ou pas, dans tous les cas tu n'arrivera pas a faire le temps d'un projet une feature aussi opti que le framework qui a une équipe de devs qui ont passés des années à optimiser leurs features (regardes le code source des framework tu comprendra xD)) :p

Et de toutes façon tu n'aura pas le choix, les entreprises ont une stack technique imposée, tu es obligé de connaitre un framework, et faut connaitre celui de l'entreprise :p Bref pas de framework=pas de travail dans des entreprises intéressantes (après tu peux trouver des toutes petites agences qui font de l'usine à sites qui n'utilisent pas de framework, mais ils vont te dégouter du dev ^^')

Il faut comprendre le principe d'un framework: L'idée c'est de déleguer au framework les features de base (routing, views, modeles, controllers) et de consacrer son temps de dev aux trucs avancés et spécifiques du projet, si tu prends tout ton temps de dev a faire les choses basiques, tu n'aura pas le temps de faire les features avancées :p

neecride
Auteur

Bonjour, je n'ai pas l'intension de devenir dev de métié ce qui me plais le plus c'est la création lua, rainmeter, conky, php etc... pendre un framwork reviens a me privé de ce que j'aime le plus, le plus souvent j'utilise bootstrap mais le design reste le miens.

Je ne suis pas 100% fermer j'utilise un routeur, le problème de la roue c'est que tout le monde sais comment elle fonctionne.

C'est mon avi personel mais c'est vrai aussi que lire une doc m'épuise :)

Bonne soirée.

Ah oui si le dev est juste un hobby pour toi ça change tout x)

Alors du point de vue non pro, si tu préfères tout faire à la main y a pas de soucis, après c'est un peu dommage parce que les frameworks ne te proposent pas uniquement de t'épargner la mise en place basique, il y a aussi des features qui te permettent de faire des trucs bien poussés, par exemple sur Laravel tu as les workers, sur Rails tu as les ActionRecords, sur NodeJS tu as la mise en place d'un serveur JS ce qui n'est pas négligable, etc...

(Après je pensais à peu prêt la même chose quand j'ai commencé le dev, j'aimais bien tout faire à la main, et après un certain temps j'ai quand même finis dans les frameworks et dur de s'en passer après xD On verra si ça t'arrivera aussi à l'avenir, faut jamais dire jamais :p)

Après oui... quadn tu attaques les frameworks du point de vue dev tu ne passe plus ton temps à mettre en place la base, et avec les framework tu vas attaquer les choses sérieuses du dev... Du coup oui il faut manger de la doc, beaucoup de doc, vraiment beaucoup xD Après en vrai tu peux te passer de la doc et te contenter des tutos (je pars du principe que tu comptes pas etre pro) et y a moyen de faire des truc assez puissants :p

Et si vraiment tu ne veux pas de frameworks je te recommandes de faire du GoLang, il y a des trucs très poussés uniquement avec des librairies, sans frameworks ;) Bon par contre faut suivre la doc ^^'

neecride
Auteur

Salut popotte le problème des doc c'est que déjà elle sont en anglais et toujours mal foutu ou mal expliquer ...

Dans l'exemple de Choices je me suis brisé les neuronnes j'ai commencer a installer node puis bouffer de la command et ça fonctionné pas, j'ai dormis et j'ai repris j'ai delete node parce que je voulais que ça fonctionne sans et donc pour la postérité je lache le code :

Dans la vue

<div class="form-group">
     <select class="js-choice" name="tags[]" multiple>
            <option value="">Choisissez vos tags</option>
      <?php foreach($home->TagsList() as $tags){ ?>
             <option value="<?= $tags->id ?>"><?= $tags->name ?></option>
      <?php } ?>
       </select>
</div>

Le script en oubliant pas d'importer le Choices.js

<script>
     const element = document.querySelector('.js-choice');
     const choices = new Choices(element, {
          maxItemCount: 4,
          removeItemButton: true
     });
 </script>

Si il avais indiquer directement ça dans la doc j'aurai compris direct parce que le jquery, le javascript etc... mine de rien c'est complétement différent dans l'écriture...

Je ne suis certainement pas un pro mais je me félicite de suffisement vouloir le savoir que j'y arrive toujours... mais le revert de la médaille est que j'ai pas apris le javascript ou le jquery qui est lui même un framwork de javascript déjà là comment leurs donner du sens ? parce que je ne me vois pas apprendre tout un language pour seulement 2 fonction dont j'ai besoin... je veut bien donner une medaille a celui qui utilise levenshtein il y a des tas de fonction qui non plus de sens pourquoi strlen quand il y a grapheme_strlen qui compte mieux en tout cas en utf8.

J'en suis a un niveau correct en php je peut quasiment tout faire jusqu'a l'écriture de fichier au point que j'ai fais un CMS full no BDD parce que ça m'amuse.

Mon réel soucis c'est le doute et je pense pas être le seul a me demandé qu'est-ce qu'un dev finalement ? est-ce que c'est comme un Mike Horn qui parle mal plusieurs langue lol ou macgyver !?

Bonne soirée.

Alors oui, les docs sont pour certaines mal foutues, et la majorité est en anglais, c'est le petit soucis ^^'

Après il y a des docs de bonne qualité, et certaines sont mêmes en francais, par exemple: https://fr.reactjs.org/docs/hello-world.html (bon, c'est pas un framework, c'est une librairie, et la version "framework" de React (NextJS) la doc est très bien mais en anglais ^^')

Pour le problème de Choices avec NodeJS, alors avec Node il faut etre sur d'avoir la dernière version stable (LTS) ensuite si tu passes parr un CDN tu ne passes pas par Node, avec Node il faut un fichier js qui marche comme un module avec import Choices from 'choises', et const choises = new Choises et faire un export et... Bon en vrai c'est simple quand on a l'habitude, mais je me rends compte que ça doit pas être si simple quand on connait pas ^^'

Concrètement j'aurais fais ton script dans un fichier JS

app.js

import Choices from 'choises'

const element = document.querySelector('.js-choice');
const choices = new Choices(element, {
      maxItemCount: 4,
      removeItemButton: true
});

Après tu fait du JS simple directement dans le html, dans ton cas pas besoin de Node, NodeJS ça sert a faire tout un écosystème JS pour des concepts plus avancés :p

Mais c'est bien de connaitre, en gros n'essayes pas de faire du NodeJS pour refaire ce que tu sait déjà faire, apprends Node pour t'ouvrir des possibilités et tenter de faire des choses que tu ne pouvait pas faire en JS vanilla :p

Au fait jQuery c'est pas un framework, c'est une librairie :p un framework te donne une architecture toute prête avec des cases vides, et tu a juste à remplir les cases (en gros x))

Pour PHP, déjà le traitement de fichier c'est pas mal donc t'as des connaissances plus que correctes ;)

Après si tu touche un peut le traitement de fichiers je peux te proposer de faire un truc en PHP: prends un fichier CSV avec une liste de données (emails par exemple) et fait un deuxième fichier avec la liste d'email à virer (certains emails se trouvent dans la première liste et faudra les virer de la première liste, certains email ne sont pas dans la première liste tu les ignores), et écrit un troisième fichier avec la liste d'email de la première liste, mais sans les emails qui sont aussi dans la deuxième liste

Ca c'est le niveau 1, maintenant on passe au niveau 2, fait la même chose, mais avec des listes géantes ( genre 1millions de lignes, faudra trouver des listes de mots sur internet, ça va être long de tout taper à la main xD) /!\ Il y a une règle: t'as pas le droit de configurer php en mettant memory_limit en illimité, faudra optimiser ton code pour qu'il consomme le moins de mémoire possible, c'est la la difficulté

Ensuite le niveau 3: Fait un petit dashboard avec un acces utilisateur email/mot de passe, et avec la possibilité de faire le filtrage sur internet en uploadant un fichier liste et un fichier liste d'éléments à virer de la première, et un bouton pour lancer le filtre

Si tu arrives le niveau tu a de très bonne connaissances en PHP, si tu arrives a faire le niveau 2 t'es à un niveau pro bravo, tu peux même te former pour être dev pro, et si tu arrive a faire le niveau 3... na mais à ce stade faut que tu passes pro tu serait un excellent dev x'D

Bon c'est une petite idée de projet pour toi j'y ai pensé quand t'as parlé de traitement de fichiers, et c'est le genre de projet que les dev pro font dans le web marketing, fais le si tu aimes bien l'idée :p

Alors un dev c'est quelqu'un si arrive à livrer en très peu de temps un projet de qualité, qui connait peu de langages, mais le peu de langages qu'il connait il est expert, après tu as le dev senior, lui il comprend la logique du code, il peut maitriser facilement n'importe quel langage, pour un langage qu'il n'a jamais vu il lis la doc rapidement et c'est bon il est opé pour un gros projet, il sait aussi choisir quel langage est le mieux adapté pour tel ou tel projet (par exemple le projet que je t'ai proposé, le langage le plus adapté c'est sans hésitations le Golang)