关于抽象类:
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\n";
}
}
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目录;

1105PHP笔记001的更多相关文章

  1. gogs 源码阅读笔记 001

    gogs 源码阅读笔记 001 gogs项目相当不错,本笔记实际是基于gogs fork版本 git-122a66f. gitea (gitea版本由来)[https://blog.gitea.io/ ...

  2. [Oracle]OWI学习笔记--001

    [Oracle]OWI学习笔记--001 在 OWI 的概念里面,最为重要的是 等待事件 和 等待时间. 等待事件发生时,需要通过 P1,P2,P3 查看具体的资源. 可以通过 v$session_w ...

  3. TensorFlow机器学习框架-学习笔记-001

    # TensorFlow机器学习框架-学习笔记-001 ### 测试TensorFlow环境是否安装完成-----------------------------```import tensorflo ...

  4. Web前端学习笔记(001)

    ....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记         ...

  5. [python学习手册-笔记]001.python前言

    001.python前言 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...

  6. C++笔记001:Microsoft Visual Studio 2010软件的安装与建立第一个cpp文件

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 我学习C++使用软件为Microsoft Visual Studio 2010. 首先,软件的安装包 链接:https://pan.bai ...

  7. FPGA_VHDL 学习课堂笔记001

    FPGA_VHDL 学习课堂笔记   记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843   03月05日 ...

  8. PYTHON 100days学习笔记001:初识python

    现在学习这个确实时间很紧,但是迟早得学,以后PYTHON自动化运维,PYTHON自动测试都需要用的到,甚至可以往数据分析方向发展,刚好最近有数据观组织的python100天计划,就参加了,做好笔记,一 ...

  9. [Unreal]学习笔记001

    常规 为了便于控制,创建自己的Gamemode和Controller,再通过Setting->World Setting进行设置 在场景中,按住鼠标右键来移动视角,按住右键的同时按下W/S,控制 ...

随机推荐

  1. 理解使用static import 机制(转)

    J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员.本文介绍这一机制的使用方法,以及使用过程中的注意事项. 在Java程序中,是 ...

  2. Topcoder 好题推荐

    SRM SRM147 DIV1 1000pt DP SRM148 DIV1 1100pt 递归 SRM149 DIV1 1000pt math SRM150 DIV1 500pt DP SRM469 ...

  3. 果酷:80后IT男“鲜果切”年入千万 _ 财经频道 _ 东方财富网(Eastmoney.com)

    果酷:80后IT男"鲜果切"年入千万 _ 财经频道 _ 东方财富网(Eastmoney.com) 果酷:80后IT男"鲜果切"年入千万

  4. C++编写ATM(2)

    //上一个程序,密码不能被隐藏和该ATM可以让人取大于余额的乐币,这可定不行的.所以再次改了下,解决这两个问题. // ATM的初始.cpp : 定义控制台应用程序的入口点. // /******** ...

  5. 在SQL中用正则表达式替换html标签

    由于数据库的一个表字段中多包含html标签,现在需要修改数据库的字段把html标签都替换掉.当然我可以通过写一个程序去修改,那毕竟有点麻烦.直接在查询分析器中执行,但是MS SQL Server并没有 ...

  6. 解决NoSuchMethodError with Spring MutableValues异常问题

    今天下午项目启动时,遇到一个异常,导致无法启动: [ 221] ERROR - work.web.context.ContextLoader - Context initialization fail ...

  7. open Session In View模式

    首先看图说话: ****Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着*** 接下来就是代码: +++++++++++++++++ ...

  8. Thrift初探:简单实现C#通讯服务程序

    Thrift是一种可伸缩的跨语言服务框架,它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,工作效率和无缝地与C++,C#,Java,Python和PHP和Ruby结合.thrift允许你定义一个 ...

  9. Ext.Panel的主要功能

    介绍面板组件的主要配置项及经常用法,这些配置项及方法将在后面的演示样例中用到,能够把这部分内容作为兴许章节的铺垫,进行高速的浏览,Ext.Panel主要配置项目如表5-1所看到的. 表5-1  Ext ...

  10. PHP开发Android应用程序(转)

    第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行:第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件. 首先,在手机上安装两个apk包. 一个是SL4A(Scrip ...