Petites précisions du mot clef static

Eléphant du PHP | 453 Messages

10 janv. 2010, 05:58

Salut tout le monde,

Je n'ai pas bien saisie l'utilisation de static dans les propriétés et méthodes. Dans quel cas peut on l'uitilser ? Pouvez vous m'en dire d'avantage SVP.

Par avance merci et bonne journée à vous.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 63 Messages

10 janv. 2010, 12:35

Je te conseille de lire ceci : Portée des variables.

Eléphant du PHP | 453 Messages

10 janv. 2010, 13:15

Hello,

Ce matin, j'ai regardé dans la doc, mais pas au bon endroit.

Merci et bonne journée à toi.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
AB
ViPHP | 5818 Messages

10 janv. 2010, 22:05

Salut tout le monde,

Je n'ai pas bien saisie l'utilisation de static dans les propriétés et méthodes. Dans quel cas peut on l'uitilser ? Pouvez vous m'en dire d'avantage SVP.

Par avance merci et bonne journée à vous.
Tu as deux exemples d'utilisation dans ce topic

Eléphant du PHP | 453 Messages

15 janv. 2010, 22:33

Hello AB,
Ta réponse, je la trouve pertinente et je t'en remercie. :) Merci aussi à toi Zeus pour le Multiton. Je crois avoir compris. Je suis en plein Singleton et je commence à mieux comprendre. Si j'ai bien saisie, lors d'une connection a une base $instance peut avoir plusieurs connection (ex : ORACLE et Mysql) cela évite ce genre d'écriture entres autres :
$oracle = new MaBase($dsnOracle);
$mysql = new MaBase($dsnMysql);
//etc.
$instance et getInstance doit être static, c'est pour éviter des erreurs de traitement si on reste sur un seul modèle ($connectionBase = new maBase($dsn)) ? D'ailleurs, je pense qu'il est bon d'étendre pdo vers un Singleton, non ?

Bonne soirée ^^
Modifié en dernier par niuxe le 15 janv. 2010, 23:05, modifié 2 fois.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 63 Messages

15 janv. 2010, 22:46

D'ailleurs, je pense qu'il est bon d'étendre pdo vers un Singleton, non ?
Oui et non. Il y a 2 ou 3 ans je t'aurais dit oui, mais aujourd'hui la mode est à l'utilisation de registres de données (d'ailleurs une grande majorité des singletons de Zend Framework va être retirée pour la version 2). Ces fameux registres permettent une utilisation plus souple de tes classes. Aujourd'hui je vois, il m'arrive d'utiliser 2 voire 4 connexions PDO différentes (par paire pour mettre en place une archi master/slave) ce qui n'est pas possible avec des singletons !

A toi de faire ton choix en fonction de tes besoins.

Eléphant du PHP | 453 Messages

15 janv. 2010, 22:58

Registre de données ? C'est à dire ?
... Aujourd'hui je vois, il m'arrive d'utiliser 2 voire 4 connexions PDO différentes (par paire pour mettre en place une archi master/slave) ce qui n'est pas possible avec des singletons !
C'est en rapport avec les privilèges d'accès à la ou aux bases de données non ?
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 63 Messages

15 janv. 2010, 23:07

Non. Les architectures master-slaves sont une des solutions possibles permettant d'effectuer des réplications de bases de données afin de scaler ton application. Etant donnée que l'architecture oblige d'utiliser plusieurs serveurs de base de données, les paramètres de connexion diffèrent à chaque fois. Si j'utilisais un singleton pour ma connexion, je ne pourrais accéder qu'à un seul serveur. Si je n'ai besoin que d'une instance PDO pour chacun des serveurs, ce n'est pas singleton ! D'où l'utilisation de registre pour stocker mes instances et pouvoir les réutiliser.

Eléphant du PHP | 453 Messages

16 janv. 2010, 00:39

Etant donnée que l'architecture oblige d'utiliser plusieurs serveurs de base de données, les paramètres de connexion diffèrent à chaque fois. Si j'utilisais un singleton pour ma connexion, je ne pourrais accéder qu'à un seul serveur. Si je n'ai besoin que d'une instance PDO pour chacun des serveurs, ce n'est pas singleton ! D'où l'utilisation de registre pour stocker mes instances et pouvoir les réutiliser.
Je crois avoir saisie mais dans ce cas là, il n'y a pas un design pattern approprié ? Je pense à un factory mais je fais peut être fausse route ?
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 63 Messages

16 janv. 2010, 01:09

factory permet juste de faciliter la création de l'instance, il ne définit pas la façon dont l'objet va être accessible contrairement à singleton, multiton ou registry. Il existe beaucoup de patterns et pas que ceux du GoF ! Je te conseille d'y jeter un oeil : Entreprise patterns.

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2010, 05:08

D'ailleurs, je pense qu'il est bon d'étendre pdo vers un Singleton, non ? Bonne soirée ^^
A toi de faire ton choix en fonction de tes besoins.
Tout est dit dans cette phrase. Ni plus ni moins.

Il n'y a pas lieu de généraliser des exemples qui ne sont pertinents et optimisés qu'en fonction du contexte. De même qu'il n'y a pas plus d'intérêt à suivre des nouvelles "modes" qui également ne sont pertinentes et optimisées qu'en fonction du contexte etc.

Encore une fois, à toi de voir en fonction de tes besoins si cela est intéressant ou non :wink:

Eléphant du PHP | 453 Messages

18 janv. 2010, 09:09

Hello,

Merci du lien Florent, je vais jeter un coup d'oeil. Je savais qu'il n'y avait pas que les patterns du GoF. D'ailleurs, là je vois que je vais devoir étudier de plus près les patterns du gang.

Bonne journée à vous deux :)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

devlop78
Invité n'ayant pas de compte PHPfrance

24 mars 2010, 15:10

Perso : Singleton.
$Maclass = MaClass::getInstance();

et Hop tu récupères ton objet partout.

Ou si t'as pas besoin de ton objet, tu fais tout en static
Par exemple
MaClass::getTime() ou MaClass::query('INSERT INTO ...'); etc