Yaf 學習記錄(2)

2021-08-03 11:49:34 字數 4469 閱讀 7117

carry on

我建立了乙個名字叫yaf的小人物,他的樣貌是這樣的

-bootstrap.php

+ controllers

-index.php

+ views

+ index

-index.phtml

+ conf

-index.php

yaf手冊看到了路由的部分,由於安裝完之後,就一直沒有著手寫過什麼**,總感覺少點什麼,並且路由對於每乙個框架,應該都算是很重要的部分。所以就開始寫了幾行**。可是真的是不動手不知道會有什麼問題。明明按照手冊的說明去寫的**,卻一直得不到想要的結果。難道陰天會鬧鬼嗎?

給yaf做了個小小的配置

[yaf]

;product section inherit from yaf section

[product:yaf]

foo=bar

[common]

routes.******.type = '******'

routes.******.controller = 'c'

routes.******.module = 'm'

routes.******.action = 'a'

入口檔案是這樣的:

<?php
安裝laruence的手冊上寫的一樣,引導檔案的**寫成了這樣:

<?php

class

bootstrap

extends

yaf_bootstrap_abstract

}

然而。。。

就這麼遇上鬼了。。。

報錯了。。。。。。。。。

getproperty

line 9

warning: yaf_router::addconfig(): expect a yaf_config_abstract instance or an array, null given

line 9

為啥沒有物件。。。

可是就是不對

既然報錯,我就換種方式吧

class

bootstrap

extends

yaf_bootstrap_abstract

}

看看結果:

object(yaf_router)#5 (2)  ["******"]=> object(yaf_route_******)#11 (3)  } ["_current":protected]=> null }
這回好了,終於拿到routes中的******的引數了。

由於一臉懵逼,嘗試了很多次,也查了一些資料,但是都沒有解決。於是請教了下leader。leader說了兩種解決方案:

一般情況下,不會通過配置中的不同配置名稱去獲取配置,可以通過配置的節點進行配置的獲取。

於是,我把yaf這個小怪物的配置改了[捂臉][捂臉][捂臉]

[yaf]

;product section inherit from yaf section

[product:yaf]

foo=bar

然後引導檔案變成了這樣:

<?php

class

bootstrap

extends

yaf_bootstrap_abstract

public

function

_initroute

(yaf_dispatcher $dispatcher)

}

來看下輸出的內容:

object(yaf_config_ini)#11 (2)  } ["_readonly":protected]=> bool(true) } 

object(yaf_router)#5 (2) ["******"]=> object(yaf_route_******)#11 (3) } ["_current":protected]=>null }

不好看是吧。。。看這個

object(yaf_config_ini)#11 (2) 

} ["_readonly":protected]=>

bool(true)

}object(yaf_router)#5 (2)

["******"]=>

object(yaf_route_******)#11 (3)

} ["_current":protected]=>

null

}

看看,兩個物件,這就是對了吧

這樣,就可以通過yaf_registry::get()獲取到所有的配置內容,由於返回的是乙個陣列物件,所以,可以通過key來獲取到你想要的任何配置。然後就可以把自己的配置寫到路由中。

bingo!!!

通過物件的方式,進行路由的配置。

首先,yaf提供了不同的路由協議,如下:

yaf_route_******

yaf_route_supervar

yaf_route_static

yaf_route_map

yaf_route_rewrite

yaf_route_regex

然後呢,嘿嘿��,我就這麼幹了

<?php

class

bootstrap

extends

yaf_bootstrap_abstract

}

來看看輸出是啥吧

object(yaf_router)#5 (2) 

["******"]=>

object(yaf_route_******)#9 (3)

} ["_current":protected]=>

null

}

不用說啥了,結果已經很明顯了

再嘗試下其他的協議,gogogo

yaf_route_supervar

<?php

class

bootstrap

extends

yaf_bootstrap_abstract

}

輸出:

object(yaf_router)#5 (2) 

["supervar"]=>

object(yaf_route_supervar)#10 (1)

} ["_current":protected]=>

null

}

yaf_route_rewrite
<?php

class

bootstrap

extends

yaf_bootstrap_abstract

}

輸出:

object(yaf_router)#5 (2) 

["rewrite"]=>

object(yaf_route_rewrite)#11 (3)

["_verify":protected]=>

null

}} ["_current":protected]=>

null

}

yaf_route_regex
<?php

class

bootstrap

extends

yaf_bootstrap_abstract */

public

function

_initroute

(yaf_dispatcher $dispatcher)

}

輸出:

object(yaf_router)#5 (2) 

["regex"]=>

object(yaf_route_regex)#12 (5)

["_maps":protected]=>

array(1)

["_verify":protected]=>

null

["_reverse":protected]=>

null

}} ["_current":protected]=>

null

}

laruence的手冊有點老舊了,有些地方寫的不對。

個人並不是要噴什麼,而是說,現在學習yaf,laruence的手冊,可以作為參考,帶你慢慢入門。如果遇到問題,還是自己動手實現以下,或者參考php手冊和github上的說明和原始碼比較好。

that』s all

Yaf零基礎學習總結2 Yaf框架的安裝

yaf零基礎學習總結1 yaf框架簡介 我們對yaf框架有那麼乙個大概的了解了,但是對於程式設計師來說,那些文字都是表面的,他們最想的就是開始敲 了。當然這也是學習yaf框架最有效的方法,敲得越多肯定學得越快,對於任何語言來說也是一樣的,在寫 之前我們得把yaf框架安裝上。相比於其它php框架,ya...

學習yaf(五)yaf 異常和錯誤的捕捉

yaf實現了一套錯誤和異常捕獲機制,主要是對常見的錯誤處理和異常捕獲方法做了乙個簡單抽象,方便應用組織自己的錯誤統一處理邏輯.那麼對應的,就有倆套錯誤處理方式可 用選用.在error action中可以通過 request getrequest getparam exception 獲取當前發生的異...

學習記錄2

pv操作同步過程 對訊號燈狀態進行改變,p呼叫一次 1,v呼叫一次 1。p操作 p s 是乙個原語操作,p操作執行 s 若s為負數,呼叫p s 的程序被阻塞,放到等待佇列q中。p s v操作 v s 剛好與p s 操作相反,v操作執行 s 若s為大於0,繼續執行 s 0,從訊號燈等待佇列移出乙個程序...