begin process at 2012 05 29 01:43:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Explication sur function


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Explication sur function

mardi 17 janvier 2012 à 22:36:02 | Explication sur function

philposer

Bonjour (bonsoir) à tous,

je viens de tomber sur quelque chose d'un peu particulier en analysant le framework fuel-php et malgré la doc PHP je ne comprend pas. Du coup j'ai besoin de vos explication afin de m'éclairer.

la partie de code de la class est le suivant:

Code PHP :
	public static function forge(array $config = array())
	{
		return new static($config);
	}


en fait la ligne que je ne comprend pas est le return new static?? comment peut-on faire un new d'un static qui n'est pas une class mais bien un mot protegé?

Merci pour vos explications
mercredi 18 janvier 2012 à 13:04:26 | Re : Explication sur function

philposer

En gros après quelques recherche ca revient à faire
Code PHP :
return new my_class()


Donc pourquoi créer la class par "l'interieur" en faisant comme ca:

Code PHP :
<?php
class a
{
public $this->var = '';
protected function __construct($params)
{
$this->var = $params;
}

public static function create($params)
{
return new static($params);
}

$test = a::create('params');

?>


que plutôt utiliser un constructeur public et créer la class par "l'exterieur":

Code PHP :
<?

$test = new a('params');

?>


je n'arrive pas à voir de différence et/ou avantage?? :-(

merci pour les éclaircissements.
mercredi 18 janvier 2012 à 20:26:09 | Re : Explication sur function

TychoBrahe

Réponse acceptée !
Salut,

En gros après quelques recherche ca revient à faire return new my_class()


C'est effectivement le cas, dans ce cadre là self permet de référer à la classe courrante (cf Late Static Bindings).

Donc pourquoi créer la class par "l'interieur" en faisant comme ca:
[...]
que plutôt utiliser un constructeur public et créer la class par "l'exterieur"


Comme ça je vois deux raisons. La première, qui se rencontre souvent mais n'est pas applicable dans le cas présent, est de faire un singleton. La seconde est de contourner certaines limitations de php 5.3 (la version 5.4 de php corrigera ce problème). Un exemple de limitation et l'utilisation de cette construction "externe" pour contourner :

Code PHP :
<?php

class Toto
{
  public static function forge()
  {
    return new static();
  }

  public function foo()
  {
    return 42;
  }

  public function __toString()
  {
    return 'bar';
  }
}

//$val = new Toto()->foo();
$val = Toto::forge()->foo();

//echo 'Test: ' . new Toto() . PHP_EOL;
echo 'Test: ' . Toto::forge() . PHP_EOL;

?>

En commentaire ce que l'on souhaitais faire et qui ne fonctionne pas dans les versions antérieurs à 5.4 de php. Juste en dessous la manière de contourner.


Cette discussion est classée dans : function, code, php, explication, static


Répondre à ce message

Sujets en rapport avec ce message

[AJAX/PHP] - echange les $POST ? [ par bazbazus ] bonjour a tous J'ai un petit problème je veux récupérer des paramètres passés par POST via un objet XMLHttpRequest. mais pas les [b]envoyer[/b] les [b Application facebook : Publiez sur un mur [ par quinton75 ] Bonjour, [^^clinoeil1][^^clinoeil1] Je souhaite développer une application qui donne la possibilité au visiteur de publier une des photos de la f Problème class PHP [ par shauken ] Bonjour, je commence un site orienté Objet mais quelque notion que manque: voila mon problème: j'ai 2 classe et ma page index: - "MyBase" qui fait Affichage, enregistrement et recuperation de l'url [ par bedidaquin01 ] bonjour mes frères grands, venez moi en aide pour la réussite de mon script svp. j'ai deux page: La première:[u]maeqapeil.php[/u] j'effectue une reche cryptage/décryptage de fichiers stockés dans une base de données [ par BBFUNK01 ] Hello, Je rencontre actuellement un problème que je ne parviens pas à résoudre : J'ai une base de données qui contient différentes informations du ty PHP et DOM [ par Hello5562 ] Bonjour, Je dois modifier un fichier XML avec du PHP mais je ne comprend pas d'où vient mon erreur. mon code : [code=php]load($fichier)) { $user - Problème commande « exec » de php et windows7 [ par webel ] Bonjour à tous, j'ai besoin de votre aide! Voilà, j'arrive à exécuter un programme via php avec la commande "exec". Mais mon souci c'est que rien ne s Passage de variables via formulaire [ par jnkfou ] Bonjour, je suis en train de creer une page qui permettrais de modifier le profil de l'utilisateur (c'est a partir un d'un blog wordpress que j'ai mo Protéger son site contre les \' et \" [ par greg63 ] Bonjour, Je suis en train de faire un petit script PHP pour permettre de modifier le contenu d'une page. Le contenu est dans un fichier *.txt et mon aider moin a corriger mes scripts , j'ai un problème dans la base de donées [ par marwamarwita ] je suis en train de réaliser un formulaire d'inscription je débute encore pour le créer [^^peur] et voici mes essais !!!! le fichier inscription.html


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales