*   >> Lezen Onderwijs artikelen >> science >> programming

Zichtbaarheid in Php Classes

zichtbaarheid in PHP klassen object-georiënteerd programmeren in PHP - Deel 6 Inleiding Dit is deel 6 van mijn serie, object georiënteerd programmeren in PHP. De trefwoorden, openbaar, beschermd en privé kan worden beschouwd als de toegang bestekschrijvers in PHP klassen. In PHP, toegang specifier valt onder het thema, zichtbaarheid. In dit deel van de serie I zichtbaarheid in PHP klassen verklaren. We hebben een van de toegang bestekschrijvers gezien: het publiek. In dit deel van de serie zullen we de betekenis van alle drie en hun toepassingen zien.

Opmerking: Als u de code niet kunt zien of als u denkt dat er iets ontbreekt (gebroken link afbeelding afwezig), neem dan contact met mij op [email protected]. Dat wil contact met mij op voor het geringste probleem dat je hebt over wat je aan het lezen bent. Klasse Structuur De structuur van een klasse is als volgt: class className {accessspecifier eigendom; ... Accessspecifier methode} {...} Een toegang specifier is het sleutelwoord, publieke of beschermde of prive. Elk lid (eigenschap of methode) moet worden voorafgegaan door een toegang specifier.

Als er geen toegang specificeerder is er (getypt) voor een methode, dan is de standaard toegang specifier, uitgegaan van de methode is openbaar. Wat toegang tot de Class Members? Leden van een klasse kan toegang krijgen tot andere leden (eigenschappen en methoden) van dezelfde klasse omschrijving. Functies, operators, statements en andere klassen (objecten) buiten de beschrijving van de klasse van een bepaalde klasse kan ook toegang tot de leden van die klasse, wanneer de klasse is een object.

Een toegang specifier beslist of een functie of operator of klasse, binnen of buiten de beschrijving van de klasse kan toegang tot het lid het binnen zijn klasse controleert. Het lid van een toegangsspecificatie regelt is het lid getypt naast hem in de klas beschrijving. Ik zal statements, functies en klassen in de illustraties van toegang tot de klas. Ik zal geen operators gebruiken voor de illustraties. Ik zal gebruik maken van de zin, "externe functie". Dit verwijst naar een functie of klasse methode die geen lid is van de klasse beschrijving in kwestie.

Ik zal de uitdrukking "uitwendige statement" gebruikt om dezelfde reden. Als ik zeg een externe functie kan toegang krijgen tot een klasse lid, bedoel ik de externe functie kan de naam (variabele van goederen of de naam van de methode) van het lid als argument of een variabele in zijn definitie te gebruiken. Het publiek toegang Specifier Met de toegang van het publiek bestekschrijver, kan een externe functie toegang tot de openbare leden van de klasse.

De volgende code illustreert dit (lees de uitleg hieronder): klasse Calculator {public $ num1; public $ num2; publieke functie add () {$ som = $ this-> num1 + $ this-> num2; terug $ som; }} Functie myFn ($ par) {return $ par; } $ Obj = new Calculator (); $ obj-> num1 = 2; $ obj-> num2 = 3; $ result = $ obj-> toe te voegen (); echo $ result. "$ MyVar = myFn ($ obj-> num1); echo $ myVar;> Er is een functie in de code:? MyFn () U hebt ook de verklaringen die niet in elke functie De eerste regel onder de vrije verklaringen instantieert.. de klasse object genoemd, obj.

lijnen 2 en 3 van de vrije verklaringen gebruik maken van de eigenschappen van de klasse als variabelen. Omdat de cursisten zijn openbaar, kan de vrije verklaringen toegang tot de leden van de klasse. We hebben dingen meegemaakt als dit, maar nu ben ik ze gebruiken om de specificatie, het publiek. Lijn 4 van de vrije verklaringen toont ook dit. In lijn 6 van de vrije verklaringen uit te leggen, de functie, myFn () maakt gebruik van de eigenschap num1 van de klasse als argument. Het kon doen omdat het lid, num1 is publiek in de klas.

De privé-Access Specifier Met de eigen toegang specifier een externe functie of een externe verklaring kan geen toegang tot de privé-leden van de klasse. Met de privé-specificatie slechts een lid van een klasse beschrijving toegang tot de privé-lid van de klasse omschrijving. De volgende code laat zien hoe slechts een lid van een klasse toegang tot een eigen lid van de klasse (lees de uitleg hieronder): klasse Calculator {private $ num1; private $ num2; publieke functie add () {$ this-> num1 = 2; $ this-> num2 = 3; $ som = $ this-> num1 + $ this-> num2; terug $ som; }} $ Obj = new Calculator (); $ result = $ obj-> toe te voegen (); echo $ result; ?> De klasse heeft twee prive-leden (eigenschappen) en een openbare lid (methode).

In de beschrijving van de klasse, de definitie add () methode maakt gebruik van de namen van de particuliere leden, zoals variabelen (bijvoorbeeld $ this-> num1). Dus de methode add (), is een lid van de klasse beschrijving benaderd de particuliere leden van de klasse omschrijving. De tweede regel van de vrije verklaringen buiten de beschrijving van de klasse heeft toegang tot de methode add () van de klasse, omdat de methode add () openbaar is (het heeft een openbare toegang specifier) ​​geweest.

De volgende code zal niet compileren, omdat de tweede vrije verklaring probeert toegang te krijgen (gebruik als variabel) een eigen lid van de klasse: class Calculator {private $ num1; private $ num2; publieke functie add () {$ this-> num1; $ this-> num2 = 3; $ som = $ this-> num1 + $ this-> num2; terug $ som; }} $ Obj = new Calculator (); $ obj-> num1 = 2; $ result = $ obj-> toe te voegen (); echo $ result; ?> De tweede regel onder de vrije verklaringen is verkeerd omdat het probeert om toegang te krijgen (gebruik als variabel) de private lid, num1.

De beschermde Access Specifier Indien een lid van een klasse is openbaar, kan het worden geopend door een externe functie en externe verklaring en ook een afgeleide klasse beschrijving. Wanneer een lid van een klasse privé, kan niet worden geopend door een externe functie of externe instructie; zelfs een afgeleide klasse kan geen toegang tot het.

De vraag is, moet een afgeleide klasse niet echt in staat zijn om toegang te krijgen tot een eigen lid van de basisklasse (aangezien de afgeleide klasse en de basisklasse zijn gerelateerd)? Nou, om dit probleem op te lossen heb je een andere toegang specifier genoemd, beschermd. Wanneer een lid van een klasse is beschermd, kan worden benaderd door een afgeleide klasse, maar kan niet worden geopend door een externe functie of externe instructie. Het kan ook worden benaderd door de leden binnen de klasse beschrijving (basisklasse).

De volgende code laat zien hoe een afgeleide klasse kan toegang krijgen tot een beschermd lid van een basisklasse: class Calculator {beschermde $ num1; beschermde $ num2; } Klasse ChildCalculator breidt Calculator {publieke functie add () {$ this-> num1 = 2; $ this-> num2 = 3; $ som = $ this-> num1 + $ this-> num2; terug $ som; }} $ ChObj = new ChildCalculator (); $ result = $ chObj-> toe te voegen (); echo $ result; ?> De basis klasse heeft slechts twee eigenschappen en geen methode; deze eigenschappen worden beschermd. De afgeleide klasse heeft een methode en geen eigendom.

Binnen in de afgeleide klasse, worden de beschermde eigenschappen van de basisklasse gebruikt als variabelen. In het algemeen, wanneer een afgeleide klasse gebruikt een lid van een basisklasse, is een werkwijze van de afgeleide klasse die wordt gebruikt het orgaan, zoals in dit voorbeeld. De bovenstaande code is OK.

De volgende code zal niet compileren, omdat de lijn van 2 onder de vrije verklaringen probeert te krijgen tot een beschermd lid van een klasse (base class): klasse Calculator {beschermde $ num1; beschermde $ num2; } Klasse ChildCalculator breidt Calculator {publieke functie add () {$ this-> num1; $ this-> num2 = 3; $ som = $ this-> num1 + $ this-> num2; terug $ som; }} $ Obj = new Calculator (); $ obj-> num1 = 2; $ chObj = new ChildCalculator (); $ result = $ chObj-> toe te voegen (); echo $ result; ?>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.