Sobes.tech
Junior

Mis on võtmesõna final eesmärk PHP-s?

sobes.tech AI

Vastus AI-lt

Võtmesõna final kasutatakse klasside, meetodite ja konstantide ülekirjutamise vältimiseks.

Rakendus:

  • Klassid: Kui klass on märgitud final, seda pärida ei saa.

    <?php
    final class Base {
        // ...
    }
    
    // Fataalne viga: Class Derived ei saa pärida final klassilt Base
    // class Derived extends Base {
    //     // ...
    // }
    
  • Meetodid: Kui klassi meetod on märgitud final, seda ei saa alampõhjaklassis üle kirjutada.

    <?php
    class Base {
        final public function process() {
            // ...
        }
    }
    
    class Derived extends Base {
        // Fataalne viga: Ei saa üle kirjutada final meetodit Base::process()
        // public function process() {
        //     // ...
        // }
    }
    
  • Konstantid: Alates PHP 8.1-st võivad klassikonstantid olla samuti märgitud final-ina. See takistab nende ülekirjutamist alampõhjaklassides.

    <?php
    class Base {
        final public const VERSION = '1.0';
    }
    
    class Derived extends Base {
        // Fataalne viga: Ei saa üle kirjutada final konstantat Base::VERSION
        // public const VERSION = '1.1';
    }
    

final eesmärk:

  • Turvalisus: Tagab, et põhiloogika või eeldatav käitumine klassi/metood ei muutu alamklassides.
  • API stabiilsus: Tagab, et konkreetne meetodi või klassi rakendus ei muutu, mis on eriti oluline raamatukogude arendamisel.
  • Jõudlus (vähemalt): Mõnel juhul võib see võimaldada kompilaatoril teha agressiivsemaid inline-optimatsioone, kuna on teada, et meetod ei muutu üle kirjutatuks.