PHP面向对象:使用接口与组合模拟多继承(1/2)
在php中不支持多重继承,如果我们向使用多个类的方法而实现代码重用有什么办法么?那就是组合。在一个类中去将另外一个类设置成属性。
下面的例子,模拟了多重继承。
view sourceprint?01 <?
02 class user {
03 private $name = "tom";
04 public function getname(){
05 return $this->name;
06 }
07 }
08 class teacher{
09 private $lengthofservice = 5; // 工龄
10 public function getlengthofservice(){
11 return $this->lengthofservice;
12 }
13 }
14 // 上面的类中的set方法就不写了.
15 // 如果有个研究生,既是学生也算工龄.
16 class graduatestudent extends user {
17 private $teacher ;
18 public function __construct(){
19 $this->teacher = new teacher();
20 }
21 public function getlengthofservice(){
22 return $this->teacher->getlengthofservice();
23 }
24 }
25 $graduatestudent = new graduatestudent();
26 echo "name is ".$graduatestudent->getname()."<br>";
27 echo "lengthofservice is ".$graduatestudent->getlengthofservice();
28
29 ?>
代码如下 | 复制代码 |
if(!isset($_get[absolutepage])){ $absolutepage=1;//当前页 } if ($_get[absolutepage]==0){ $absolutepage=1; }else { $absolutepage=$_get[absolutepage]; $absolutepage=intval($absolutepage); } $pagesize=5;//一页现实的数量 $a= (($absolutepage - 1) * $pagesize); $sql1=$sql." limit $a,$pagesize "; $nums=mysql教程_num_rows($query);//总数 $pagecount = (int)(($nums - 1) / $pagesize) + 1;//总页数 if ($absolutepage>1 && $nums>1){ $prevpage=$absolutepage-1; } if ($absolutepage>=1 && $absolutepage<$pagecount){ $nextpage=$absolutepage+1; } if ($absolutepage > $pagecount) { $absolutepage = $pagecount; } $prevpage="<a href='".(strpos($_server['request_uri'],'?') ? "{$_server['request_uri']}&" : '?')."absolutepage=$prevpage'>上一页</a>"; $nextpage="<a href='".(strpos($_server['request_uri'],'?') ? "{$_server['request_uri']}&" : '?')."absolutepage=$nextpage'>下一页</a>"; |
代码如下 | 复制代码 |
$ss = "<a href='1.gif'>d</a>adfxx<a href="dir.html">dir</a>"; print_r(gethref($ss)); |
//下面所有a连接
代码如下 | 复制代码 |
$htm = preg_replace( "@<a(.*?)</a>@is","$1",$ss); |
//比较全的提取url连接地址
代码如下 | 复制代码 |
$url="http://www.111cn.net"; $html=file_get_contents($url,"r"); preg_match_all ("/(<a)(.*)(href=)([^>]*)(>)([^<]*)(<)([^>]*)(>)/", $html, $matches); for ($i=0;$i<count($matches[0]);$i++) { echo "|||".$matches[2][$i]."||".$matches[3][$i].$matches[4][$i]."||".$matches[6][$i]."||".$matches[8][$i]."<br>"; } |
//提取文章字符串中所有链接地址
代码如下 | 复制代码 |
preg_match_all('/(?<=href=")[wd.:/]*/',$str,$fstr); |
代码如下 | 复制代码 |
//方法一 $body ='<img src="image/2009112422220515.gif" alt="楼盘网111cn.net" border="0" />'; preg_match_all("/(src|src)=["|'| ]{0,}(image/(.*).(gif|jpg|jpeg|png|bmp))/isu",$body,$img_array); print_r($img_array); //方法二 preg_match_all("/src="(file:///.*?.png)"/i",$body,$a); //方法三 preg_match_all("/<p>.*src="([^^]*?)".*</p>/i",$body,$match); print_r($match[1]); //方法四 echo preg_replace('/<imgs+src="(.*)/(.*)">/i','<img src="file/$2">',$body); |
代码如下 | 复制代码 |
$dm = 'www.111cn.net'; $ip = gethostbyname($dm); echo gethostbyaddr($ip); echo $ip; |
//两个输出结果是一样的,
/*
关于 gethostbyname语法
string gethostbyname ( string $hostname )
返回由主机名指定的互联网主机的ipv4地址
returns the ipv4 address of the internet host specified by hostname
下面有个例这是最好的方法我已经提出,以解决任何主机名称到ip地址时,它的快速,可靠,已超时的支持!一个无效的地址,例如unicode字符串,返回后4?秒,而不是8调用gethostbyname?!它只能与unix虽然。
*/
代码如下 | 复制代码 |
function getaddrbyhost($host, $timeout = 3) { $query = `nslookup -timeout=$timeout -retry=1 $host`; if(preg_match('/ address: (.*) /', $query, $matches)) return trim($matches[1]); return $host; } |
/*
gethostbyaddr 是获取internet主机名对应一个特定的ip地址
代码如下 | 复制代码 |
string gethostbyaddr ( string $ip_address ) |
*/
代码如下 | 复制代码 |
$hostname = gethostbyaddr($_server['remote_addr']); echo $hostname; |
本站原创教程转载www.111cn.net
相关文章
- 这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
- 有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
- 这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
- 许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
使用insertAfter()方法在现有元素后添加一个新元素
复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
使用percona-toolkit操作MySQL的实用命令小结
1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24如何在Spring WebFlux的任何地方获取Request对象
这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26如何使用php脚本给html中引用的js和css路径打上版本号
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24jQuery 1.9使用$.support替代$.browser的使用方法
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
- 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作
只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30- 无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
- C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
- 这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
- 前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08