10天學會phpWeChat——第二天:hello world!我的第一個功能模塊


今天我們開始進入《10天學會phpWeChat》系列教程的第二天:創建我的第一個hello world! 功能模塊。

1、登錄后台,進入 系統設置——自定義模塊,如圖:

 

自定義模塊參數說明

上級模塊:上級模塊一共三個選項:會員member (一般很少會在其下面建立模塊)、pc電腦端(建立Pc訪問的官網、單頁、商城模塊等)、wechat微信公共號端(建立微信公共號端訪問的微官網、微資訊、微商城等)

這里我們可以根據實際需求選擇,此處示例我們選擇wechat。

模塊名稱:模塊的中文名稱,命名沒特殊限制。此處我們命名為hello world。

模塊文件夾:模塊的目錄名稱,命名要求由2-32位英文、數字組成,不能含有其他字符。此處我們命名為hello。

如果上級模塊選擇wechat 將在 addons/wechat/addons/下自動創建相同名稱的目錄;

如果上級模塊選擇pc 將在 addons/pc/addons/下自動創建相同名稱的目錄;

如果上級模塊選擇member 將在 addons/member /addons/下自動創建相同名稱的目錄。

由於我們第一步選擇的是wechat ,所以點擊提交后會在addons/wechat/addons/下自動創建名稱為hello的目錄

管理菜單:此處的作用是為了指定后台管理控制器的方法。

 

點擊提交,提示自定義模塊創建成功。

 

2、編寫前端控制器。

如上圖所示,模塊創建成功后,自動進到模塊管理列表頁面,我們點擊“復制模塊鏈接URL”,然后在瀏覽器粘貼這個URL(http://www.example.com/index.php?m=hello&a=index)訪問。系統提示:模板不存在的錯誤,如下圖所示:

這是因為我們還沒有創建視圖和編寫控制器邏輯。

進入 addons/wechat/addons/hello 目錄,如下圖所示:

 

所有初始模塊的目錄結構都是相同的,其中:

admin目錄是存儲后台管理操作控制器和視圖的目錄;

include目錄是存儲模型操作類文件(xxx.class.php文件)和模塊輔助函數文件(xxx.func.php)的目錄;

index.php是前端訪問控制器。

我們首先打開index.php是前端訪問控制器文件。

 1 <?php
 2     use wechat\hello\hello;
 3     use phpWeChat\Area;
 4     use phpWeChat\CaChe;
 5     use phpWeChat\Config;
 6     use phpWeChat\Member;
 7     use phpWeChat\Module;
 8     use phpWeChat\MySql;
 9     use phpWeChat\Order;
10     use phpWeChat\Upload;
11 
12     !defined('IN_APP') && exit('Access Denied!');
13 
14     switch($action)
15     {
16         //以下 case 條件僅為 示例。您可以根據業務邏輯自由修改和拓展
17 
18         //case 'index':
19 
20             //在此寫 index.php?m=hello&a=index 時的邏輯
21 
22             //break;
23 
24         //case 'list':
25 
26             //在此寫 index.php?m=hello&a=list 時的邏輯
27 
28             //break;
29 
30         //以此類推...
31 
32         //case '...':
33 
34             //在此寫 index.php?m=hello&a=... 時的邏輯
35 
36             //break;
37 
38         default:
39             break;
40     }
41 ?>

 

根據訪問URL(http://www.example.com/index.php?m=hello&a=index )的參數a 我們得出這個URL請求的是控制器的index路由。因此我們在index.php編寫此路由代碼:

 1 <?php
 2     use wechat\hello\hello;
 3     use phpWeChat\Area;
 4     use phpWeChat\CaChe;
 5     use phpWeChat\Config;
 6     use phpWeChat\Member;
 7     use phpWeChat\Module;
 8     use phpWeChat\MySql;
 9     use phpWeChat\Order;
10     use phpWeChat\Upload;
11 
12     !defined('IN_APP') && exit('Access Denied!');
13 
14     switch($action)
15     {
16         case 'index':
17             exit('hello world!');
18             break;
19         //以下 case 條件僅為 示例。您可以根據業務邏輯自由修改和拓展
20 
21         //case 'index':
22 
23             //在此寫 index.php?m=hello&a=index 時的邏輯
24 
25             //break;
26 
27         //case 'list':
28 
29             //在此寫 index.php?m=hello&a=list 時的邏輯
30 
31             //break;
32 
33         //以此類推...
34 
35         //case '...':
36 
37             //在此寫 index.php?m=hello&a=... 時的邏輯
38 
39             //break;
40 
41         default:
42             break;
43     }
44 ?>

然后再次訪問該URL,則出現了 hello world的文字。如圖:

 

3、編寫前端視圖。

由於在 index 路由代碼中,我們使用了exit,所以程序直接輸出了hello world字符串,如果改成echo 這種非中斷的輸出,

 1 <?php
 2     use wechat\hello\hello;
 3     use phpWeChat\Area;
 4     use phpWeChat\CaChe;
 5     use phpWeChat\Config;
 6     use phpWeChat\Member;
 7     use phpWeChat\Module;
 8     use phpWeChat\MySql;
 9     use phpWeChat\Order;
10     use phpWeChat\Upload;
11 
12     !defined('IN_APP') && exit('Access Denied!');
13 
14     switch($action)
15     {
16         case 'index':
17             echo 'hello world!';
18             break;
19         //以下 case 條件僅為 示例。您可以根據業務邏輯自由修改和拓展
20 
21         //case 'index':
22 
23             //在此寫 index.php?m=hello&a=index 時的邏輯
24 
25             //break;
26 
27         //case 'list':
28 
29             //在此寫 index.php?m=hello&a=list 時的邏輯
30 
31             //break;
32 
33         //以此類推...
34 
35         //case '...':
36 
37             //在此寫 index.php?m=hello&a=... 時的邏輯
38 
39             //break;
40 
41         default:
42             break;
43     }
44 ?>

 

則會同樣報模板不存在的錯誤,

實際,此時我們需要創建一個視圖。

根據上面的錯誤提示,我們需要進入 addons/wechat/addons/hello 目錄,創建一個template目錄,並在template 目錄下創建一個default目錄,然后在default 目錄下創建一個名稱為index.html的視圖文件。

 

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>無標題文檔</title>
 6 </head>
 7 
 8 <body>
 9 </body>
10 </html>

此時再次刷新URL,則不再報錯,正常輸出了hello world 字符串。

 

4、將控制器的變量到模板里顯示。

前面的例子我們都是通過php的 echo、exit等直接輸出字符串,視圖似乎並沒有起到應有的作用。

事實上,在真正的模塊開發中,控制器一般用於獲取變量,然后通過視圖將變量的值多樣化的呈現給用戶。

控制器端:

 1 <?php
 2     use wechat\hello\hello;
 3     use phpWeChat\Area;
 4     use phpWeChat\CaChe;
 5     use phpWeChat\Config;
 6     use phpWeChat\Member;
 7     use phpWeChat\Module;
 8     use phpWeChat\MySql;
 9     use phpWeChat\Order;
10     use phpWeChat\Upload;
11 
12     !defined('IN_APP') && exit('Access Denied!');
13 
14     switch($action)
15     {
16         case 'index':
17             $str= 'hello world!';
18             break;
19         //以下 case 條件僅為 示例。您可以根據業務邏輯自由修改和拓展
20 
21         //case 'index':
22 
23             //在此寫 index.php?m=hello&a=index 時的邏輯
24 
25             //break;
26 
27         //case 'list':
28 
29             //在此寫 index.php?m=hello&a=list 時的邏輯
30 
31             //break;
32 
33         //以此類推...
34 
35         //case '...':
36 
37             //在此寫 index.php?m=hello&a=... 時的邏輯
38 
39             //break;
40 
41         default:
42             break;
43     }
44 ?>

 

視圖端:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>無標題文檔</title>
 6 </head>
 7 
 8 <body>
 9 {$str}
10 </body>
11 </html>

 

刷新URL,達到了同樣的效果。

 

至此,一個小型的phpWeChat功能模塊就誕生了。:)

 

注:本文是基於phpWeChat1.0.8版本講解(下載地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20)。

 

《10天學會phpWeChat》系列教程傳送門:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM