2010-08-01 47 views
0

OK昨天我打開一個有關何時使用MVC線程,幫助理解MVC PHP

我今天要學習如何MVC框架的工作,檢查,如Cl,蛋糕等

  1. 一些例子

    上的.htaccess,我發現這個

    RewriteEngine敘述在 的RewriteCond%{} REQUEST_FILENAME!-d 的RewriteCond%{} REQUEST_FILENAME!-f 重寫規則^(。*)$的index.php /?URL = $ 1 QSA,L]

確定,所以,當我們鍵入http://localhost/mymvc/something1/something2/something3/somethingetc

我們得到了一個$_GET['url'] =字符串 'something1/something2/something3/somethingetc'(長度= 45)

2.so我建議something1將該類,東西2必須是函數和東西我不太確定,exectly框架如何加載類,函數?

class Blog extends Controller { 

    function index() 
    { 
     echo 'Hello World!'; 
    } 
    function stack() 
    { 
     echo 'Hello Stack!'; 
    }  
} 

3.ok所以,我發現每一個框架,首先加載配置文件,然後加載一個前端控制器,這是一個前端控制器(在CI)看起來,我認爲他們這樣做也是這樣嗎?

  • 擴展類?
  • 他們得到這個班的名字?然後require_once controller.nameclass.php
  • 然後他們以某種方式搜索功能? (他們是怎麼做到的?)
  • 接下來他們尋找默認函數(函數索引)然後加載它?
  • 如果有一個客戶端調用url/Blog/stack,它只加載Stack函數,我不知道它是如何工作的。
  • 如果我們把$這個 - >的loadView(「東西」),所以我認爲他們調用函數的loadView(即控制器類內部和名稱要求他們,像require_once something.php

也許是有兩部分的這樣的:|,

非常感謝

亞當·拉馬丹

+0

你可以只在編輯器中打開的源代碼,您所選擇的框架,並找出它是如何工作=) – 2010-08-01 19:47:54

+0

燁即時通訊做,現在,仍然沒有線索如何作品。順便說一句,謝謝你在尋找:) – 2010-08-01 19:48:31

+1

[前端控制器不是MVC](http://martinfowler.com/eaaCatalog/index.html)。在使用基於web的MVC時,通常會有一個,但它仍然是一個單獨的模式。 MVC將用戶界面交互劃分爲三個不同的角色。它最重要的方面是將應用程序邏輯從表示層分離出來。如果你想了解MVC,不要看具體的框架實現,但[閱讀有關MVC模式](http://books.google.de/books?id=FyWZt5DdvFkC&lpg=PA1&dq=web%20presentational%20patterns&pg=PT357 #v = onepage&q&F = FALSE)。 – Gordon 2010-08-01 22:41:29

回答

1
  1. 的構建這個.htaccess文件的框架,使用PHP來分解它的元素(可能比Apache使用更復雜的.htaccess中的聲明更慢)
  2. 是的,它決定了類(Controller)和調用方法(Action) ,並將其餘參數傳遞給該方法。它使用call_user_func或類似的東西在框架的核心功能執行後調用功能。
  3. 也可以檢查功能的存在。 PHP有一些基本的反射實現,它允許您查看構建類/對象的內容。

控制器類在很多情況下都會繼承基類,以實現此功能。

這並沒有給你太多的幫助。如果你學會了如何使用它,你會對框架有更好的運氣,而不是它如何工作。

如果您選擇純粹的MVC(不鏈接到任何框架),或者如果您匆忙嘗試this,它可能會有所幫助。

+0

第一,那麼有一些框架(香草2)誰不通過在.htacses這樣做分解它的元素,但他們如何解析$ _GET? – 2010-08-01 20:02:29

+1

我不知道我是否理解這個問題。如果.htaccess在域名後面傳遞請求的URL作爲$ _GET中的字符串,則可以使用PHP中的explode方法輕鬆分解。 如果「美麗」的URL存在,在Apache上,必須在.htaccess中有一個重寫條件才能做到這一點。 – AlexanderMP 2010-08-01 20:06:07

+0

你說得對。哦,我明白了,所以他們爆炸陣列?那麼他們搜索第一個數組(第二類數組)(函數)?比上面更快嗎?謝謝 – 2010-08-01 20:10:28

0

這裏是一個非常簡單的例子:http://r.je/mvc-in-php.html

+1

不要張貼只是普通的鏈接,否則你的答案是毫無價值的,如果鏈接中斷! – sra 2012-01-02 08:53:31