2013-03-16 11 views
10

Bu soru yeterince basit görünüyor gibi ama her yerde bir cevap bulamıyorum içerir/dosya değişken oluşturmak istiyorum. bütün sınıflar, yöntemler, fonksiyonlar, komut dosyaları, vb can basit çağrı değişken $ olarak bu değişken dahil olacak şekilde

$variable = 'this is my variable'; 

Ben, bu değişken tüm komut dosyası içinde mevcut olmasını istiyorum.

Class MyClass 
{ 
    public function showvariable() 
    { 
    echo $variable; 
    } 
} 

$ _SESSION, $ _POST, $ _GET değişkenler hiç öyle davranırlar. Bir yöntem yazabilirim ve $ _POST kullanabilirim ve işe yarayacak. ama ben betiğimin başında tanımladığım $ değişkenini kullanırsam, "Dikkat: Tanımsız değişken: değişken ..." yazıyor. Hatta bir fonksiyon yazdığımda, bir sınıf metodu yerine yazıyor. .

Ben

global $variable = 'this is my variable'; 

yazmaya çalıştı Ama sonra senaryo ... "HTTP Hata 500 (Dahili sunucu Hatası) yük olmaz: beklenmedik bir koşulla karşılaşıldı sunucu yerine getirmek için denerken talep."

$ _POST gibi global olarak gerçekten erişilebilir bir değişkeni nasıl yapabilirim?

Neden buna ihtiyacım vardı? Özellikle form belirteci olarak kullanmayı planlıyorum. Sayfanın en üstünde, form belirticiyi $ belirteci olarak oluşturuyorum, sayfanın altındaki oturumda saklıyorum. Herhangi bir formu ele almadan önce, SESSION jetonunun POST jetonuyla eşleşip eşleşmediğini kontrol edin ... Ve sık sık sayfada birden fazla formum var (üstteki girişte giriş formu ve ana gövdede kayıt formu). Her formda $ belirtin. Bazen formüllerim sınıflar veya işlevler tarafından oluşturulur, ancak değişkeni tanımıyor ve tanımlanmadığını söylüyorlar.

+0

"Ama sonra komut dosyası yüklenemedi ..." –

+0

Gerçekten de içeriğe bağlı. Hangi durumda küresel bir değere ihtiyacınız var? – Tchoupi

+1

http://www.php.net/manual/en/reserved.variables.globals.php – Musa

cevap

13

Ben -.- nihayet ... Hemen buldum ben

$GLOBALS['variable']; 

kullanarak değişkene aramak zorunda

... Yeterince kolay olacağını düşündüm ... buldum ... 8 gibi ay sonra ya da öylesine http://php.net/manual/en/reserved.variables.globals.php

DÜZENLEME:

sadece öğrendim SABİTLER!

define('name', 'value'); 

Onlar sadece yeniden edilemez ... Ben de bunu kullanabiliriz sanırım!Senaryonuzun üstündeki

: http://www.php.net/manual/en/language.constants.php

+0

Garip, ama bu benim için işe yaramazken, senaryodaki tüm işlevler için sabit kullanıyorum. – vladkras

+0

Sadece bir not, genel değişkenleri kullanarak büyük kodlar için tavsiye edilmez, çünkü programın parçalarını ayrı ayrı test etmeyi çok zorlaştırırlar. Aksine, global değişkeniniz YOK ve Bağımlılık Enjeksiyonunu kullanıyorsanız, programın küçük bölümlerini test etmek kolaylaşır. –

2

Eğer herhangi bir işlev kapsamına erişmek için küresel beyan gerekir

global $var; 
$var= "this is my variable"; 

Sınıfınızla PHP

... 
public function showvariable(){ 
    global $var; 
    echo $var; 
} 
... 
+0

Cevabınız için teşekkürler! Bu mükemmel bir şekilde çalışırken, her seferinde bir fonksiyon yazdığımda bu değişkenden bahsetmem gereken daha elverişli bir yol arıyordum ... Sadece orada olmasını istiyorum ve buna ihtiyacım olursa çağır, hatta hiç bahsetme eğer ihtiyacım yoksa. – olli

+0

globals'ın PHP'de nasıl çalıştığı (eğer $ GLOBALS kullanacaksanız), bundan bahsetmelisiniz. Eğer kullanmayacaksan, bundan bahsetmene gerek yok, basit. – kennypu

1

yılında, Global değişkenler, kullanılacakları her işlevde olduğu gibi beyan edilmelidir. Bkz .: PHP Manual, section on variable scope

Bu, küresel değişkenler genellikle kötü bir fikirdir ve çoğu durumda kullanımlarından kaçınmanın bir yolu vardır.

+0

Cevabınız için teşekkürler. Bu makaleyi de buldum, ancak bir işleve veya sınıfa işlendikten veya oluşturulduktan sonra değişkenlere nasıl erişileceğini ifade ediyordu. Benim sorunum, bir fonksiyon veya sınıftaki bir değişkene erişmek istediğimi ve değişkenin bildirilmesinden ÖNCE bildirildi. – olli

7

Herhangi bir sınıf veya işlevin dışında bir değişken tanımlayın. Daha sonra, herhangi bir sınıf veya işlev içinde global anahtar sözcüğünü kullanın.

<?php 

// start of code 

$my_var = 'Hellow Orld'; 

function myfunc() { 
    global $my_var; 
    echo $my_var; // echoes 'Hellow Orld'; 
} 

function myOtherFunc() { 
    var $my_var; 
    echo $my_var; // echoes nothing, because $my_var is an undefined local variable. 
} 


class myClass { 

    public function myFunc() { 
    global $my_var; 
    echo $my_var; // echoes 'Hellow Orld'; 
    } 

    public function myOtherFunc() { 
    var $my_var; 
    echo $my_var; // echoes nothing. 
    } 

} 

myFunc(); // "Hellow Orld" 
myOtherFunc(); // no output 
myClass->myFunc(); // "Hellow Orld" 
myClass->myOtherFunc(); // no output 

// end of file 
?>