zoukankan      html  css  js  c++  java
  • 1105PHP笔记001

    关于抽象类:
    abstract class Car{
    abstract function getMaximumSpeed();
    }
    class FastCar extends Car{
    function getMaximumSpeed(){
    return 150;
    }
    }
    注意事项:
    如果实现的类也是抽象的,则不用实现它的全部方法。
    $street ->addCar(new FastCar());
    -------------------------
    接口:interface implements
    父类和子类之间有逻辑上的层次关系的时候,用抽象类。
    差别较大的两个或更多对象之间的特定交互行为,用接口。

    接口
    使用接口,你可以指定某个类必须实现那些方法,但是不需要定义这些方法的具体内容,我们可以通过interface来定义一个接口,就像定义标准类一样,但其中定义所有的方法都是空的,接口中定义的所有的方法都必须是public
    实现一个接口,可以使用implement操作符,类中必须实现接口中定义的所用的方法,如果实现多个接口,可以用逗号来分割多个接口的名称
    注意
    实现多个接口时,接口中的方法不能有重名
    接口也可以继承,通过使用extends操作符
    接口中可以定义常量,接口常量和类常量的使用完全相同,他们都是定值,不能被子类或子接口修改
    例子:

    //声明接口
    interface Itemplate{
    public function setVariable($name,$var);
    public function getHtml($template);
    }
    //实现接口
    class Template implements Itemplate{
    private $vars=array();
    public function setVariable($name,$var){
    $this->vars[$name]=$var;
    }
    public function getHtml($template){
    foreach($this->vars as $names=>$value){
    $template=str_replace('{'.$names.'}',$value,$template);
    }
    return $template;
    }
    }
      例子2:
    interface a{
    public function foo();
    }
    interface b{
    public function bar();
    }
    //继承接口
    interface c extends a,b{
    public function baz();
    }
    //实现接口
    class d implements c{
    public function foo(){

    }

    public function bar(){

    }
    public function baz(){

    }
    }

    interface a{
    const b="hello";
    }
      

    抽象类
    php5支持抽象类和抽象方法。抽象类不能直接被实例化,必须先继承该抽象类,然后再实例化子类,任何一个类,如果他里面至少有一个方法是被声明为抽象的,那这个类就必须被声明为抽象的,如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现
    继承一个抽象类的时候,子类必须实现抽象类中的所有的抽象方法,另外,这些方法的可见性必须和抽象类中一样(或更轻松),如果抽象类中的某个抽象方法被声明为protected,那么子类中实现的方法应该声明为protected或者public

    例子:

    abstract class AbstractClass{
    //抽象方法
    abstract protected function getValue();
    abstract protected function prefieValue($p);

    //普通方法(非抽象方法)
    public function printOut(){
    print $this->getValue();
    }
    }

    class ConcreteClass1 extends AbstractClass{
    protected function getValue(){
    return "ConcreteClass1";
    }

    public function prefieValue($p){
    return "{$p}concreteclass1";
    }
    }

    class ConcreteClass2 extends AbstractClass{
    protected function getValue(){
    return "ConcreteClass2";
    }

    public function prefieValue($p){
    return "{$p}concreteclass2";
    }
    }

    $class1=new ConcreteClass1();
    $class1->printOut();
    echo $class1->prefieValue('FOO_');
    /*
      

    打印结果:ConcreteClass1

    FOO_concreteclass1

    2. 调用静态方法的抽象类仍然可行的 类常量不可以的

    abstract class Foo
    { const a="hello";
    static function bar()
    {
    echo "test ";
    }
    }
    Foo::a;//没有输出
    Foo::bar();//test
    ----------------------------
    $original = array('key'=>'value', 'key2' =>'value2');
    $json = json_encode($original);
    $restored =j son_decode($json);

    json与javascript
    首先要先下载json.js
    function showJsonData(){
    original = new Array(0,1,2,3);
    json = original.toJSONString();
    ...
    }
    json.parseJSON()[0]
    suggest.html:
    <html>
    <head>
    <script src="json.js" type="text/javascript"></script>
    <script type="text/javascript">
    var XHR;

    function getXHR(){
    var req;
    if(window.XMLHttpRequest){
    req = new XMLHTTPRequest();
    }else{
    req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return req;
    }
    function suggest(){
    if(xhr && xhr.readState !=0){
    xhr.abort();
    }
    xhr = getXHR();

    xhr.open("POST","http://example.com/suggest.php",true);
    }

    </script>

    -------------------------------
    thinkphp
    如果你改变了项目目录(例如把Application更改为Apps),只需要在入口文件更改APP_PATH常量定义即可:
    define('APP_PATH','./Apps/');
    require './ThinkPHP/ThinkPHP.php';
    更新或者环境改变后遇到问题首要问题是清空Runtime目录;

  • 相关阅读:
    如何在局域网安装Redmine(转贴)
    介绍开源的项目管理系统-Redmine
    【转】ios开发证书,描述文件,bundle ID的关系
    【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
    【转】 Tomcat+redis+nginx配置
    【转】Java做服务器开发语言
    【转】程序员的五大陷阱
    一个简单的网页服务器
    【转】Eclipse中创建并运行Servlet项目
    【转】在Eclipse环境下配置Servlet开发环境
  • 原文地址:https://www.cnblogs.com/smartyman/p/4075451.html
Copyright © 2011-2022 走看看