�����Ի��ķ��ʿ��ƣ���ͨ����ǰ����ӹؼ��� public�����У���protected���ܱ������� private��˽�У���ʵ�ֵġ�������Ϊ���е����Ա�������κεط������ʡ�������Ϊ�ܱ��������Ա����Ա��������Լ������������ʡ�������Ϊ˽�е����Ա��ֻ�ܱ��䶨�����ڵ�����ʡ�
�����Ա��붨��Ϊ���У��ܱ�����˽��֮һ������� var ���壬����Ϊ���С�
Example #1 ��������
<?php
/**
* 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; // �����ܱ�����ִ��
echo $obj->protected; // ���л����һ����������
echo $obj->private; // ����Ҳ�����һ����������
$obj->printHello(); // ��� Public��Protected �� Private
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// ���Զ� public �� protected �����ض��壬�� private ������
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public; // �����ܱ�����ִ��
echo $obj2->private; // ��� private
echo $obj2->protected; // ���л����һ����������
$obj2->printHello(); // ��� Public��Protected2 �� Undefined
?>
Note: Ϊ�˼����Կ��ǣ��� PHP 4 ��ʹ�� var �ؼ��ֶԱ������ж���ķ����� PHP 5 ����Ȼ��Ч��ֻ����Ϊ public �ؼ��ֵ�һ������������ PHP 5.1.3 ֮ǰ�İ汾����������һ��
E_STRICT
���档
���еķ������Ա�����Ϊ���У�˽�л��ܱ��������û��������Щ�ؼ��֣���÷���Ĭ��Ϊ���С�
Example #2 ��������
<?php
/**
* Define MyClass
*/
class MyClass
{
// ����һ�����еĹ��캯��
public function __construct() { }
// ����һ�����еķ���
public function MyPublic() { }
// ����һ���ܱ����ķ���
protected function MyProtected() { }
// ����һ��˽�еķ���
private function MyPrivate() { }
// �˷���Ϊ����
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass = new MyClass;
$myclass->MyPublic(); // �����ܱ�����ִ��
$myclass->MyProtected(); // ���л����һ����������
$myclass->MyPrivate(); // ���л����һ����������
$myclass->Foo(); // ���У��ܱ�����˽�ж�����ִ��
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// �˷���Ϊ����
function Foo2()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate(); // ���л����һ����������
}
}
$myclass2 = new MyClass2;
$myclass2->MyPublic(); // �����ܱ�����ִ��
$myclass2->Foo2(); // ���еĺ��ܱ����Ķ���ִ�У���˽�еIJ���
class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}
public function testPublic() {
echo "Bar::testPublic\n";
}
private function testPrivate() {
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}
private function testPrivate() {
echo "Foo::testPrivate\n";
}
}
$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
?>
ͬһ����Ķ���ʹ����ͬһ��ʵ��Ҳ���Ի�����ʶԷ���˽�����ܱ�����Ա��������������Щ������ڲ�����ʵ�ֵ�ϸ�ڶ�����֪�ġ�
Example #3 ����ͬһ���������͵�˽�г�Ա
<?php
class Test
{
private $foo;
public function __construct($foo)
{
$this->foo = $foo;
}
private function bar()
{
echo 'Accessed the private method.';
}
public function baz(Test $other)
{
// We can change the private property:
$other->foo = 'hello';
var_dump($other->foo);
// We can also call the private method:
$other->bar();
}
}
$test = new Test('test');
$test->baz(new Test('other'));
?>
�������̻������
string(5) "hello" Accessed the private method.