php nasıl: statik bir sınıf değişkeni içine oturum değişkeni kaydetmek

2 Cevap php

Aşağıdaki kodu çalışıyor:

<?php session_start();

   $_SESSION['color'] = 'blue'; 

   class utilities
   {
            public static $color;

        function display()
            {
            	echo utilities::$color = $_SESSION['color'];
            }

   }
   utilities::display(); ?>

Bu ne istiyorum ama çalışmıyor:

<?php session_start();

$_SESSION['color'] = 'blue'; 

class utilities  {  
     public static $color = $_SESSION['color']; //see here

     function display()     
     {  	
         echo utilities::$color;    
     }   } utilities::display(); ?>

Ben bu hatayı alıyorum: Parse error: syntax error, unexpected T_VARIABLE in C:\Inetpub\vhosts\morsemfgco.com\httpdocs\secure2\scrap\class.php on line 7

Php fonksiyon dışında depolanan oturum değişkenleri sevmez. Neden? Bir sözdizimi sorun ya da ne mi? Çünkü sadece programı işlevleri çağıran ve küresel saklanacak bir kaç oturum değişkenleri ihtiyacı için nesneleri örneğini zorunda istemiyorum. Ben global oturum değişkenleri Ben de bir işlevi çalıştırmak her zaman saklamak için init() işlevini çağırmak istemiyorum. Çözümler?

2 Cevap

Kimden PHP manual: -

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.

Eğer oturum değişkenleri küresel saklanan gerekir söylüyorlar? Bu $_SESSION a "super global" olarak bilinir vardır

<?php

class utilities {
public static $color = $_SESSION['color']; //see here

 function display()   
 {      
     echo $_SESSION['color'];  
 }
}

utilities::display(); ?>

Bir sınıfta sadece yöntemleri OTURUMU kullanabilirsiniz ...

Eğer bir sınıfta bir şeyler yapmak istiyorsanız, aslında, bir yönteminde kod gerekir ...

A class is not a function. It has some variables -as attributes- and some functions -as method- You can define variables, you can initialize them. But you can't do any operation on them outside of a method... for example

public static $var1; // OK!
public static $var2=5; //OK!
public static $var3=5+5; //ERROR

Bu gibi onları ayarlamak isterseniz ... kurucuyu kullanabilirsiniz (ama unutmayın: nesne oluşturulduktan kadar kurucular olarak adlandırılan değildir ...) gerekir

<?php 
session_start();

$_SESSION['color'] = 'blue'; 

class utilities  {  

    public static $color;

    function __construct()
    {
        $this->color=$_SESSION['color'];
    }

    function display()     
    {          
        echo utilities::$color;  
    }
}
utilities::display(); //empty output, because constructor wasn't invoked...
$obj=new utilities();
echo "<br>".$obj->color;
?>