����Լ��

PHP 5 ����ʹ������Լ���������IJ�������ָ������Ϊ�����ں���ԭ������ָ��������֣����ӿڣ����飨PHP 5.1 �𣩻��� callable��PHP 5.4 �𣩡��������ʹ�� NULL ��Ϊ������Ĭ��ֵ����ô�ڵ��ú�����ʱ����Ȼ����ʹ�� NULL ��Ϊʵ�Ρ�

���һ�����ӿ�ָ��������Լ�����������е������ʵ��Ҳ����ˡ�

����Լ���������ڱ��������� int �� string��Traits Ҳ������

Example #1 ����Լ��ʾ��

<?php
//���������
class MyClass
{
    
/**
     * ���Ժ���
     * ��һ����������Ϊ OtherClass ���һ������
     */
    
public function test(OtherClass $otherclass) {
        echo 
$otherclass->var;
    }


    
/**
     * ��һ�����Ժ���
     * ��һ����������Ϊ���� 
     */
    
public function test_array(array $input_array) {
        
print_r($input_array);
    }
}

    
/**
     * ��һ����������Ϊ�ݹ�����
     */
    
public function test_interface(Traversable $iterator) {
        echo 
get_class($iterator);
    }
    
    
/**
     * ��һ����������Ϊ�ص�����
     */
    
public function test_callable(callable $callback$data) {
        
call_user_func($callback$data);
    }
}

// OtherClass �ඨ��
class OtherClass {
    public 
$var 'Hello World';
}
?>

�������õIJ����붨��IJ������Ͳ�һ��ʱ�����׳�һ���ɲ������������

<?php
// ������Ķ���
$myclass = new MyClass;
$otherclass = new OtherClass;

// �������󣺵�һ������������ OtherClass ���һ������
$myclass->test('hello');

// �������󣺵�һ����������Ϊ OtherClass ���һ��ʵ��
$foo = new stdClass;
$myclass->test($foo);

// �������󣺵�һ����������Ϊ null
$myclass->test(null);

// ��ȷ����� Hello World 
$myclass->test($otherclass);

// �������󣺵�һ����������Ϊ����
$myclass->test_array('a string');

// ��ȷ���������
$myclass->test_array(array('a''b''c'));

// ��ȷ����� ArrayObject
$myclass->test_interface(new ArrayObject(array()));

// ��ȷ����� int(1)
$myclass->test_callable('var_dump'1);
?>

����Լ����ֻ��������ij�Ա�����Ҳ��ʹ���ں����

<?php
// ���������
class MyClass {
    public 
$var 'Hello World';
}

/**
 * ���Ժ���
 * ��һ������������ MyClass ���һ������
 */
function MyFunction (MyClass $foo) {
    echo 
$foo->var;
}

// ��ȷ
$myclass = new MyClass;
MyFunction($myclass);
?>

����Լ������ NULL ֵ��

<?php

/* ���� NULL ֵ */
function test(stdClass $obj NULL) {

}

test(NULL);
test(new stdClass);

?>