*   >> Чтение Образование Статьи >> science >> programming

Видимость в Php Classes

<р> Видимость в PHP классов объектно-ориентированного программирования в PHP - часть 6 Введение Это часть 6 моего цикла, объектно-ориентированное программирование в PHP. Ключевые слова, общественности, защищены, и частные может рассматриваться как спецификаторов доступа в классах PHP. В PHP, спецификатор доступа подпадает под тему, видимость. В этой части серии я объясняю видимости в классах PHP. Мы видели один из спецификаторов доступа: общественность. В этой части серии мы увидим значения всех трех и их приложения.

Примечание: Если вы не видите код или, если вы думаете, что-то отсутствует (неработающую ссылку, изображение отсутствует), просто свяжитесь со мной в [email protected]. То есть, свяжитесь со мной для малейшей проблемы у вас есть о том, что вы читаете. Класс Структура Структура класса выглядит следующим образом: класс имя класса {accessspecifier собственности; ... Accessspecifier метод {} ...} спецификатора доступа является ключевым словам, государственные или частные защищены или. Каждый член (свойство или метод) должна предшествовать спецификатора доступа.

Если нет спецификатора доступа не существует (набрали) для метода, то спецификатор доступа по умолчанию, предполагается, для метод общественности. Что обращается к Класс Пользователи? Члены класса могут получить доступ к другим членам (свойства и методы) той же описании класса. Функции, операторы, заявления и другие классы (объекты) за пределами описания класса определенного класса также можете получить доступ членов этого класса, когда класс является объектом.

Спецификатор доступа решает, стоит ли функция или оператор или класс, внутри или снаружи описании класса может получить доступ к элементу управления внутри его класса. Член спецификатор доступа контролирует является членом набрали рядом с ним в описании класса. Я буду использовать выражения, функции и классы в иллюстрациях доступа к членам класса. Я не буду использовать операторы для иллюстраций. Я буду использовать фразу "внешнюю функцию". Это относится к функции или класса метод, который не является членом описании класса в вопросе.

Я также использовать фразу "внешний заявление" по той же причине. Когда я говорю, внешняя функция может получить доступ к члену класса, я имею в виду внешняя функция может использовать имя переменной (имущества или имя метода) члена в качестве аргумента или как переменной внутри его определения. Спецификатор доступа общественности С спецификатора общественного доступа, внешняя функция может получить доступ к открытым членам класса.

Следующий код иллюстрирует это (читать ниже объяснение): класс Calculator {общественного $ num1; общественного $ пит2; Функция надстройки общественности () {$ сумма = $ this-> num1 + $ this-> num2; вернуться $ сумму; }} Функция myFn ($ номинальная) {возвращение $ номинальная; } $ OBJ = новый калькулятор (); $ obj-> num1 = 2; $ obj-> пит2 = 3; $ результат = $ obj-> Add (); Эхо $ результат. "$ MYVAR = myFn ($ obj-> num1); Эхо $ MYVAR;> Существует одна функция в коде: myFn () Вы также заявления, которые не являются в какой-либо функции Первая строка среди свободных заявлений экземпляр..

объект класса называется, OBJ. Линии 2 и 3 свободных заявлений использовать свойства класса как переменные. Поскольку члены класса являются открытыми, свободные высказывания могут получить доступ к членам класса. Мы видели вещи, как это раньше, но теперь я использую их, чтобы объяснить спецификатор, общественности. Линия 4 свободных заявлений также демонстрирует это. В строке 6 свободных заявлений, функция, myFn () использует свойство num1 класса в качестве аргумента. Это может сделать, потому что член, num1 общественная в классе.

Частный спецификатор доступа с частным спецификатора доступа внешней функции или внешнего заявления не может получить доступ к закрытым членам класса. С частной спецификатора только членом описании класса может получить доступ к закрытому члену описании класса. Следующий код показывает, как только член класса может получить доступ к закрытому члену класса (читай ниже объяснение): класс Calculator {личное $ num1; частный $ пит2; общественная функция Add () {$ this-> num1 = 2; $ this-> пит2 = 3; $ сумма = $ this-> num1 + $ this-> пит2; вернуться $ сумму; }} $ OBJ = новый калькулятор (); $ результат = $ obj-> Add (); Эхо $ результат; ?> Класс имеет два частных пользователей (свойства) и один открытый член (метод).

В описании класса, надстройка () определение метода использует имена частных членов, как переменных (например, $ this-> Num1). Так метода Add (), член описании класса имел доступ к закрытым членам класса описании. Вторая линия свободных заявлений за пределами описании класса смогла получить доступ к метод Add () класса, потому что метод Add () является общественной (имеет спецификатор доступа общественности).

Следующий код не будет компилироваться, потому что второй бесплатно заявление пытается получить доступ к (использование в качестве переменной) личное член класса: класс Calculator {личное $ num1; частный $ пит2; общественная функция Add () {$ this-> num1; $ this-> пит2 = 3; $ сумма = $ this-> num1 + $ this-> пит2; вернуться $ сумму; }} $ OBJ = новый калькулятор (); $ obj-> num1 = 2; $ результат = $ obj-> Add (); Эхо $ результат; ?> Вторая строка среди свободных высказываний неправильно, потому что пытается получить доступ к (использование в качестве переменной) частный член, num1.

Защищенный доступ Тендерный Если член класса является открытым, это может быть доступ к внешней функции и внешнего заявления, а также производного описании класса. Если член класса является частным, он не может получить доступ с помощью функции внешнего или внешнего заявления; даже производный класс не может получить к нему доступ. Вопрос в том, должны производный класс действительно не сможет получить доступ к закрытому члену его базового класса (с производный класс и базовый класс связаны)? Ну, чтобы решить эту проблему у вас есть другой спецификатор доступа, называемый, защищены.

Если член класса защищена, она может быть доступна с помощью производного класса, но она не может быть доступна внешней функции или внешнего оператора. Она также может быть доступна членов в описании класса (базового класса). Следующий код показывает, как производный класс может получить доступ к защищенной член базового класса: класс Calculator {защищенный $ num1; защищен $ num2; } Класс ChildCalculator расширяет калькулятор {публичную функцию Add () {$ this-> num1 = 2; $ this-> пит2 = 3; $ сумма = $ this-> num1 + $ this-> пит2; вернуться $ сумму; }} $ = Новый chObj ChildCalculator (); $ результат = $ chObj-> Add (); Эхо $ результат; ?> Базовый класс имеет только два свойства и метод не; Эти свойства были защищены.

Производный класс имеет один метод и не недвижимость. Внутри производного класса, защищенные свойства базового класса используются в качестве переменных. Вообще, когда производный класс использует член базового класса, это метод производного класса, который использует элемент, как в этом примере. Приведенный выше код ОК.

Следующий код не будет компилироваться, потому что линия 2 среди свободных заявлений пытается получить доступ к защищенному члену класса (базового класса): класс Calculator {защищены $ num1; защищен $ num2; } Класс ChildCalculator расширяет калькулятор {публичную функцию Add () {$ this-> num1; $ this-> пит2 = 3; $ сумма = $ this-> num1 + $ this-> пит2; вернуться $ сумму; }} $ OBJ = новый калькулятор (); $ obj-> num1 = 2; $ chObj = новый ChildCalculator (); $ результат = $ chObj-> Add (); Эхо $ результат; ?>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.