2009-11-17 4 views
4

Existe-t-il des variables locales, privées, statiques et publiques en PHP? Si oui, pouvez-vous donner des échantillons de chacun et comment leur portée est démontrée à l'intérieur et à l'extérieur de la classe et des fonctions internes?C-style Initialisation de variable en PHP

+1

Avez-vous vérifié PHP 5 encore? – Lukman

+2

+ statique, privé, public, les classes s'appliquent à C + + C. – RageZ

Répondre

5

Je ne sais pas C++, mais il y a la façon dont PHP fonctionne sur:

Pour les oscilloscopes de fonction:

<?php 

    $b = 6; 

    function testFunc($a){ 
    echo $a.'-'.$b; 
    } 

    function testFunc2($a){ 
    global $b; 
    echo $a.'-'.$b; 
    } 

    testFunc(3); 
    testFunc2(3); 

?> 

La sortie est

3-
3-6

code à l'intérieur des fonctions ne sont accessibles variables en dehors des fonctions utilisant le mot-clé global. Voir http://php.net/manual/en/language.variables.scope.php

En ce qui concerne les classes:

<?php 

class ExampleClass{ 

    private $private_var = 40; 
    public $public_var = 20; 
    public static $static_var = 50; 

    private function classFuncOne(){ 
    echo $this->private_var.'-'.$this->public_var; // outputs class variables 
    } 

    public function classFuncTwo(){ 
    $this->classFuncOne(); 
    echo $private_var.'-'.$public_var; // outputs local variable, not class variable 
    } 

} 

$myobj = new ExampleClass(); 

$myobj->classFuncTwo(); 
echo ExampleClass::$static_var; 
$myobj->classFuncOne(); // fatal error occurs because method is private 

?> 

sortie serait:

40-20
-
50
Fatal error: Call to private method ExampleClass::classFuncOne() from context '' in C:\xampp\htdocs\scope.php on line 22

Une note à prendre: PHP ne pas l'initialisation des variables, bien que les variables sont dites être activées ou non . Lorsqu'une variable est définie, elle a été affectée d'une valeur. Vous pouvez utiliser le unset pour supprimer la variable et sa valeur. Une variable non définie est équivalente à false, et si vous l'utilisez avec toutes les erreurs, vous verrez une erreur E_NOTICE.

4

En PHP, il existe des variables statiques, locales, privées, publiques et protégées de classe.

Cependant, dans les choses de mise en œuvre PHP POO sont un peu différentes: the manual vous aidera:

The visibility of a property or method can be defined by prefixing the declaration with the keywords public, protected or private.

De plus, un coup d'oeil à la static keyword documentation.

Vous pourrez en savoir plus sur les variables normales et leur portée ici: http://php.net/manual/en/language.variables.scope.php:

For the most part all PHP variables only have a single scope.

J'espère que les liens seront en mesure de vous l'expliquer mieux que moi ;-)

1

oui, PHP 5 incluude static variables et visibility en classe.

class MyClass 
{ 
    public static $my_static = 'foo'; 
    public $public = 'Public'; 
    protected $protected = 'Protected'; 
    private $private = 'Private'; 

    public function staticValue() { 
     return self::$my_static; 
    } 
    function printHello() 
    { 
     echo $this->public; 
     echo $this->protected; 
     echo $this->private; 
    } 
} 

$obj = new MyClass(); 
echo $obj->public; // Works 
echo $obj->protected; // Fatal Error 
echo $obj->private; // Fatal Error 
$obj->printHello(); // Shows Public, Protected and Private