создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

VisibilityПред.Глава 19. Классы и объекты (PHP 5)След.

Visibility

The visibility of a property or method can be defined by prefixing the declaration with the keywords: public, protected or private. Public declared items can be accessed everywhere. Protected limits access to inherited classes (and to the class that defines the item). Private limits visibility only to the class that defines the item.

Members Visibility

Class members must be defined with public, private, or protected.

Пример 19-8. Member declaration

<?

/**

* Define MyClass

*/

class MyClass

{

public $public = 'Public';

protected $protected = 'Protected';

private $private = 'Private';

function printHello()

{

echo $this->public;

echo $this->protected;

echo $this->private;

}}

$obj = new MyClass();

echo $obj->public; //Works

echo $obj->protected; //Fatal Error

echo $obj->private; //Fatal Error

$obj->printHello(); //Shows Public, Protected and Private

/**

* Define MyClass2

*/

class MyClass2 extends MyClass

{

//We can redeclare the public and protected method, but not private

protected $protected = 'Protected2';

function printHello()

{

echo $this->public;

echo $this->protected;

echo $this->private;

}}

$obj2 = new MyClass2();

echo $obj->public; //Works

echo $obj2->private; //Undefined

echo $obj2->protected; //Fatal Error

$obj2->printHello(); //Shows Public, Protected2, not Private

?>

Замечание: The PHP4 method of declaring a variable with the var keyword is no longer valid for PHP 5 objects. For compatibility a variable declared in php will be assumed with public visibility, and a E_STRICT warning will be issued.

Method Visibility

Class methods must be defined with public, private, or protected. Methods without any declaration are defined as public.

Пример 19-9. Method Declaration

<?

/**

* Define MyClass

*/

class MyClass

{

//Contructors must be public

public function __construct(){ }

//Declare a public method

public function MyPublic(){ }

//Declare a protected method

protected function MyProtected(){ }

//Declare a private method

private function MyPrivate(){ }

//This is public

function Foo()

{

$this->MyPublic();

$this->MyProtected();

$this->MyPrivate();

}}

$myclass = new MyClass;

$myclass->MyPublic(); //Works

$myclass->MyProtected(); //Fatal Error

$myclass->MyPrivate(); //Fatal Error

$myclass->Foo(); //Public, Protected and Private work

/**

* Define MyClass2

*/

class MyClass2 extends MyClass

{

//This is public

function Foo2()

{

$this->MyPublic();

$this->MyProtected();

$this->MyPrivate(); //Fatal Error

}}

$myclass2 = new MyClass2;

$myclass2->MyPublic(); //Works

$myclass2->Foo2(); //Public and Protected work, not Private

?>

Пред.

Начало

След.

Конструкторы и деструкторы

Уровень выше

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting