Php nasıl fonksiyon denir her bir fonksiyonun içinde bildirilen statik değişkenler yeniden başlatılan olmaz emin olabilirim?

5 Cevap php

Bu bir işlev içinde bildirilen statik bir değişken fonksiyon denir ne zaman, nasıl, statik parametre yeniden kullanacak işlevini yeniden adlandıran bir şekilde işlevini kullanabilirsiniz yeniden başlatılır görünüyor?

Ben fonksiyonunu tanımlanan 'testStatic' static.php içinde

Burada static.php olduğunu:

<?php
function testStatic()
{
    static $staticV = 0;
    echo $staticV;
    $staticV;
}
?>

Ben index.php den 'testStatic' arıyorum

Burada index.php:

<?php include "./static.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3c.org/TR/html4/strict.dtd">
<?php
testStatic();
?>

<html> 
.
.
.
<html>

When index.php is executed for the first time testStatic will echo with '0' however in the next times index.php is executed testStatic continues to echo with '0'. It seems that the static variable 'staticV' of 'testStatic' is re-initiated whenever index.php is execute.

please advise. that index.php

5 Cevap

Eğer bir PHP komut dosyası çalıştırmak her zaman, çevre yeniden yarattı. HTTP istekleri veya komut çağrıları arasında hiçbir devlet yoktur.

Eğer index.php web tarayıcınızı işaret ilk kez, yeni bir PHP ortamı başlatılır ve $staticV 0 olur.

Eğer index.php web tarayıcınızı işaret dahaki sefere, aynı şey olur.

Web istekleri arasında $staticV devam etmek istiyorsanız, o zaman farklı bir yaklaşım gerekir. Sessions genellikle bu sorunu işlemek için kullanılır.

HTTP vatansız protokol, yani hiçbir devlet bir web sayfası her arama için korunur. Değişken sadece index.php PHP işleme süresince, yüklemek dahaki sefere bu statik değişken dahil, index.php koştu önceki zaman bir devleti hatırladı olmayacaktır index.php, statik olacak.

Veri sebat bazı yöntem kullanmak gerekir yapmak için. Bir oturumda bunu saklama bir oturum değişkeni, vb gibi, bir dosya bir veritabanı değişkeni saklamak muhtemelen burada en iyi seçenektir. Eğer gerekiyorsa bir tutorial on sessions var.

Hızlı bir örnek,

<?php
session_start();

if(isset($_SESSION['staticV']))
    $_SESSION['staticV']++;
else
    $_SESSION['staticV'] = 0;

echo $_SESSION['staticV'];
?>

Eğer kafa karıştırıcı şeyler vardır. statik değişken (!) komut dosyası içinde statik kalır. script bittikten sonra, php motor değişken veya komut dosyası hakkında hiçbir şey bilmiyor ...

Eğer oturum sırasında değerlerini korumak için çerezleri veya veritabanı (veya php oturum seçenekleri) kullanmalısınız.

hmmmm php değişkenler, farklı aramalar ilgilendiren uçucu vardır. Bir php-script her başlattığınızda, değişkenleri sıfırlanır. Birden fazla çağrı üzerine sebat istiyorsanız, bir dosyaya veya bir veritabanı gibi kalıcı bir depolama kullanmak gerekir. oturumlar / çerezleri de bir yoludur.

selamlar

Sayfa ($ _SESSION gibi superglobals saklanan ne dışındaki) tüm eski bilgileri yürütür her zaman sıfırlanır nedeniyle oluşur. Bu yeniden her zaman tanımlanmış olur fonksiyonu içerir. Kullandığınız kodu o sayfanın nesil bunu birden çok kez çalıştırmak olsaydı beklediğiniz yapardı. Ayrı sayfa yükler aslında programın ayrı örneklemi kabul edilebilir, böylece bilgileri saklamak için alternatif bir konumu kullanmak gerekir. DB, metin dosyası, bir süper küresel ... birini seçin amacınıza uygun olduğunu ve bilgi için bu kullanın.

Bu sayı değil, belirli bir kullanıcı için, ama tüm kullanıcılar için sırayla olmak istiyorsanız, eşitleme işlemek için fazladan iş yapmak zorunda farkında olun.