2017-01-06 3 views
-2

Sagen wir, ich habe eine Klasse:Können Sie eine statische Methode außerhalb einer Klasse definieren?

class test { 
    public static function sayHi() { 
     echo 'hi'; 
    } 
} 

Anruf durch test::sayHi();

Kann ich sayHi() außerhalb der Klasse definieren oder vielleicht der Klasse ganz loswerden?

public static function sayHi() { 
     echo 'hi'; 
} 

Ich brauche nur diese Funktion, um Code für ein Skript einzukapseln. Vielleicht ist die Antwort keine statische Methode, sondern eine einfache Funktion def?

+0

Ähnlich? http://StackOverflow.com/Q/15608255 –

+0

@PraveenKumar Ähnlich, aber sicherlich kein Betrogener. –

+0

Deshalb habe ich nicht geschlossen. ': D' –

Antwort

1

Eine statische Methode ohne Klasse macht überhaupt keinen Sinn. Die statischen Schlüsselwörter signalisieren, dass diese Methode für alle Instanzen der Klasse identisch ist. Dies ermöglicht es Ihnen, es ... naja ... statisch auf der Klasse selbst statt auf einer ihrer Instanzen zu nennen.

Wenn der Inhalt der Methode in sich abgeschlossen ist, dh keine anderen statischen Variablen oder Methoden der Klasse benötigt, können Sie die Klasse einfach weglassen und den Code in eine globale Methode einfügen. Die Verwendung globaler Methoden wird als eine schlechte Praxis angesehen.

Also mein Rat ist, nur die Klasse zu halten, auch wenn es nur diese eine Methode innerhalb hat. Auf diese Weise können Sie die Datei immer noch automatisch laden, anstatt sie selbst zu benötigen.

+0

Wie lautet die Syntax für eine globale Methode? –

+0

Funktion sayHi() {} ---- Standardmäßig ist jede Funktion öffentlich ... sogar in Klassen. Sie brauchen nicht "statisch" oder "global" in Funktionen, vielleicht in Variablen, aber nicht in Funktionen. – Asfo

0

Funktionen in OOP Öffentlichkeit sind standardmäßig, können Sie sie an private wie ändern:

Oder wie Sie gesagt haben, zu statisch, in öffentlichen oder privaten wie:

private static function test(){ 
    //do something 
} 

Aber wenn Sie verwenden OOP nicht, Funktionen sind standardmäßig global und öffentlich, Sie können ihren Zugriff auf private nicht ändern. Das ist nicht die Art, wie sie funktionieren sollen, denn wenn Sie ihren Typ auf privat ändern, werden Sie NIEMALS auf diese Funktion zugreifen können. Static funktioniert auch nicht, weil eine andere Eigenschaft von OOP ist ...

Dann können Sie einfach diese Funktion erstellen und darauf zugreifen, wo immer Sie wollen (natürlich wo verfügbar ist: P, weil Sie die Datei wo einschließen müssen wird gespeichert)

Verwandte Themen