標籤:http io ar os 使用 java for sp 檔案
關於抽象類別:
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