Maison  >  Article  >  développement back-end  >  php的面向对象

php的面向对象

WBOY
WBOYoriginal
2016-07-29 09:15:13787parcourir

以下将涵盖php面向对象的主要知识点:

创建classname.php

<?php //类的封装
class classname{
    public $attribute;
    public function __get($name){
        return $this->$name;
    }
    public function __set($name,$value){
        if(($name="attribute") && ($value>=0) && ($valueattribute=$value;
        }

    }
}

//访问修饰符:private、protected、public;
class A{
    public $attribute="default value";
    private function operation1(){
        echo "operation1 called <br>";
    }
    protected function operation2(){
        echo "operation2 called <br>";
    }
    public function operation3(){
        echo "operation3 called <br>";
    }
    function operation(){
        echo "Something <br>";
        echo "The value of \$attribute is ". $this->attribute."<br>";
    }
}

//类的继承、重载
class B extends A{
    public $attribute="different value";
    function __construct(){
        $this->operation2();
        $this->operation3();
    }
    function operation(){
        echo "Something else<br>";
        echo "The value of \$attribute is ". $this->attribute."<br>";
    }
}
//使用final关键字禁止继承和重载
class FinalA{
    public $attribute="default value";
    final function operation(){
        echo "Something<br>";
        echo "The value of \$attribute is".$this->attribute."<br>";
    }
}
//实现接口
interface Displayable{
    function display();
}
class webPage implements Displayable{
    function display(){
        echo "实现了接口<br>";
    }
}

//使用Pre-class常量、实现<strong>静态方法</strong>
class Math{
    //使用Pre-class常量
    const  pi=3.14159;
    //实现<strong>静态方法</strong>
    static function squared($input){
        return $input*$input;
    }
}

//延迟静态绑定
class C{
    public static function who(){
        echo __CLASS__;
    }
    public static function test(){
        static::who();
    }
}

class D extends C{
    public static function who(){
        echo __CLASS__;
    }
}

//使用抽象类
abstract class E{
    abstract function operationX($param1,$param2);
}

//使用__call()重载方法
class Overload{
    public function __call($method,$p){
        if($method=="display"){
            if(is_object($p[0])){
                $this->displayObject($p[0]);
            }elseif(is_array($p[0])){
                $this->displayArray($p[0]);
            }else{
                $this->display<strong>Scala</strong>r($p[0]);
            }
        }
    }
}

//实现<strong>迭代器</strong>和迭代
class myClass{
    public $a="5";
    public $b="7";
    public $c="9";
}

//将类转换成字符串
class Printable{
    public $testone;
    public $testtwo;
    public function __toString(){
        return(var_export($this,TRUE));
    }
}
创建index.php

<?php <strong>require_once 'classname.php';
//创建实例
$a=new classname();
$a->attribute=5;


//类的继承、重载
$b=new B();
$b->operation3();
echo "<br>";
$b->operation();

//访问常量所属的类
echo "Math::pi=".Math::pi."<br>";
//访问<strong>静态方法</strong>
echo Math::squared(8)."<br>";

//检查类的类型和类型提示 instanceof关键字
if($b instanceof B){
    echo "true <br>";
}

function check_hint(B $someclass){
    echo "right <br>";
}
check_hint($b);

//延迟静态绑定
D::test();
echo "<br>";
//克隆<strong>对象</strong>
$c=clone $b;

//使用__call()重载方法
$ov=new Overload();
$ov->display(array(1,2,3));
$ov->display('cat');

//使用__autoload()方法
function __autoload($name){
    <strong>include</strong>_once $name.".php";
}

//实现<strong>迭代器</strong>和迭代
$x=new myClass();
foreach($x as $attribute){
    echo $attribute."<br>";
}

//使用Reflection(反射)API
<strong>require</strong>_once ("TLA/page.inc");
$class=new ReflectionClass("Page");
echo "<pre class="brush:php;toolbar:false">".$class."
";

以上就介绍了php的面向对象,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn