关于抽象类:
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. POJ2251 Dungeon Master(bfs)

    题目链接. 题目大意: 三维迷宫,搜索从s到e的最小步骤数. 分析: #include <iostream> #include <cstdio> #include <cs ...

  2. Nodejs in Visual Studio Code 04.Swig模版

    1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...

  3. X86 I/O端口

    与外设的交互都是通过读写外设上的寄存器进行的,外设的寄存器也成为“I/O端口”,它有两种编制方式:统一编址和独立编址. 统一编址: 外设接口中的IO寄存器(即IO端口)与主存单元一样看待,每个端口占用 ...

  4. VLC网页插件添加对火狐浏览器的支持

    原文转自:http://blog.csdn.net/gsls200808/article/details/25536113 1.用<embed>标签 下面这段代码只支持火狐,不支持IE & ...

  5. Media PLayer

    PotPlayer http://potplayer.daum.net/?lang=zh_CN KMPlayer 的原制作者姜龙喜先生(韩国)进入 Daum 公司后的新一代作品.PotPlayer 的 ...

  6. Unity3D基础学习 NGUI之Example 13 - Tabs简要概述

    首先建一个2D相机,在Anchor下新建一个子物体,添加WindowDrag Tilt脚本,用作拖动窗口 然后新建一个Panel,包含两个content,两个Tab,设置两个Content用来显示切换 ...

  7. SKViedoNode类

    继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/L ...

  8. jpeg和gif已经影响互联网发展进程了,他们应该被历史淘汰了!!!

    本人发现.传统的图片格式已经不适应互联网时代了!!!,故本人发起定义一种新的图片格式.后缀名为 .gnet 互联网上的图片大多有这几种来源.微博上传,视频截图,网络编辑人上传等,以眼下的技术.这些图片 ...

  9. 《UNIX网络编程》之select IO

    select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...

  10. Configuring Network Configuration-RHEL7

    1.查看网络状态systemctl status NetworkManager You can use the  systemctl status NetworkManager  command to ...