Çok basit bir merhaba dünya PHP program statik bir yöntem kullanılarak Trouble

3 Cevap php

I'm learning by reading this tutorial: Link Here's the code:

<?php

require_once 'Zend/Loader.php';

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    public static $root = '';
    public static $frontController = null;

    public static function run(){
        self::setupEnvironment();
        self::prepare();
        $response = self::$frontController->dispatch();
        self::sendResponse($response);
    }

    public static function setupEnvironment(){
        error_reporting(E_ALL|E_STRICT);
        ini_set('display_startup_errors',true);
        ini_set('display_errors',true);
        date_default_timezone_set('Europe/London');
        self::$root = realpath('..');
        define('APP_ROOT', self::$root);
        spl_autoload_register(array(__CLASS__,'autoload'));

    }
}

?>

Ben bu hatayı aldıktan ediyorum:

Ölümcül hata: olmayan statik yöntem Zend_Application_Bootstrap_Bootstrap :: run (C sınıf Bootstrap) statik yapamazsınız: XAMPP \ \ xampp \ htdocs MerhabaDünya \ uygulama \ \ bootstrap.php hattı 6

Ben yanlış ne yapıyorum?

3 Cevap

Eğer dikkatli bakarsanız hata her şeyi söylüyor:

Cannot make olmayan statik yöntem Zend_Application_Bootstrap_Bootstrap :: run() static

Yani çalışma yöntemi def Statik değiştirici çıkarın.

public static function run(){ public function run(){ ile değiştirmeyi deneyin

Bir yöntem sadece durağan çağrılan olabilir

  1. Bu, statik olarak tanımlanmaktadır
  2. herhangi bir statik olmayan beyanname için hiçbir başvuru yapar

Statik işlevleri standart yöntemlerle daha onları (marjinal) hızlı kılan herhangi bir bağlam olmadan çalıştırabilirsiniz, ancak bazı kısıtlamaları ile olmasıdır. Bkz PHP Manual for Static keyword

Kodda, sınıf Bootstrap statik olarak () çalıştırın bildirir, ancak üst sınıf Zend_Application_Bootstrap_Bootstrap bir yöntem koşmak () aşırı yüklenme var.

Eğer üst sınıf için kod bakarsanız, onun fonksiyonu run () statik olarak ilan edilmez ki. Aşırı yüklenmiş yöntemler, üst yöntemi beyanı eşleşmesi gerekir beri, bu beyan (veya çağırmak) BOOTSTRAP :: run () statik olarak değil anlamına gelir.

Çözüm statik beyanı kaldırmak için kodunuzu değiştirmek için.

public function run(){
    self::setupEnvironment();
    self::prepare();
    $response = self::$frontController->dispatch();
    self::sendResponse($response);
}

Ben sadece bir sonucu olarak daha fazla statik ilgili hataları içine edeceğiz emin değil Zend kullanmak, yani yok. Temelde, öğretici karşı kodunuzu kontrol ve eşleşirse sonra başka öğretici izleyin; bu bir yanlış olmalı.