PHP Ölümcül hata: $ this yeniden atanamaz

3 Cevap

Ben komut bu hatayı alıyorum:

[Fri Apr 23 10:57:42 2010] [error] [client 10.0.0.1] PHP Fatal error:  Cannot re-assign $this in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\abp\\fol\\test.php on line 27, referer: http://abp.bhc.com/fol/

Burada hata üretir kodu:

<?php
$voiceboxes = array(
    '141133'    => array(
        'title' => 'Title',
        '1'     => array(
            'Title' => 'Title2',
            'Link'  => 'http://...',
        ),
        '12'    => array(
            'Title' => 'Title3',
            'Link'  => 'http://...',
        )
    ),
    '1070453'   => array(
        'title' => 'Title4',
        '1'     => array(
            'Title' => 'Title5',
            'Link'  => 'http://...',
        )
    )
);
$last = 0;
//$this = 0;
echo "<ol>\n";
foreach ($voiceboxes as $key => $value) {
    $last = 0;
    $this = null; //Error is thrown here, Line 27
    //$voiceboxes[$key]['title']
    echo "<ol>\n";
    foreach ($value as $key2 => $value2) {
        if ($key2 == 'title') {
            echo "<li>$value2</li>\n";
        } else {
            $this = (int) $key2;
            if ($this == $last + 1) {
                echo '<li>';
            } else { '<li value="' . $key2 . '">';}
            $last = $key2;
            echo $voiceboxes[$key][$key2]['Title'] . "<br/>" . $voiceboxes[$key][$key2]['Link'] . '</li>' . "\n";
        }
    }
    echo "</ol>\n";
}

3 Cevap

$this, önceden tanımlanmış bir değişken PHP olduğunu.

Burada PHP kılavuzunda referans bulunuyor: Classes and Objects: The Basics. Bu yöntem içinde, $ this üzerine ameliyat ediliyor "Bu nesne" işaret nasıl açıklar. Hala rağmen, bir yöntem dışında ayrılmıştır.

Başka bir kelime tanımlayıcı değiştirin.

$this php özel bir değişkendir. Bu kod bir sınıfın içinde yer alıyor ise, $this yöntem üzerinde çağrılan nesneye bir referanstır. Bir sınıfın içinde $this için yeni bir değer atanamıyor. O da başka türlü bu kadar yapmak için geçerli olacak bir sınıfın $this dışında, adında bir değişkene atanamaz PHP bir kısıtlamadır.

Ben bu PHP4 geçerli olduğuna inanıyorum, ama PHP5 gibi yeni bir değişken adı seçmeniz gerekir.

Ben gerçekten bir PHP uzmanı değilim, ama sanırım $this geçerli nesneye başvurduğu, bu nedenle this ayarlanırsa null, ayarlamak için deneyin hiçbir şey için geçerli nesne, wich çalışamaz.