Menu
Coddy logo textTech

Metody i właściwości statyczne

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 17 z 91.

Podobnie jak właściwości mogą być statyczne, metody również mogą należeć do samej klasy, a nie do poszczególnych obiektów. Metody statyczne wywołuje się bezpośrednio na klasie, bez konieczności wcześniejszego tworzenia instancji.

Deklarujesz metodę statyczną za pomocą słowa kluczowego static i wywołujesz ją, używając nazwy klasy oraz operatora :::

<?php
class MathHelper {
    public static function add($a, $b) {
        return $a + $b;
    }
    
    public static function multiply($a, $b) {
        return $a * $b;
    }
}

echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);

Wynik:

8
8

Metody statyczne dobrze współpracują ze właściwościami statycznymi. Często stosowanym wzorcem jest użycie metody statycznej do zarządzania współdzielonymi danymi klasy:

<?php
class Counter {
    private static $count = 0;
    
    public static function increment() {
        self::$count++;
    }
    
    public static function getCount() {
        return self::$count;
    }
}

Counter::increment();
Counter::increment();
echo Counter::getCount();

Wynik:

2

Zauważ, że metody statyczne nie mogą używać $this, ponieważ nie ma instancji obiektu. Mogą uzyskiwać dostęp tylko do właściwości statycznych i innych metod statycznych za pomocą self::.

Najważniejsza informacja: Metody statyczne są przydatne w przypadku funkcji użytkowych, które nie potrzebują stanu obiektu, lub do zarządzania danymi na poziomie klasy. Zapewniają funkcjonalność bez konieczności tworzenia instancji obiektu.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system generatora identyfikatorów, który używa metod i właściwości statycznych do tworzenia unikalnych identyfikatorów bez konieczności tworzenia instancji obiektów.

Utworzysz dwa pliki, aby uporządkować swój kod:

  • IdGenerator.php: Zdefiniuj klasę IdGenerator, która zarządza generowaniem unikalnych identyfikatorów, używając wyłącznie składowych statycznych. Klasa powinna mieć prywatną właściwość statyczną $lastId, której początkowa wartość to 0, oraz prywatną właściwość statyczną $prefix ustawioną na "ID". Utwórz metodę statyczną generate(), która zwiększa wartość ostatniego identyfikatora i zwraca sformatowany ciąg łączący prefiks z nowym identyfikatorem (na przykład "ID1", "ID2" itd.). Dodaj metodę statyczną setPrefix($newPrefix), która zmienia prefiks, oraz metodę statyczną getLastId(), która zwraca bieżącą wartość $lastId.
  • main.php: Dołącz plik klasy IdGenerator. Wygeneruj dwa identyfikatory z domyślnym prefiksem i wypisz każdy w osobnym wierszu. Następnie zmień prefiks na "USER" za pomocą metody statycznej, wygeneruj dwa kolejne identyfikatory i wypisz każdy z nich. Na koniec wypisz numer ostatniego identyfikatora, wywołując odpowiednią metodę statyczną.

Pamiętaj, że metody statyczne wywołuje się bezpośrednio na klasie za pomocą ClassName::methodName(), a wewnątrz klasy dostęp do właściwości statycznych uzyskuje się za pomocą self::$propertyName. Ponieważ nie ma instancji obiektu, w metodach statycznych nie możesz używać $this.

Wynik powinien pokazywać kolejne identyfikatory z różnymi prefiksami, demonstrując, jak właściwości statyczne zachowują swoje wartości przy wielokrotnych wywołaniach metod.

Spróbuj swoich sił

<?php

// Dołącz plik klasy IdGenerator
require_once 'IdGenerator.php';

// TODO: Wygeneruj dwa identyfikatory z domyślnym prefiksem i wypisz każdy w osobnym wierszu

// TODO: Zmień prefiks na "USER" za pomocą metody statycznej

// TODO: Wygeneruj dwa kolejne identyfikatory i wypisz każdy w osobnym wierszu

// TODO: Wypisz numer ostatniego identyfikatora za pomocą odpowiedniej metody statycznej

?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online