PHP 入門指南 - 發展 Encrypt 類別

Encrypt 類別 (class) 為我們編密碼網站的核心,無論編碼或解碼都需要用到 Encrypt 類別




主要功能自然是建立一個英文小寫字母的對換表格,藉由這個表格,我們可以對英文句子中的小寫英文字母進行對換,例如 "There is no spoon." 可能變成以下任一個
Tfqdq ki jo itooj.
Tcnan hf gl fqllg.
Tczmz dn ij nkjji.
Tgfsf pb ir barri.
Tdcpc my fo yxoof.


這很簡單,就是把二十六個小寫英文字母
abcdefghijklmnopqrstuvwxyz


改變一下順序
ntweapfyqrivzcjkdobslhxmgu


這樣就是密碼表了。因此我們設計的 Encrypt 類別需要兩個陣列 (array) 屬性 (property) $cArray$oArray ,前者是密碼表,後者則是依順序的英文小寫字母表。


滿簡單的,我們寫了個雛型如下
<?php
echo "<br / >";
$d1 = new Encrypt;
for ($i = 0; $i < 26; $i++) {
    echo $d1->cArray[$i];
}
echo "<br / >";
$d2 = new Encrypt;
shuffle($d2->cArray);
for ($i = 0; $i < 26; $i++) {
    echo $d2->cArray[$i];
}
echo "<br / ><br / >";

class Encrypt {
    public $cArray = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
    public $oArray = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:encryptdemo.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2012 年 11 月 */
?>


Encrypt 有兩個屬性 $cArray$oArray ,兩者的初值都設定成依順序的英文小寫字母陣列
class Encrypt {
    public $cArray = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
    public $oArray = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
}


利用內建函數 (function) shuffle() 就可以得到重新排序過的密碼表
shuffle($d2->cArray);


英文 shuffle 就是洗牌的意思,我們來看看結果吧



這樣就有密碼表了,簡不簡單呢?不過 shuffle() 應該在 new 的時候就完成,這是說我們應該替 Encrypt 設計建構子 (constructor) 。


中英文術語對照
類別class
陣列array
屬性property
函數function
建構子constructor


您可以繼續參考
網站篇


相關目錄
回 PHP 入門指南
回 PHP 教材
回首頁


參考資料
http://php.net/manual/en/language.oop5.php
http://www.php.net/manual/en/oop5.intro.php
http://www.php.net/manual/en/language.oop5.basic.php
http://www.php.net/manual/en/language.oop5.properties.php
http://php.net/manual/en/function.shuffle.php

沒有留言: