WordPress-plugin for stylingvalg. IkSelect er det perfekte pluginet for stylingvalg

Sist oppdatert: 1.11.2015

Når du lager et program i PHP og dets individuelle blokker, kan funksjonaliteten som funksjoner representerer være nok for oss. Imidlertid har PHP andre funksjoner for programoppretting som objektorientert programmering representerer. I noen tilfeller er programmer som bruker OOP lettere å forstå, lettere å vedlikeholde og endre.

Nøkkelbegrepene i OOP-paradigmet er begrepene "klasse" og "objekt". Beskrivelsen av et objekt er en klasse, og et objekt representerer en forekomst av den klassen. Vi kan tegne følgende analogi: alle har en ide om en person - tilstedeværelsen av to armer, to ben, et hode, et fordøyelsessystem, et nervesystem, en hjerne, etc. Det er en viss mal - denne malen kan kalles en klasse. Men en virkelig eksisterende person (faktisk en forekomst av en gitt klasse) er et objekt av denne klassen.

For å lage en klasse i PHP brukes nøkkelordet klasse . For eksempel, en ny klasse som representerer en bruker:

ClassUser()

For å lage et objekt av brukerklassen, bruk det nye nøkkelordet:

I dette tilfellet er $user-variabelen et objekt av User-klassen. Ved å bruke print_r()-funksjonen kan du skrive ut innholdet i et objekt, akkurat som med matriser.

Egenskaper og metoder

En klasse kan inneholde egenskaper som beskriver noen egenskaper ved et objekt, og metoder som definerer dets oppførsel. La oss legge til flere egenskaper og metoder til brukerklassen:

Navn ; Alder: $this->age
"; ) ) $user = ny bruker; $user->name="Tom"; // sette $name-egenskapen $user->age=30; // sette $age-egenskapen $user->getInfo(); // kall getInfo()-metoden print_r($user); ?>

Her inneholder User-klassen to egenskaper: $name og $age . Egenskaper er deklarert som normale variabler, innledet av en tilgangsmodifikator - i dette tilfellet den offentlige modifikatoren.

Metoder representerer vanlige funksjoner som utfører spesifikke handlinger. Her viser getInfo()-funksjonen innholdet i tidligere definerte variabler.

For å få tilgang til det gjeldende objektet fra samme klasse, brukes $this-uttrykket - det representerer det gjeldende objektet. For å få tilgang til egenskapene og metodene til et objekt, brukes tilgangsoperatøren ->. For eksempel, for å få verdien av $name-egenskapen, bruker du uttrykket $this->name . Dessuten, når du får tilgang til egenskaper, brukes ikke $-tegnet.

Når du bruker et User-klasseobjekt, bruker du også en tilgangsoperatør for å hente eller angi verdien av egenskaper og kalle metoder.

Konstruktører og destruktorer

Konstruktører representerer spesielle metoder som utføres når et objekt opprettes og tjener til å initialisere dets egenskaper. For å lage en konstruktør må du deklarere en funksjon kalt __construct (med to understrekinger foran):

navn = $navn; $this->age = $age; ) funksjon getInfo() ( echo "Navn: $this->name ; Alder: $this->age
"; ) ) $user2 = ny bruker("John", 33); $user2->getInfo(); ?>

Konstruktørfunksjonen i dette tilfellet tar to parametere. Verdiene deres overføres til klasseeiendommer. Og nå for å lage et objekt, må vi sende verdier for de tilsvarende parameterne: $user2 = new User("John", 33);

Standard instillinger

For å gjøre konstruktøren mer fleksibel, kan vi angi en eller flere parametere som valgfrie. Deretter, når du oppretter et objekt, er det ikke nødvendig å spesifisere alle parameterne. La oss for eksempel endre konstruktøren som følger:

Funksjon __construct($name="Volum", $age=33) ( $this->name = $name; $this->age = $age; )

På denne måten, hvis ingen parametere er oppgitt, vil verdiene "Volum" og 33 bli brukt i stedet. Og nå kan vi opprette et brukerobjekt på flere måter:

$user1 = ny bruker("John", 25); $user1->getInfo(); $user2 = ny bruker("Jack"); $user2->getInfo(); $user3 = ny bruker(); $user3->getInfo();

Ødeleggere

Destruktorer brukes til å frigjøre ressurser som brukes av programmet - for å frigjøre åpne filer, åpne databasetilkoblinger, etc. Objektdestruktoren kalles opp av PHP-tolkeren selv etter at den siste referansen til dette objektet i programmet er tapt.

En destruktor er definert ved hjelp av __destruct-funksjonen (to understrekinger foran):

Klassebruker ( offentlig $name, $age; function __construct($name, $age) ( $this->name = $name; $this->age = $age; ) function getInfo() ( echo "Name: $this ->navn; Alder: $this->age
"; ) funksjon __destruct() ( ekko "Call destructor"; ) )

Destructor-funksjonen er definert uten parametere, og når objektet ikke lenger er referert i programmet, vil det bli ødelagt, og destructoren vil bli kalt.

Klasseobjekt- en representant for en klasse som har sin egen unike tilstand og oppførsel.
For å erklære et objekt, må du bruke den nye operatoren:

Objekt = nytt klassenavn;

PHP

$myObj = new newClass();

Klasseegenskaper

Eiendom– dette er variabler som er lagret i klassen; en av følgende modifikatorer plasseres foran egenskapsnavnet (offentlig, beskyttet, privat). Det er også et var nøkkelord, men tiden har gått (forble i PHP versjon 4).

Beskrivelse av eiendommer

PHP

klasse newClass ( offentlig $property1; beskyttet $property2 = "verdi2"; privat $property3; )

Få tilgang til klasseegenskaper

Tilgang til klasseegenskaper utenfor klassen implementeres slik: objekt->

PHP

$myObj = new newClass(); $myObj->property1;

Endring av eiendomsverdier

PHP

$myObj->property2 = "Vi endrer verdien her";

Klassemetoder

Metode er en funksjon definert i en klasse. Funksjonen har den offentlige modifikatoren som standard (det vil si at den ikke trenger å skrives før funksjonen).

Beskrivelse av metoder

PHP

klasse newClass ( function myMethod($var1,$var2)( // som standard er dette // en offentlig metode (offentlig) // operatorer ) )

Kalle en metode

PHP

$myObj = new newClass(); $myObj->myMethod("v1","v2");

$dette

En klasseegenskap i en klasse får tilgang ved å bruke operatøren($this):
$this->property_name; (det er ingen dollartegn for eiendommen!)

En klassemetode fra en annen klassemetode er også tilgjengelig ved å bruke nøkkelordet $this.

PHP

klasse newClass ( public $property1; function myMethod())( echo($this->property1); // Skriv ut egenskapsverdien ) function callMethod())( $this->myMethod(); // Kall metoden ) )

Konstruktører og destruktorer

Klasse konstruktør er en spesiell metode som automatisk kalles når et objekt opprettes.
Parentes etter klassenavnet(ved initialisering av et objekt) er nødvendig for å sende funksjonsparametere til konstruktøren.

Destruktor– en spesiell metode som kalles automatisk når et objekt slettes. P.s. Rekkefølgen objekter slettes i er ikke definert, men det er verdt å merke seg at objektene vil bli slettet når koden er fullført (rekkefølgen objekter slettes kan ikke bestemmes), og __destruct-metoden vil bli kalt. Et objekt kan slettes med makt: unset(objektnavn) .

PHP

klasse newClass ( public $property; function __construct($var)( $this->property = $var; echo "Call the constructor"; ) function __destruct())( echo "Call the destructor"; ) ) $obj = new newClass(" Betydning"); //Kall konstruktøren unset($obj); //Ring destruktoren (tvunget)

Pseudokonstanter __METHOD__ og __CLASS__

Pseudokonstanter __METODE__ og __KLASSE__ . I stedet for __METHOD__ vil følgende bli erstattet: class_name::method_name; __KLASSE__ vil bli erstattet med klassenavnet.

PHP

klasse newClass ( function myMethod())( echo __METHOD__; ) function getClassName() ( echo __CLASS__; ) ) $obj = new newClass(); $obj->myMethod();// newClass::myMethod $obj->getClassName();// newClass

Nye prinsipper for arbeid med objekter

Objekter sendes ved referanse, ikke etter verdi

PHP

klasse newClass ( public $property; ) $myObj = new newClass(); $myObj->property = 1; $myObj2 = $myObj; $myObj2->property = 2; print($myObj->property); // Print 2 print($myObj2->property); // Utskrifter 2

Kloning av et objekt

Ved kloning (kloning) kalles ikke konstruktøren. Det er en spesiell metode __clone som kalles når et objekt klones.

Eksplisitt kopiering av objekter

PHP

klasse newClass ( public $property; ) $myObj = new newClass(); $myObj->property = 1; $myObj2 = klone $myObj; // lag en kopi av objektet, i den fjerde versjonen av PHP var det slik: $myObj2 = &$myObj; // i versjon 5 av PHP & fungerer ikke med objektene $myObj2->property = 2; print($myObj->property); // Skriver ut 1 utskrift($myObj2->property); // Utskrifter 2

Arv (polymorfisme)

En klasse kan arve en annen klasse. Det er et spesielt nøkkelord for dette - forlenger.

PHP

klasse Maskin ( public $numWheels = 4; function printWheels() ( echo $this->numWheels; ) ) klasse Toyota utvider Machine ( public $country = "Japan"; function printCountry() ( echo $this->country; ) ) $myMachine = ny Toyota(); $myMachine->printWheels(); $myMachine->printCountry();

Metode Overbelastning

Metode Overbelastning– i en klasse som arver en annen klasse, kan du beskrive den samme metoden som er i den overordnede klassen, og den nylig beskrevne metoden vil overskrive metoden til den overordnede klassen. Eksempel:

PHP

klasse Maskin ( public $numWheels = 4; function printWheels() ( echo $this->numWheels; ) ) klasse Toyota utvider Machine ( public $country = "Japan"; function printCountry() ( echo $this->country; ) funksjon printWheels() ( echo "Overloaded printWheels() method "; ) ) $myMachine = new Toyota(); $myMachine->printWheels();

Foreldre

parent::method_name, denne konstruksjonen lar deg få tilgang til overordnet metode.

PHP

class Machine ( public $numWheels = 4; function printWheels() ( echo $this->numWheels; ) ) class Toyota extends Machine ( public $country = "Japan"; function printWheels() ( echo "Overloaded printWheels() method"; parent:: printWheels(); ) ) $myMachine = new Toyota(); $myMachine->printWheels();

Tilgangsmodifikatorer: offentlig, beskyttet, privat

Tilgangsmodifikatorer: hvordan fungerer de?

PHP

$obj = ny nyKlasse(); echo $obj->public; //YES echo $obj->beskyttet; //NEI! echo $obj->privat; //NO $obj->myMethod();

PHP

klasse newClass ( public $public = 1; protected $protected = 2; private $private = 3; function myMethod())( echo $this->public; //YES echo $this->protected; //YES echo $this - >privat; //JA ))

PHP

$obj1 = ny NewClass(); echo $obj1->public; //JA echo $obj1->beskyttet; //NEI! echo $obj1->privat; //NO $obj1->newMethod();

PHP

klasse NewClass utvider newClass ( funksjon newMethod())( echo $this->protected; //YES echo $this->private; //NO $this->myMethod(); ) )

Avvikshåndtering

Vi har et stykke kode der det kan oppstå en feil; Denne kodebiten er plassert i en blokk kalt try ; på stedet der en feil kan oppstå, plasseres nøkkelordet throw; For å fange opp en feil som har oppstått beskrives en catch-blokk, det sendes en feil som vi kan jobbe med.

PHP

try ( $a = 1; $b = 0; if($b == 0) throw new Exception("Division med 0!"); echo $a/$b; ) catch(Exception $e)( echo "Oppstod" error - ", $e->getMessage(), // Viser meldingen " in line ", $e->getLine(), // Viser linjenummeret til " file ", $e->getFile(); // Viser navnefilen)

Lag dine egne unntak

PHP

сlass MathException utvider Exception ( funksjon __construct($message) ( parent::__construct($message); ) ) prøv ( $a = 1; $b = 0; // MathException - navnet på klassen for å lage ditt eget unntak hvis ( $b = = 0) kast ny MathException("Del med 0!"); echo $a / $b; ) catch (MathException $e) (ekko "En matematisk feil oppstod", $e->getMessage(), " in line ", $e->getLine(), " file ", $e->getFile(); )

Sløyfe gjennom objektegenskaper

PHP

klasse Person ( offentlig $navn; offentlig $yearOfBorn; funksjon __construct($name, $yearOfBorn)( $this->name = $name; $this->yearOfBorn = $yearOfBorn; ) ) $billGates = new Person('Bill Gates ', 1955); foreach($billGates as $name=>$value)( print($name.’: '.$value.'
’); }

Klassekonstanter

Konstanter er klassekonstanter, det vil si at de ikke tilhører noe objekt. Utenfor koden kan du få tilgang til en konstant som følger: klassenavn::konstantnavn. Hvis vi ønsker å få tilgang til en konstant i en klasse, må vi bruke selv-nøkkelordet: self::constant_name.

PHP

klasse Person ( const HANDS = 2; function printHands())( print (self::HANDS);// NOT $this! Refering to a constant in the class ) ) print ("Antall hender: ".Person::HANDS ); // Få tilgang til konstanten utenfor klassen

Abstrakte metoder og klasser

Abstrakt klasse i php- dette er den såkalte basisklassen, ikke ment for å lage dens instanser (objekter). Hovedbetydningen og formålet med abstrakte klasser er å utvide mulighetene til barneklassene.

Klasser kan være abstrakte. En abstrakt klasse lar oss abstrahere bort fra mindre ting, og gir oss dermed muligheten til å konsentrere oss om mer subtile nyanser.

En abstrakt klasse kan ha abstrakte metoder(funksjonen innledes med det abstrakte nøkkelordet). En abstrakt metode er en metode uten implementering (ingen bukseseler).

En abstrakt metode skal beskrives (overbelastet) i etterkommerklassen. Fordelen med å bruke abstrakte metoder: for hver etterkommerklasse kan du beskrive den unike oppførselen til den abstrakte metoden.

PHP

abstrakt klasse Maskin ( // abstrakt klasse offentlig $petrol; funksjon startEngine())( print("Motoren har startet!"); ) abstrakt funksjon stopEngine(); ) klasse InjectorMachine utvider Maskin ( offentlig funksjon stopEngine())( print (" Motoren har stoppet!"); ) ) $myMegaMachine = new Machine();//Feil! $myMegaMachine = ny InjectorMachine(); $myMegaMachine->startEngine(); $myMegaMachine->stopEngine();

Grensesnitt

Det er en annen type abstrakt klasse - et grensesnitt. Grensesnitt er en abstrakt klasse som kun inneholder abstrakte metoder. Før en slik klasse skrives grensesnitt i stedet for ordet abstrakt. Arv fra et grensesnitt skjer ikke gjennom extends-nøkkelordet, men gjennom implements-nøkkelordet.

PHP

interface Hand ( function useKeyboard(); function touchNose(); ) interface Foot ( function runFast(); function playFootball(); ) klasse Person implementerer Hand ( public function useKeyboard() ( ekko "Bruk tastatur!"; ) offentlig funksjon touchNose ()( echo "Touch nose!"; ) public function runFast())( echo "Run fort!"; ) public function playFootball())( echo "Spill fotball!"; ) ) $vasyaPupkin = new Person(); $vasyaPupkin->touchNose();

Endelige metoder og klasser

Det siste nøkkelordet plasseres foran metoden; dette forhindrer at metoden lastes på nytt (overskrives). Klassen kan også erklæres endelig.

PHP

klasse Mathematics ( final function countSum($a,$b)( print("Sum: " . $a + $b); ) ) klasse Algebra utvider Mathematics ( // En feil vil oppstå offentlig funksjon countSum($a,$b )( $c = $a + $b; print("Summen av $a og $b: $c"); ) )

PHP

final class Breakfast ( // final class function eatFood($food)( print("Vi spiste $mat!"); ) ) // En feil vil oppstå klasse McBreakfast utvider frokost ( // Klassebeskrivelse )

Statiske egenskaper og metoder for en klasse

Statiske metoder og egenskaper til en klasse (pluss klassekonstanter) tilhører klassen, det vil si at de er felles for alle objekter i klassen. De kan ikke nås ved å bruke ‛pilen‛, men bare gjennom:: (innenfor klassen bruk: self::$property_name; utenfor klassen: class_name::$property_name). En statisk egenskap, som en metode, deklareres ved å bruke det statiske nøkkelordet. Som du kanskje gjetter, kan du ikke bruke dette i en statisk metode (slike metoder er ikke assosiert med objekter).

PHP

klasse CookieLover ( statisk $loversCount = 0; // dette er en statisk egenskap og kompilatoren vil ikke // fjerne den etter funksjonen __construct-funksjonen __construct())( ++self::$loversCount; ) statisk funksjon velkommen()) ( echo " Welcome to the club of bun lovers!"; //No $this in a static method! ) ) $vasyaPupkin = new CookieLover(); $frosyaBurlakova = new CookieLover(); print("Nåværende antall cookie-elskere: ".CookieLover::$loversCount); print(CookieLover::velkommen());

forekomst av søkeord

Noen ganger må du finne ut om det gjeldende objektet er en arving av en bestemt klasse eller grensesnitt. Forekomsten av nøkkelordet brukes til dette.

PHP

klasse Person() $myBoss = ny person(); if($myBoss instanceOf Person) print("Sjefen min er en person!"); // vil returnere true hvis Person-klassen er i objektets forfedre $myBoss-klassen Woman extends Person () $englishQueen = new Woman(); if($englishQueen instanceOf Person) print("Dronningen av England er også en person!"); grensesnitt LotsOfMoney()-klassen ReachPeople implementerer LotsOfMoney() $billGates = new ReachPeople(); if($billGates instanceOf LotsOfMoney) print("Bill Gates har mye penger!");

__autoload() funksjon

Hvis PHP støter på en ikke-eksisterende klasse ved initialisering av et objekt, ser den etter __autoload-funksjonen, og sender navnet på den ikke-navngitte klassen til __autoload-funksjonen. Og PHP vil kalle denne funksjonen før du kaster en manglende klassefeil.

PHP

funksjon __autoload($cl_name)( // $cl_name er navnet på en ikke funnet klasseutskrift("Forsøker å lage et objekt av klassen ".$cl_name); ) $obj = new undefinedClass();

Metoder for tilgang til objektegenskaper

Metoden __set() vil bli utført når poster data til utilgjengelige eiendommer (som ikke er i klassen).

Metoden __get() vil bli utført når lesning data fra utilgjengelige eiendommer (som ikke er i klassen).

PHP

klasse newClass ( private $properties; funksjon __get($name)( print("Leser verdien av egenskapen $name"); returner $this->properties[$name]; ) funksjon __set($navn,$verdi)( / / i vårt tilfelle er $name en egenskap, $value er lik 1 print("Angi en ny egenskap $name = $value"); $this->properties[$name] = $value; ) ) $obj = ny nyKlasse; $obj->property = 1; // Skriv en ny egenskap $a = $obj->property; // Lese egenskapsverdien print $a; // 1

Overbelastning av anrop til ikke-eksisterende metoder

Hvis vi kaller metoden som ikke finnes, så ser PHP etter __call-metoden (1. parameter er navnet på en ikke-eksisterende metode, 2. er en rekke argumenter).

PHP

klasse newClass ( funksjon __call($navn, $params)( print("Forsøker å kalle metode $name med følgende parametere: "); print_r($params); ) ) $obj = new newClass(); $obj->megaMethod(1,2,3,"fire");

__toString()-metoden

Metoden __toString() lar klassen bestemme hvordan den skal reagere når den konverteres til en streng. For eksempel, hva vil ekko $obj; print? . Denne metoden må returnere en streng, ellers vil den gi en uopprettelig E_RECOVERABLE_ERROR feil.

PHP

klasse newClass ( funksjon __toString())( returner "Method __toString() ble kalt"; ) ) $obj = new newClass(); // __toString() metode kalt echo $obj;

Siden det er klasser som beskriver objekter, vil vi begynne beskrivelsen med definisjonen av klasser.

Klassedefinisjon

En klasse er et kodemønster som brukes til å lage objekter. En klasse er definert ved å bruke klassenøkkelordet etterfulgt av et vilkårlig klassenavn. Klassenavnet kan bruke hvilken som helst kombinasjon av bokstaver og tall, men de må ikke begynne med et tall. Koden knyttet til en klasse må være omsluttet av krøllete klammeparenteser, som vises etter navnet. En klassedefinisjon beskriver hvilke elementer hver nye forekomst av den klassen vil inneholde. Basert på dataene som er oppnådd, la oss se på klassedefinisjonssyntaksen ved å bruke et eksempel:

Den første klassen fra eksemplet ovenfor er allerede en fullverdig klasse, selv om den ikke er veldig nyttig ennå. Men likevel gjorde vi noe veldig viktig. Vi har definert typen, dvs. opprettet en kategori med data som vi kan bruke i skriptene våre. Viktigheten av dette vil bli tydelig for deg når du leser videre i kapittelet.

Opprette et objekt

Siden en klasse er en mal for å lage objekter, er derfor et objekt data som er opprettet og strukturert i henhold til malen som er definert i klassen. Et objekt kalles også en forekomst av en klasse hvis type bestemmes av klassen. For å opprette en ny forekomst av en klasse, trenger vi den nye operatoren. Det brukes i forbindelse med klassenavnet som følger:

Etter den nye operatøren angis navnet på klassen som objektet vil bli opprettet på grunnlag av. Den nye operatoren oppretter en forekomst av en klasse og returnerer en referanse til det nyopprettede objektet. Denne referansen er lagret i en variabel av passende type. Som et resultat av å kjøre denne koden, vil to objekter av typen først bli opprettet. Selv om de er funksjonelt identiske (dvs. tomme), er $obj1 og $obj2 to forskjellige objekter av samme type, opprettet med samme klasse.

Hvis du fortsatt er forvirret, la oss bruke en analogi fra det virkelige liv. Tenk deg at en klasse er en støpeform som brukes til å lage plastbiler. Objekter er biler. Typen gjenstander som lages bestemmes av formen på avstøpningen. Bilene ser like ut på alle måter, men de er fortsatt forskjellige objekter. Det er med andre ord forskjellige tilfeller av samme type.

La oss gjøre disse objektene litt mer interessante ved å modifisere den første klassen til å inkludere spesielle datafelt kalt egenskaper.

Definere egenskaper

Variabler kan defineres i en klasse. Variabler som er definert i en klasse kalles egenskaper (eller datafelt). De er definert med et av de beskyttede, offentlige eller private nøkkelordene som kjennetegner tilgangskontroll. Vi vil se nærmere på disse nøkkelordene i neste kapittel. La oss nå definere noen egenskaper ved å bruke det offentlige søkeordet:

Som du kan se, har vi definert to egenskaper, og tilordner en verdi til hver av dem. Nå vil alle objekter som vi lager ved å bruke den første klassen ha to egenskaper med de angitte verdiene.

Merk: initialisering av egenskapsverdier må være bokstavelige (konstante verdier), det er ikke nødvendig å initialisere egenskaper i klassen (hvis en verdi ikke er spesifisert, vil den som standard være NULL).

Objektegenskaper kan nås ved å bruke " -> "-symbolene, som spesifiserer objektet og egenskapsnavnet. Siden objektenes egenskaper er definert som offentlige, kan vi lese verdiene deres og også tilordne nye verdier til dem, og dermed erstatte startverdiene definert i klassen:

str; // tilordne en ny verdi til objektegenskapen $obj->str = "ny linje"; ekko "
$obj->str"; ?>

Faktisk, i PHP er det ikke nødvendig å deklarere alle egenskaper i en klasse. Egenskaper kan legges til et objekt dynamisk:

newprop = "ny egenskap"; echo $obj->newprop; ?>

Det skal bemerkes at denne metoden for å tilordne egenskaper til objekter anses som dårlig form i objektorientert programmering og blir nesten aldri brukt.

Arbeid med metoder

Metoder er vanlige funksjoner som er definert innenfor en klasse, de lar objekter utføre ulike oppgaver. En metodeerklæring ligner en vanlig funksjonsdefinisjon, bortsett fra at den innledes med et av de beskyttede, offentlige eller private nøkkelordene. Hvis du utelater synlighetsnøkkelordet i en metodedefinisjon, vil metoden bli erklært implisitt offentlig. Et objekts metoder kan nås ved å bruke " -> "-symbolene, som spesifiserer objektet og metodenavnet. Når du kaller en metode, akkurat som når du kaller en funksjon, må du bruke parenteser.

str; ) ) $obj = ny først(); // kaller objektmetoden $obj->getstr(); ?>

Vi har lagt til metoden getstr() til den første klassen. Legg merke til at vi ikke brukte et scope-nøkkelord når vi definerte metoden. Dette betyr at getstr()-metoden er av offentlig type og kan kalles utenfor klassen.

I metodedefinisjonen brukte vi en spesiell pseudovariabel $this. Den brukes til å få tilgang til metoder eller egenskaper i en klasse og har følgende syntaks:

$this->variabel eller metodenavn

Klasse først ( public $str = "noe tekst"; // når du definerer en metode i en klasse, har $this variabel ingen verdifunksjon getstr() ( echo $this->str; ) ) // lag et objekt $obj = ny først (); // objektet vi laget har en egenskap og en metode // nå i objektets metode har variabelen $this // en lenke til det aktuelle objektet, nemlig $obj // dvs. hvis vi i en metode erstatter $this med gjeldende forekomst av objektet $this->str; // dette vil se ut som en enkel // tilgang til en egenskap for det gjeldende objektet $obj->str;

Merk: $this kan ikke tildeles noe. Husk at $this alltid refererer til det gjeldende objektet.

Spesiell metode - konstruktør

En klasse kan ha en spesiell metode definert - konstruktør, som kalles hver gang en ny forekomst av klassen (objektet) opprettes for å initialisere den, for eksempel sette egenskapsverdier. En konstruktør, som enhver annen metode, kan ha parametere. For å definere en metode som en konstruktør, må du kalle den __construct() . Vær oppmerksom på at metodenavnet må begynne med to understrekinger. La oss se hvordan det fungerer:

num1 = $num1; $this->num2 = $num2; ) // metode som legger til to tall funksjon summa() ( return $this->num1 + $this->num2; ) ) // lag et objekt og send to argumenter $obj = new first(15, 35); // kall opp metoden og vis umiddelbart resultatet av arbeidet echo $obj->summa(); ?>

__construct-metoden kalles når et objekt opprettes ved hjelp av den nye operatoren. Argumentene spesifisert i parentes sendes til konstruktøren. Konstruktørmetoden bruker $this pseudovariabel for å tilordne verdier til de tilsvarende egenskapene til objektet som opprettes.

Merk: hvis konstruktøren ikke har noen parametere og ingen argumenter sendes når du oppretter nye forekomster av klassen, kan parentesene () etter klassenavnet utelates: $obj = new first;

Spesifisering av argumenttype i metoder

Som standard kan en metode godta argumenter av alle typer, men det er tider når du vil sikre at en metode bare kan akseptere forekomster av en bestemt klasse som et argument. For å indikere hvilken type argument som er akseptert, plasser ganske enkelt navnet på klassen før parameternavnet i metodedefinisjonen:

getobj(ny katt()); // det vil være en feil: en forekomst av typen feil ble sendt som et argument $kitty->getobj(ny feil()); ?>

Nå kan du bare sende forekomster av typen cat som argumenter til getobj()-metoden. Fordi getobj()-metoden inneholder en klassetypekvalifikasjon, vil overføring av et objekt av typen feil resultere i en feil.

Typehintet kan ikke brukes til å definere parametere for primitive typer som strenger, tall osv. For dette formålet bør typekontrollfunksjoner som is_string() brukes i metodeteksten. Det er også mulig å spesifisere at argumentet som sendes er en matrise:

min_arr = $noen_arr; ) ) ?>

Det siste som gjenstår å si er at hvis en metodeparameter er definert med en spesifikk klasse, er det tillatt å spesifisere en standardverdi i tilfelle ingen objekt ble sendt til metoden. Bare NULL kan brukes som standardverdi:

Funksjon getobj(cat $getCat = null) ( $this->someVar = $getCat; )

Hvis du spesifiserer en annen standardverdi i stedet for NULL, vil en feil oppstå.