php – Codeigniter – Composer – 使用 Translg 簡單轉換多國語言

Codeigniter 本身有支援多國語言的切換。例如

$this->lang->load('讀取語言分類的檔案名稱', '語言');
echo $this->lang->line('辨識鍵');

這樣是不是有點難懂又麻煩?如果我要顯示『正體中文』底下『選單檔案』中的『Hello』為 『哈囉,你好!』,我們要這麼寫

$this->lang->load('menu', 'chinese_zh');
echo $this->lang->line('hello');

如果你想要直覺一點的話,想要這麼用

正體中文->選單檔案->hello

那就使用我擴充的涵式庫 Translg 啦!你就可以直接這麼使用

$translg = new Translg();
echo $Translg->chinese_zh->menu->hello; //顯示 哈囉,你好!
echo $Translg->english->menu->hello; //顯示 Hello World

目前可以透過套件管理器 Composer 下載,也可以直接去 Github 下載。其他教學方式也都放在 Github 喔!

 

php – codeigniter – core 的 MY_Controller 繼承問題

看官方文件,原本以為application/core/只能這麼使用

****application/core/MY_Controller.php****

class MY_Controller extends CI_Controller
{

	function __construct()
	{
		parent::__construct();
	}

}

可是很多時候我們需要多做點分離的動作
任何地方:session開啟
前端:過濾XSS攻擊
後端:不過濾POST、GET的XSS或是認證使用者是否登入

這時候通通都實做在MY_Controller 未免太雜亂。
所以實驗了一下其實有另外一種寫法,是codeigniter 上面沒提到的。

============================================================================
****application/core/MY_Controller.php****

<?

/*
 * 雖然文件名稱為MY_Controller.php,但是實際上裡面所寫的class名稱可以不必對應 MY_Controller
 * 但我們還是依照規定,把共用的class取名MY_Controller
 *
 * class 架構是這樣
 * [MY_Controller] 共用
 *    --[MY_BE_Controller] 後端使用
 *    --[MY_FE_Controller] 前端使用
 *
 *
 */



//共同使用的程序
class MY_Controller extends CI_Controller
{

	function __construct()
	{
		parent::__construct();
		//無論何處都要執行的請寫在這邊,例如開啟session
		echo "目前使用MY_Controller<br>";
	}

}
class MY_BE_Controller extends MY_Controller
{
	function __construct()
	{
		parent::__construct();
		//僅供後端使用的程序,例如認證使用者登入狀態
		echo "目前使用MY_BE_Controller<br>";
	}
}
class MY_FE_Controller extends MY_Controller
{
	function __construct()
	{
		parent::__construct();
		//僅供前端使用的程序, 例如過濾POST、GET
		echo "目前使用MY_FE_Controller<br>";
	}
}



?>

接著實驗看看:
(A)
****application/controllers/web.php****

class Web extends MY_BE_Controller
{

    function __construct()
    {
        parent::__construct();
    }

    public function index()
    {

    }
}
/*
會得到:
目前使用MY_Controller
目前使用MY_BE_Controller
*/

(B)
****application/controllers/web.php****

class Web extends MY_FE_Controller
{

    function __construct()
    {
        parent::__construct();
    }

    public function index()
    {

    }
}
/*
會得到:
目前使用MY_Controller
目前使用MY_FE_Controller
*/

這樣一來,前後端各自需要執行的整體程序,就不會通通擠在一起了!

php – codeigniter – pagination的空白字元 問題

使用pagination class的時候
若沒有使用參數 $config[‘num_tag_open’] 與 $config[‘num_tag_close’]
會造成輸出的字串有空白( )字元佔位…..
導致分頁數字無法完美對齊。
如:

<div class="pagination_list">
&nbsp;
<a href="http://">1</a>
<span class="current">2</span>
&nbsp;
<a href="http://">3</a>
&nbsp;
<a href="http://">4</a>
</div>

所以指定num_tag_open與num_tag_close隨便的標籤即可解決。

/* 自訂分頁數字連結 */
$config['num_tag_open'] = '<span>';
$config['num_tag_close'] = '</span>';

php – codeigniter 資料庫使用 PDO 與mysql、mysqli 的不同

在config/database.php設定如下

$active_group = 'default';
$active_record = TRUE;


$db['default']['hostname'] = 'mysql:host=localhost'; //如果使用dbdriver使用mysql或mysqli就填寫localhost即可。使用PDO寫法較不一樣。
$db['default']['username'] = '資料庫使用者名稱';
$db['default']['password'] = '資料庫使用者密碼';
$db['default']['database'] = '資料庫名稱';
$db['default']['dbdriver'] = 'pdo'; //使用PDO
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

比較須要注意的就是
$db[‘default’][‘hostname’]
$db[‘default’][‘dbdriver’]
的地方~

php – 在xampp底下變慢的修正方法

找出你程式碼連接資料庫(像我是連MySQL)的程式碼

若寫的是localhost,替換成127.0.0.1即可