11、PHP面向对象1

1、PHP的面向对象与其他语言类似,但也有不同。

  • PHP访问成员变量时,需要用“->”,而不能用“.”,访问成员函数时,需要用“->”,而不能用“.”。操作符“::”可以在没有任何声明实例的情况下访问类中的静态成员,必须用static定义。
  • PHP用new实例化对象时,类名后面的括号可以省略。new className();new className都是可以的,当然构造函数是需要没有参数的。

2、在类中,用var定义成员变量,var定义的成员变量都是公开的。

3、创建子类时用extends继承父类。

一个类的例子如下:

url=$par;
    }
    function getUrl(){
        echo $this->url.PHP_EOL;
    }
    function setTitle($par){
        $this->title=$par;
    }
    function getTitle(){
        echo $this->title.PHP_EOL;
    }
}

class subSite extends Site{
    var $category;
    function setCat($par){
        $this->category=$par;
    }
    function getCat(){
        echo $this->category.PHP_EOL;
    }
    function getUrl(){//方法重载
        echo $this->url.PHP_EOL;
        return $this->url;
    }
    function getTitle(){
        echo $this->title.PHP_EOL;
        return $this->title;
    }
}

$taobao=new Site;//用默认的构造函数,可以不加括号
$google=new Site();

$taobao->setTitle("淘宝");//只能用箭头访问成员函数
$google->setTitle("谷歌搜索");

$taobao->setUrl("taobao.com");
$google->setUrl("google.com");

$taobao->getTitle();
$google->getTitle();

$taobao->getUrl();
$google->getUrl();
?>

输出如下:

11、PHP面向对象1_第1张图片

4、 PHP自己实现构造函数时,用__construct。注意:前缀时两根下划线。

name="myClass";
    }
    function __destruct(){
        print "销毁".$this->name."\n";
    }
}
echo "start".PHP_EOL;
$obj=new myClass();
echo "end".PHP_EOL;
?>

输出结果:构造函数在实例化对象时调用,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

11、PHP面向对象1_第2张图片

5、类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。 

6、使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口中定义的所有方法都必须是公有,这是接口的特性。

类中必须实现接口中定义的所有方法。

类可以实现多个接口,用逗号来分隔多个接口的名称。

vars[$name]=$var;
    }
    public function getHtml($template){
        foreach ($this-vars as $name => $value) {
            $template=str_replace("{'.$name.'}",$value,$template);
        }
        return $template;
    }
}
$iT=new Template;
$iT->setVariable("golden states","curry");


echo $iT::$var1.PHP_EOL;//静态属性用实例访问,有$符号
echo Template::$var1.PHP_EOL;//静态属性用类名访问$符号
echo $iT->var2;//箭头后面没$。
print_r($iT->vars);//访问数组
var_dump($iT->vars);
?>

7、PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

  • public(公有):公有的类成员可以在任何地方被访问。
  • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
  • private(私有):私有的类成员则只能被其定义所在的类访问。
public.PHP_EOL;
        echo $this->protected.PHP_EOL;
        echo $this->private.PHP_EOL;
    }
}
$o=new myClass;
echo $o->public;
//echo $o->protected;
//echo $o->private;
$o->printHello();

class subClass extends myClass{
    protected $protected="sub protected";
    function printHello(){
        echo $this->public.PHP_EOL;
        echo $this->protected.PHP_EOL;//输出子类的protected
        echo $this->private.PHP_EOL;
    }
}
$o2=new subClass();
echo $o2->public;
//echo $o2->private;
//echo $o2->protected;
$o2->printHello();
?>

 

你可能感兴趣的:(世界上最好的编程语言,团看,php)