多数大学生出来选择的工作和专业无关
首页 > 专业知识

深入解读PHP抽象类abstract的应用

时间:2018-06-17 18:24:20 [来源]:郑州PHP培训学校

   深入解读PHP抽象类abstract的应用

  在这篇文章中,我们将会为大家具体介绍有关PHP抽象类abstract的应用,希望初学者们能够通过本文介绍的内容充分掌握这一知识点。
  PHP抽象类abstract的理解对于初学者来说不是非常熟悉,我们还需要在不断的代码积累中来积累这方面的知识。其实抽象类和接口类有一部分很像。
  记得在哪里看见这样一句话,抽象类就把类像的部分抽出来,这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的作用是,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了,你可能会说“我不是可以重写一个类每个公共类我个实例化一个这个公共类,调用相同的方法就可以了”,这里是可以,实际上抽象类做的工作也就是这个,不过他省去了你实例化的这个步骤,让你就像直接调用PHP抽象类abstract方法一样方便,而且你还可以重载这个方法。如:
  abstract class BaseShop
  {
  public function buy($gid)
  {
  echo('你购买了ID为 :'.$gid.'的商品');
  }
  public function sell($gid)
  {
  echo('你卖了ID为 :'.$gid.'的商品');
  }
  public function view($gid)
  {
  echo('你查看了ID为 :'.$gid.'的商品');
  }
  }
  class BallShop extends BaseShop
  {
  var $itme_id = null;
  public function __construct()
  {
  $this->itme_id = 2314;
  }
  public function open()
  {
  $this->sell($this->itme_id);
  }
  }
  这里是一个例子,想上面一样我定义了一个商店类,抽出了它所有像的部分,买(buy),卖(sell),看(view),并且抽象类里都实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。
  结论: PHP抽象类abstract就是一个类的服务提供商,拥有众多服务,你不用必须用,当需要的时候你来用就可以,如果你觉得不提供服务不满意,你还可以自己来做。
  PHP接口类interface的正确使用方法
  PHP接口类interface可以帮助我们命名某个功能的实现方法。我们将在文章中具体介绍PHP接口类interface的使用方法,希望对大家有所帮助。
  对于那些初学PHP语言的人来说,对于PHP的接口类也许了解的还不是很深入,接下来我们就来具体讲述PHP接口类interface的使用方法。
  其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候PHP接口类interface就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :
  interface Shop
  {
  public function buy($gid);
  public function sell($gid);
  public function view($gid);
  }
  我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:
  class BaseShop implements Shop
  {
  public function buy($gid)
  {
  echo('你购买了ID为 :'.$gid.'的商品');
  }
  public function sell($gid)
  {
  echo('你卖了ID为 :'.$gid.'的商品');
  }
  public function view($gid)
  {
  echo('你查看了ID为 :'.$gid.'的商品');
  }
  }
  你想想,在一个多人合作的大项目里面,有了接口类是多么的方便,这样你就不用去问别人,你的某某功能的方法名是什么了,当然如果你们喜欢这样我也没有办法。
  结论 : PHP接口类interface就是一个类的领导者,指明方向,子类必须完成它指定方法。
  如何正确使用PHP DOM-XML创建XML文件
  对于PHP语言的初学者来说,PHP DOM-XML还是比较陌生的,希望朋友们能通过这篇文章具体了解这方面的知识,以加深对PHP的了解程度。
  我们在创建XML文件并对其进行解析时,通常都会用到PHP DOM-XML。那么如何才能正确的使用它来实现这一功能呢?下面我们就来仔细看下它的应用方法。
  PHP DOM-XML的应用代码示例:
  < ?php
  /**
  * Topic: Create and parse XML files using PHP DOM-XML* Source:http://www.php.net/domxml
  * Reference: http://www.zugeschaut-und-mitgebaut.de/php/extension.domxml.html* Author:urs@circle.ch, 16-1-2001
  *
  */
  // 使用PHP DOM-XML创建和解析XML文件
  //创建XML文档对象;以后的处理过程将在此基础上进行$doc = new_xmldoc("1.0" );
  //创建根节点,并设置一个属性
  $root = $doc->add_root("faq" );
  $root->setattr("page", "32" );
  //子节点
  $one = $root->new_child("question", "");//为子节点设置属性
  $one->setattr("number", "1");
  //question也创建子节点,并且给它赋值
  $one->new_child("text", "1. Where to get libxml-2.0.0?");$one->new_child("answer", "You can download the latestrelease of libxml either as a source archive orRPM package from http://www.xmlsoft.org.
  The current version is libxml2-2.2.1." );$two = $root->new_child("question", "" );$two->setattr("number", "2");
  $two->new_child("text", "2. How to configure PHP4?" );// 创建一个不直接赋值的节点
  $twoone = $two->new_child("answer", "");// 然后给它单独赋值
  $twoone->set_content("DIR is the libxml install directory(if you just use --with-dom it defaults
  to /usr), I needed to use --with-dom=/usr/local" );$three = $root->new_child("question", "" );$three->setattr("number", "7" );
  $three->new_child("text", "7. How to use DOM XML function ?" );$three->new_child("answer", "Read this document source fora simple example." );
  //输出到Browser
  print("< pre>".htmlspecialchars($doc->dumpmem() )."< /pre>" );// write to file
  //写回到文件
  $fp = fopen("test_dom.xml", "w+" );
  fwrite($fp, $doc->dumpmem(), strlen($doc->dumpmem() ));fclose($fp);
  //现在使用xpath从XML文档中得到内容
  $doc = xmldoc(join("", file("test_dom.xml")) );$ctx = xpath_new_context($doc );
  //所有对象
  $foo = xpath_eval($ctx, "//child::*");
  print_r($foo);
  print("< br/>< br/>");
  //text node 对象
  $foo = xpath_eval($ctx, "//text");
  print_r($foo);
  print("< br/>< br/>");
  // 第一个text node对象
  $foo = xpath_eval($ctx, "//text[1]");
  print_r($foo);
  print("< br/>< br/>");
  // 第二个text node对象
  $foo = xpath_eval($ctx, "//text[2]");
  print_r($foo);
  print("< br/>< br/>");
  // 第三个answer对象
  $foo = xpath_eval($ctx, "//answer[3]");print_r($foo);
  print("< br/>< br/>");
  //第三个text node的类型,名称和内容
  $foo = xpath_eval($ctx, "//text[3]");
  $tmp = $foo->nodeset;
  print_r($tmp);
  print("< br/>");
  print($tmp[0]->type) . "; ";
  print($tmp[0]->name) . "; ";
  print($tmp[0]->content);
  ?>
  需要说明,PHP DOM-XML只能在PHPPHP4.0.x + linux上运行

上一篇:PHP抓取图片的具体实现方法

下一篇:推荐几种PHP实现页面跳转的方法