Mannière de nommer des éléments du code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mannière de nommer des éléments du code

par Ultiny » 06 nov. 2005, 20:36

Je dois bien faire 10 ou 15 Go de transfert mensuel sur Google.

Je pose la question là car j'étais en train d'écrire mon post et ça m'est venu à l'esprit de demander ça. Enfin la plus part de mes questions posées sur ce forum sont du à une recherche infructieuse sur Google biensûr.

D'ailleur j'ai acquis toutes mes connaissances (PHP, CSS, HTML, JS, PhotoShop,... grace au net et donc à Google)

par Vaedan » 06 nov. 2005, 20:27

je tiens toutefois à te signaler qu'une simple recherche sur google, ou encore la lecture de la rubrique class du php.net auraient répondues à tes questions ! avant de poster recherche un petit peu par toi même ;)

par Vaedan » 06 nov. 2005, 20:25

avant php5, les :: s'utilisaient ainsi :
MyClass::$property
//ou
MyClass:function()
à la place de
$this->
depuis php5, (et peut etre php4) les :: servent SEULEMENT (si je ne me trompe pas) à appeler des propriétés, ou des fonctions, statiques.

par Ultiny » 06 nov. 2005, 20:21

D'accors Jawad, je pensais donc la même chose, ce doit être ça. Merci

par Jawad » 06 nov. 2005, 20:18

Pour moi, l'astuce employée par IPB sert simplement à avoir une valeur par défaut (qui conviendrait pour une partie des tests locaux) au cas où certaines infos ne seraient pas renseignées.

Il est évident que cette variable est modifiée à l'exécution du forum pour prendre la valeur que tu as définie dans le fichier de config (et pouvoir se connecter à ton serveur).

par Ultiny » 06 nov. 2005, 20:01

Okay merci je comprends à peu près, mais je sais pas si je penserais a m'en servire.

Si je comprends bien ça permettrais par exemple de tester si une variable contient bien des nombres?

Ensuite tu utilise public, je suppose que c'est comme un global? Ou puis-je l'utiliser, et pour quelles raisons le faire?

Pour finir je voulais savoir ce que signifiait les ::
includeWrapper::require_once("Class1.class.php");
Désolé pour toutes ces questions mais je souhaite approfondire mes connaissances, surtout sur la partie objet, qui si j'ai bien compris est un super truc (mais ça non plus je n'ai pas compris pourquoi). Je sais ce qu'est un objet mais malgré les nombreux tutos que j'ai lu, je ne comprends pas pourquoi on l'utiliserais à partir du moment ou on ne va pas l'instancier une deuxième fois pour créer un nouvel objet.

par Vaedan » 06 nov. 2005, 18:54

Euh ...
class Test
{
    public $string = 'salut';

    public function method()
    {
        echo $this->string;
    }
}

$class = new Test;

$class->method();
// affiche salut

$class->string = 'hello';
$class->method();
//affiche hello
Pourtout string est bien coloré sous Dreamweaver :)

Alors pourquoi string est colorée ?
$var = 123;

echo gettype( $var );
// int

echo gettype( (string)$var );
// string
Concrètement à quoi ça sert ?
$number = 123456789;

// string substr ( string string, int start [, int length] )
echo substr( $string, 0, 3 );
// affiche 123
Il est parfois utile de manipuler les variables afin de les rendre sûre.
mysql_query( 'DELETE FROM table where id = ' . $_GET[ 'p' ] );
Ici il est possible d'injecter du code SQL via la variable GET p (' OR 1=1' par exemple) ...
Grâce à (int), cela n'est plus possible ! Il faut toutefois noter que intval() fait la meme chose mais est plus lent !

Voilà j'espere avoir répondu :?

Note: Mon 200eme post !

par Ultiny » 06 nov. 2005, 18:13

Nan mais moi mon host n'est pas localhost, donc il va pas s'y connecter, ya même pas de serveur MySQL sur la machine. Je ne vois pas pourquoi il déclare blanc alors qu'en fait c'est noir.

Et je voulais savoir à quoi servait $this->string

Êdit: nan justr string tout seul, car il le color dans Dreamweaver ainsi que int, je sais ce que ça signifie mais je sais pas à quoi ça sert dans un script.

par Vaedan » 06 nov. 2005, 16:46

Mais ça ne répond pas vraiment à ma question. Ici c'était pour l'exemple, je voudrais savoir pourquoi on fait ça?
Mais si ça répond !
Bah en explorant le code d'IPB plus profédément tu remarqueras que c'est plus pratique. De plus cela est beaucoup moins couteux en ressource que d'appeler toujours la propriété $this->ipsclass-var[ *** ] ...
Edit: Je me suis trompé, il s'agit de la version 2 qui n'est pas libre de publication ! Donc ton bout de code :)

par Ultiny » 06 nov. 2005, 16:36

Il provient de la version 2.x
Mais ça ne répond pas vraiment à ma question. Ici c'était pour l'exemple, je voudrais savoir pourquoi on fait ça?

par Vaedan » 06 nov. 2005, 15:51

oh le beau morceau de IPB ... Bah en explorant le code d'IPB plus profédément tu remarqueras que c'est plus pratique. De plus cela est beaucoup moins couteux en ressource que d'appeler toujours la propriété $this->ipsclass-var[ *** ] ...

Je pense que ce morceau de code provient de la version 1.*. Si tu regardes plus en profondeur celui de la 2.*, tu remarqueras qu'un gros effort a été fait (à mon gout) pour améliorer le code.

Si ce code provient de la version 2.*, je doute qu'il soit libre de publication, comme dans ton post par exemple :wink:

par Ultiny » 06 nov. 2005, 15:42

Pour les 2 permiers point c'est ce que je voulais, mais pour le 3 je le savais déja ce que tu m'a expliqué.

Ce que je voulais savoir c'est: pourquoi on définie que le host sera localhost alors que par la suite ça ne sera pas le cas. Je me demandais si c'était en cas de non-inclusion de la page de configuration, ou pour le developpeur, qu'il puisse utiliser la classe seule pour la tester.

Enfin bref je me demandais pourquoi dans IPB il déclarait la configuration de son MySQL en propriété de la classe et non pas laisser le fichier de configuration le faire lui même.

class db_driver {

    var $obj = array ( "sql_database"     => ""         ,
                       "sql_user"         => "root"     ,
                       "sql_pass"         => ""         ,
                       "sql_host"         => "localhost",
                       "sql_port"         => ""         ,
                       "persistent"       => "0"        ,
                       "sql_tbl_prefix"   => "ibf_"     ,
                       "cached_queries"   => array()    ,
                       'shutdown_queries' => array()    ,
                       'debug'            => 0          ,
                       'use_shutdown'     => 1          ,
                       'query_cache_file' => ''         ,
                     );

     var $error             = "";
     var $sql               = "";
     var $cur_query         = "";
     var $query_id          = "";
     var $connection_id     = "";
     var $query_count       = 0;
     var $return_die        = 0;
     var $failed            = 0;
     var $manual_addslashes = 0;
     var $is_shutdown       = 0;
     var $prefix_changed    = 0;
     var $record_row        = array();
     var $loaded_classes    = array();
     var $connect_vars      = array();
     var $force_data_type   = array();
}
Voici ce qu'on trouve

par Cyrano » 06 nov. 2005, 09:39

Salut,
on va y aller dans l'ordre.

-1- Les règles de nommage : C'est toi qui les définis et c'est toi qui t'en sers. Le conseil que je suggère, c'est d'utiliser des noms courts et "parlant", j'entends par là que si tu veux appeler une variable particulière et que ton application en utilise beaucoup, il vaut mieux ne pas avoir besoin de sortir un dictionnaire de variables trop souvent pour savoir à quoi correspond telle ou telle variable et comment se nomme celle dont tu as besoin.

-2- Au sujet des tableaux : Le PHP est un langage très faiblement typé. On ne déclare pas les variables comme dans d'autres langage à deux exceptions près: les tableaux et les propriétés dans une classe objet. Dans une classe en effet, les variables de classe se nomment des propriétés et sont accessibles dans chacune des méthodes de la classe ou des classes filles dans le cas d'extensions. Une variable déclarée et initialisée à l'intérieur d'une méthode ne sera accessible que de l'intérieur de cette méthode. En déclarant la propriété au début de la classe, on y fera référence depuis une méthode avec "$this". On peut initialiser la valeur d'une propriété depuis une méthode, cette valeur sera alors accessible depuis les autres méthodes de la classe.
Attention avec l'utilisation du _ et du __ : le _ simple est en général utilisé avec des noms de variables globales ou super-globales comme $_SESSION, $_COOKIES etc... Le __ est quand à lui une particularité apparue avec PHP5 et désigne ds méthodes dites "magiques" : ce sont des noms de fonctions réservées : __construct, __tostring etc... Rien ne t'interdit en théorie d'utiliser cette méthode pour nommer tes propres fonctions, mais il faut savoir que dans l'avenir, PHP pourrait intégrer de nouvelles méthodes magiques en réservant ces noms. Ainsi, ce serait une très mauvaise idée de créer dans tes propres classes une fonction __array() à long terme. Rien n'indique en effet que dans un avenir plus ou moins rapproché le groupe de développement de PHP ne va pas réserver ce nom pour intégrer au langage une méthode particulière propre à la manipulation de tableaux. Donc nomme tes fonctions sans _ ou __, tu risqueras beaucoup moins à l'avenir de devoir reprendre tes code pour mettre à jour afin d'éviter un conflit avec une méthode réservée.

-3- localhost : ça signifie tout simplement qu'on cherchera l'application sur la machine elle-même. Dans la mesure où le serveur MySQL est sur une autre machine du réseau, on devra alors pointer sur l'extérieur et localhost ne sera plus applicable. Chez beaucoup d'hébergeurs, les serveurs MySQL seront installés sur certaines machines et les serveurs http sur d'autres machines: sur le réseau, chacune de ces machines a une adresse qui lui est propre. Si une application PHP pointe vers MySQL en utilisant l'adresse localhost, ça signifie tout simplement que MySQL est installée sur la même machine que le serveur http où s'exécute l'application.

Voilà, c'est très sommaire bien sûr, j'espère que ça t'éclaire un peu.

Mannière de nommer des éléments du code

par Ultiny » 06 nov. 2005, 05:05

Bonjours,

Je voulais savoir si il y avait une "règle" sur la mannière dont on nomme une variable dans les codes, ou une fonction, je parle de l'identificateur principalement.

Lorsqu'on ouvre les sources C de linux on vois souvent:
void __snarf_region(unsigned int from, unsigned int num)
{
	deux/+ trois* conneries?.()
}
Je porte donc ma question sur __snarf_region, pourquoi tous ces _ devant le nom? Cela signifit-il quelque chose?

_______________________________________________

Ensuite je me demandais à quoi servait-il de preciser qu'il s'agit d'un array dans une class lors de la définition des variables.
class __Req_Sql {
	var $insert;
	var $sql = array();
	var $init = array();
	var $host = "localhost";
}
Et dans les sources de IPB j'ai vu qu'ils mettaient localhost pour definir le host de mysql alors que ce n'est pas le cas pour tout le monde. Est ce qu'on pourrait m'expliquer cette methode? Son utilitée?

Merci de vos réponse.