1105PHP筆記001

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.