本文目錄一覽:
php代碼解釋
主要是兩個運算符 和||
與運算符:當表達式左邊為假時,則停止執行;若為真,則表達式一直向右執行,直到該表達式結束或出現值為假的情況。
解析:
$page1 $page=1;
當單獨運行這條語句時,$page 無值,即為null 或 0 ,從而小於1;然後將$page賦值為1;若是沒有猜錯的話,這應該是分頁的地方使用多。
|| 或運算符:它正好與 這個運算符意思相反。即當表達式左邊為真時,則停止執行;若為假,則表達式一直向右執行,直到該表達式結束或出現值為真的情況。
解析:
$fidDB[M_alias] || $fidDB[M_alias]=’文章’;
當單獨運行這條語句時,該變量($fidDB[M_alias] )值為假,則繼續向右執行,被賦於值”文章”。
解釋結構模型的簡介
解釋結構模型
解釋結構模型方法(Interpretative Structural Modeling Method,簡稱ISM法)是一種分析系統結構的方法。它可將系統單元之間複雜、凌亂的關係分解成清晰的、多級遞階的結構形式。凡系統必有結構,系統的結構決定系統功能;破壞結構,就會完全破壞系統的總體功能,這說明了系統結構的普遍性與重要性。總之,要研究一個由大量要素組成的、各要素之間又存在這相互關係的系統,就必須了解系統的結構。
20世紀70年代以來ISM在很多領域得到了廣泛的應用,原因在於其結果直觀,清晰明了,ISM於靜態的定性模型,基本思想是通過一些基本假設和有向圖、布爾矩陣的運算,得到可達矩陣;然後再通過人-機結合,分解可達矩陣,使複雜的系統分解成多級遞階結構形式。建立系統的層級結構模型,是ISM技術的核心內容。
傳統的計算方法是根據原始矩陣對應的鄰接矩陣,然後通過布爾矩陣的乘積方法得到可達矩陣,通過對可達矩陣進行,區域劃分,迴路劃分(強鏈接劃分),得到可達矩陣的縮減矩陣,對縮減矩陣進行層級劃分。諸多的矩陣運算與操作,使得其運算量大得讓任何人都難以承受的。
因此採用一個良好的數據結構,開發出一個具有親和力ISM法系統的程序是很有必要的。傳統的、大量複雜運算的矩陣算法,如果沒有進行一定的優化,完成要素數目為100,要素之間的關係為500,需要很長的時間,還不包括結果的圖形化輸出的時間。傳統的方法在數學上表達看似簡單,只用一個鄰接矩陣相乘,表達清楚。但是正是因為矩陣相乘,其時間複雜度難以忍受。隨着系統要素個數的增加,程序的時間複雜度和空間複雜度都呈指數增長,稍微準確一點的說是N4的速度增加。而本處的算法的時間複雜度和空間複雜度都只是呈線性增長(M+N)其中一個為要素的數目,一個為邊的數目。
在ISM中,最後的層次結構模型的建立經過了關係圖、關係矩陣、可達性矩陣和層次劃分等諸多步驟,如果不考慮層級數目這個因素,只要知道該有向圖中各節點之間的上下位關係,就可以畫出圖中各要素的的相對位置關係,並獲得層次清晰圖形結構。其實際過程就是一個求強連通子集的過程,三大經典的SCC算法都可以獲得一個層級結構圖,但是該過程得到的層級數目與傳統的方法比要更多的層級數目。
市面上曾經非常流行腦圖(概念圖)的軟件,概念圖很是流行了一陣,該軟件也是一種模型的建立過程,與ISM非常相似,很重要的一點區別在於,腦圖,主要是以樹為其層次結構的組織形式。其轉換的層次結構,以及層級數目一般都比ISM得到的結構圖的層級數目要多!
在整個編製該軟件的過程中,需要指出的是,最大的工作量並非是絞盡腦汁的想快速的Warshall迭代,或者是可達矩陣的求解這些核心步驟;工作量最大的是圖在網頁的表現。這裡要向jsplumb作者鞠躬道謝,它提供的豐富的畫矢量箭頭的工具JS工具,並可以非常容易的實現拖拉功能。使得作者不用去考慮別的表現方式了。jsplumb還有一個厲害的地方,就是支持幾乎所有的瀏覽器。當然在網頁上實現拖拽元素的功能,在一些老式的瀏覽器支持起來就很差,比如IE6。我計算了下,一個頁面如果輸出的箭頭大於30個,就會顯得很慢了。
PHP代碼,能詳細解釋一下每行的意思么?多謝了
php中類操作有幾個關鍵字,$this, self, static, parent
$this很好區別,就是實例化後的對象,所以不能在靜態方法里調用
class testA{
public $name=”name”;
public static function test() {
//出錯! static方法不能使用this
echo $this-name;
}
}
self, static, parent 都是靜態調用,後跟 :: 如果是變量,要加$
class testA{
//屬性也要定義成靜態的,不然也是訪問不了的
public static $name=”name”;
public $mobile=””;
public static function test() {
//可以訪問
echo static::$name;
//不可訪問
echo static::$mobile
}
}
下面說一下三者區別
self 指代當前定義方法所在的類
static 後期靜態綁定的類 ( 實際調用中是哪個類,就代表哪個類,不一定是方法定義所在的類 )
parent 這個也好區別,就是當前定義類的父類
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // 後期靜態綁定從這裡開始
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
以上代碼,輸出 B
因為最後調用是從B 這個類調用的
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
以上代碼,輸出 A
因為調用who時指定了當前類,不管最終從哪裡調用,都會調用到A里定義的方法
另外 ,這三個關鍵字可跟在new 後面,來實例化代表的類,就不用重複寫類名,方便維護。
參考:php:後期靜態綁定
學php可以多看看官方手冊
下面我再簡單解釋下你發的代碼。
你這個應該是thinkphp的model吧,init靜態方法是model的初始化方法,是一個靜態方法,主要用於勾子處理(事件綁定)。這個調用可以從thinkphp的model類中找到。
一般在定義方法時需要覆蓋父類方法,都會調用一下 parent::method() 用於先執行父類的方法,除非特意屏蔽父類初始方法就不調用。
原創文章,作者:H9GXJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130549.html