���ʿ��ƣ��ɼ��ԣ�

�����Ի򷽷��ķ��ʿ��ƣ���ͨ����ǰ����ӹؼ��� 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.