PHP 5的抽象类和接口语法

 更新时间:2016年11月25日 16:10  点击:2022
PHP 5中用abstract关键字标明抽象方法,含有抽象方法的类是抽象类,也必须要用abstract标明。


<?php
abstract class AbstractClass {
   
abstract public function test();
}

class ImplementedClass extends AbstractClass {
   
public function test() {
       
echo "ImplementedClass::test() called. ";
   }
}

$o = new ImplementedClass;
$o->test();
?> 
PHP 5也支持接口的概念,并为之引入了interface和implements关键字。和Java一样,PHP 5使用接口也实现类似于“多重继承”的效果。语法如下:


<?php
interface displayable {
  
function display();
}
interface printable {
  
function doprint();
}

class foo implements displayable,printable {
  
function display() {
    
// code
  }   function doprint() {
    
// code
  }
}
?>
抽象类和接口的引入使PHP成了一个完全面向对象的语言。多说一句:这样的语法和Java实在是太像了。

Linux下源代码安装apache+mysql+php

/*******************************
 * I am pefocus,pefocus is me !*
 *******************************/

编译环境:RedHat Enterprise AS 5,开启SELlinux

所需要的软件:apache,php,phpmyadmin,mysql,GD及库相关        
libpng-1.2.24.tar.bz2  
zlib-1.2.3.tar.gz
freetype-2.3.5.tar.gz 
libxslt-1.1.22.tar.gz  
jpegsrc.v6b.tar.gz
gd-2.0.36RC1.tar.bz2  
libxml2-2.6.30.tar.gz  

下载地址:
http://www.apache.org
http://www.php.net
http://www.mysql.com
http://www.ijg.org/files/jpegsrc.v6b.tar.gz
http://www.zlib.net/zlib-1.2.3.tar.gz
http://prdownloads.sourceforge.net/libpng/libpng-1.2.8-config.tar.gz?download
http://easynews.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.3.tar.bz2
http://telia.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.3.tar.bz2

1.安装apache
tar -xvf httpd-2.2.0.tar.gz
cd httpd-2.2.0
./configure --prefix=/usr/local/apache2 --enable-module=so
make
make install

设置apache自启动:
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
然后vi /etc/init.d/httpd
在第3行加入
# chkconfig: 2345 70 30
# processname: httpd
注意:#号不能去掉!
最后chkconfig --add httpd

2.freetype
tar vjf freetype-2.1.3.tar.bz2
cd freetype-2.1.3
./configure
make
make install

3.jpeg
tar xvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --enable-shared --enable-static
make
mkdir -v /usr/local/man
mkdir -v /usr/local/man/man1
make install

4.zlib
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install

<?php
class runtime
{
    var $StartTime = 0;
    var $StopTime = 0;
 
    function get_microtime()
    {
        list($usec, $sec) = explode('' '', microtime());
        return ((float)$usec + (float)$sec);
    }
 
    function start()
    {
        $this->StartTime = $this->get_microtime();
    }
 
    function stop()
    {
        $this->StopTime = $this->get_microtime();
    }
 
    function spent()
    {
        return round(($this->StopTime - $this->StartTime) * 1000, 1);
    }
 
}
 
 
//例子
$runtime= new runtime;
$runtime->start();
 
//你的代码开始
 
$a = 0;
for($i=0; $i<1000000; $i++)
{
    $a += $i;
}
 
//你的代码结束
 
$runtime->stop();
echo "页面执行时间: ".$runtime->spent()." 毫秒";
 
?>

< PHP 截取字符串专题
作者: 不详 来源: 不详

1. 截取GB2312中文字符串
<?php
//截取中文字符串
function mysubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
?>

2. 截取utf8编码的多字节字符串
<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
    return preg_replace(''#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,''.$from.''}''.
                       ''((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,''.$len.''}).*#s'',
                       ''$1'',$str);
}
?>

3. UTF-8、GB2312都支持的汉字截取函数
<?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
 
function cut_str($string, $sublen, $start = 0, $code = ''UTF-8'')
{
    if($code == ''UTF-8'')
    {
        $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
        preg_match_all($pa, $string, $t_string);
 
        if(count($t_string[0]) - $start > $sublen) return join('''', array_slice($t_string[0], $start, $sublen))."...";
        return join('''',

 

PHP5.3 snapshots

Antony Dovgal 指出 Derick Rethans 已经将php 5.3在snaps.php.net 上发布.
新增内容:Namespaces,__callstatic()魔术方法,通过$foo::myFunc()访问静态成员,类似于.htaccess的重写,OpenSSL扩展,PCRE7.4, 5.2版本中没有的其他的一些改进和修正.
他建议要十分彻底的调试过才发布release版.
源码版和windows版,已经在snaps.php.net发布.
 
 
 
 
 
 
Antony Dovgal''s Blog: 5.3 snapshots are available

Antony Dovgal points out that Derick Rethans has added the snapshots for PHP 5.3 to the snaps.php.net website.
Short list of what you can find there: Namespaces, __callstatic() magic method, accessing static members through $foo::myFunc(), fully rewritten ini-parser with .htaccess-like user defined ini files for CGI/FastCGI, improved OpenSSL extension, PCRE 7.4, and other fixes and improvements that will never get into 5_2 branch.
He recommends teching throughly before the major release to find all of the bug before the general public does. Builds for both source and Windows systems have been posted.
 
 



<
[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • c# 三种方法调用WebService接口

    这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • Vue 3.0中jsx语法的使用

    这篇文章主要介绍了Vue 3.0 中 jsx 语法使用,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下...2020-11-13
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vue接口请求加密实例

    这篇文章主要介绍了vue接口请求加密实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • C语言的基本语法详解

    本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
  • C#简单了解接口(Interface)使用方法

    这篇文章主要介绍了C#简单了解接口(Interface)使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-08
  • SpringBoot接口接收json参数解析

    这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • C# Rx的主要接口深入理解

    这篇文章主要介绍了C# Rx的主要接口深入理解的相关资料,需要的朋友可以参考下...2020-06-25
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • Feign接口方法返回值设置方式

    这篇文章主要介绍了Feign接口方法返回值设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-08
  • 如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • php怎么写api接口?php写api接口的实例代码

    php怎么写api接口?本文介绍了php写api接口的实例代码,有兴趣的同学可以参考一下。 http://localhost/openUser.php?act=get_user_list&type=json在这里openUser.php...2017-07-06
  • vue设置全局访问接口API地址操作

    这篇文章主要介绍了vue设置全局访问接口API地址操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-14