2012年9月26日 星期三
2012年9月21日 星期五
[PHP] primitive data structure--array
- 皆為 key-value pair, 預設 key仍為 0, 1, ...
- 可以用字串作為 key
- 利用 => assign key-value pair, e.g. $array= array("first"=>1, "second"=>2, "third"=>3);
- 利用 unset移除元素, 移除後 key(index)不變, e.g.本來是 [0]=> "iii", [1]=>"jjj", [2]=>"kkk", [3]=> "fff"經過 unset($array[2]) 會變成 [0]=> "iii", [1]=>"jjj", [3]=> "fff"
- 刪除整個陣列, unset($array)即可
- array中 index的順序與加入的順序有關. 先加 [1], [3], [5]再加[2], [4], [6], 則陣列中的順序即為 [1], [3], [5], [2], [4], [6](想成全部都是 key, not index就很好理解了)
- array中各元素可以是不同 type
- 可以用 array建立多維槽狀 array
- 常用 API
- bool in_array()
- array explode(string separator, string subject): 用 separator將 string 變成 array
- string implode(string glue, array pieces): 用 glue將 array中每個元素以 glue隔開形成一個 string
[PHP] PHP的類別與物件
- 宣告方式
- 關鍵字為 class, 尾端不用分號
- member data需加關鍵字 var, e.g. var $unit = 0;
- member function需加關鍵字 function, e.g. function add(){}
- function 不用寫 return type
- 建立物件
- 以 new建立, 但不需 (), e.g. $bottle = new UnitCounter; // UnitCounter為 class, 建立好 instance後, assign給 $bottle變數
- 存取物件
- class name沒有大小寫之分
- 以 -> 存取 member data與 member function, e.g. $bottle->unit, $bottle->add()其中 $unit為 class UnitCounter的 member data, 而 add()為其 member function
- member function中以 $this->unit, $this->add()呼叫其 member data or function
- 建構與解構
- 建構式為 function __construct() 或與 class同名的 function, 不過一般建議使用 __construct()以便於搬移類別 (P.S. 此為 PHP 5之後才支援的功能), 另外, __construct()可帶參數建構成員變數.
- 解構式為 function __destruct(), 不可帶參數. 通常用於關閉資料庫的連結. 另外, 有時候很好用, 例如: 擁有 static 變數為 static $nObj; 其在 construct就呼叫其 +1, 而 destruct則 -1, 則可以輕鬆維護該類所有 object個數
- 利用 unset()可摧毀物件
- 存取設定
- 預設皆為 public
- private:
- 於變數或 function前加 private, 不能用 private: 來一次宣告一堆 private變數
- 同時也支援 protected
- static:
- 與 C++相同, 同一類別共享 static變數.
- static function只能呼叫 static變數, 當然也不能呼叫 $this, 因為其並沒有建立物件
- static變數以類別參照方式呼叫, e.g. class Donation 擁有 static member $num, 則 member function 以 Donation::$num而非 $this->num來存取.
- 複製物件
- 建立新物件後, PHP 5回傳的是物件參照, 而不是物件本身(copy). 從下方可看出端倪. (假定 unitCounter擁有 $unit, 且 add($value)為 $unit=$unit+$value;
$a = new UnitCounter(); $a->add(5); $b = $a; $b->add(5); print "number = {$a->$unit}"; //列出 number = 10- 若要純粹複至某物件的副本, e.g. 就像複製資料庫一樣, 不止複製格式, 也複製目前的內容, 則使用 __clone()函數, 見下例
$a = new UnitCounter(); $a->add(5); $b = $a->__clone(); $b->add(5); print "number = {$a->$unit}"; //列出 number = 5 print "number = {$b->$unit}"; //列出 number = 10- 繼承
- 關鍵字 extends
- 單一繼承
- 以 parent:: 呼叫父類別, e.g. parent::__construct($parameter); 呼叫父建構子
2012年9月19日 星期三
[Mantis] 安裝與使用
- Requirements:
- Apache
- MySQL
- PHP: 5.3 up
- 前兩個沒寫主要是我用 Apache 2.2跟 MySQL 5.07並沒遇到啥問題, 反倒是 PHP 5.2.6被 argue了, 所以特別註明一下
- 基本安裝
- 下載
- 解壓縮並丟到 apache上執行該資料夾下 admin/install.php, 其快速安裝在其 doc/INSTALL, 詳細 document在 doc/lang中
- 過程中會幫你設定 MySQL, 若沒給定具有建 database權限的使用者, 將會有點 issue, 必須手動建立一下
- 安裝完執行 admin/check.php 看是否相容
- 一般就是 upload file的 size問題, 稍微改一下 php.ini的 upload_max_filesize應該就可以通過
- 移除 admin資料夾
- 更改預設帳號 (帳號: administrator/密碼: root)
- 以預設帳號登入後, 選擇 Manage-> Manage Users
- Create User並將其權限設為 Administrator
- 移除預設 administrator帳號
- 用 stmp發送信件(預設為 php.mail()), 底下以 gmail為例
- 開啟 mantis資料夾下\config_defaults_inc.php
- 修改參數
- $g_phpMailer_method= PHPMAILER_METHOD_SMTP;
- $g_smtp_host = 'smtp.gmail.com';
- $g_smtp_username = 'gmail帳號';
- $g_smtp_password = 'gmail密碼';
- $g_smtp_connection_mode = 'ssl';
- $g_smtp_port = 465;
- 搞定! (若還是不行, 可參考 Joomla Gmail設定中修改 php.ini)
- 開始使用
- 語言設定
- 若不習慣英文, 每個人可自行調整看到的介面
- My Profile->Preference->language調整即可
- 個人設定
- 我的帳號-> 基本資料->可以加入平常操作環境, 等回報 bug時選擇環境即可
- Manage Projects-> Create New Project
- 使用者管理
- 如果 config_defaults_inc.php設定 $g_enable_email_notification = ON (預設為 ON), 則使用者註冊需通過 email來建立帳號
- 回報問題
- Issue 生命週期與流程
- 建立 issue
- issue狀態
- Ref:
[PHP] 更新 PHP 5.2.6 到 5.3.5
以下為在 Windows底下更新 PHP 5.2.6到 5.3.5的過程記錄 (一開始 PHP 5.2.6以 Appserv安裝)
- download PHP VC6 x86 Thread Safe, Zip version (另有 Installer version, 可自行嘗試)--關於版本的問題, 下載頁面有詳細說明: Which version do I choose? 簡單說, 用 apache就是要用 VC6的版本...其實...5.3.5以後就找沒 VC6的版本了...完整 archive...若是用 apache的捧由...要碼就改用非官方版 Apache, 或是改用 IIS...
- 解壓縮假設到 C:\php
- 編輯 php.ini-development (或者直接 diff 原本 C:\Windows\php.ini 與 下載的package\php.ini-production)
- 更改 ; extension_dir ="ext" 為 extension_dir = "C:\php\ext"
- 比較一下 Windows\php.ini 已開啓的 extension(避免你以前哪些程式已經要求某些 extensions). e.g. extion=php_gd2.dll, ...
- timezone也可以設定一下
- data.timezone="Asia/Taipei"
- SMTP可自行設定, 若要利用 gmail發信的話, 可參考 利用 Gmail SMTP Server發信
- 設定 session存取位置
- session.save_path = "C:\php\SessionsTemp"
- upload path
- upload_tmp_dir = "C:\php\FIleuploadTemp"
- pear include path
- include_path=".;C:\php\pear", 如果還沒安裝, 可在安裝後再設定, 或是指向舊的 pear library, e.g. C:\AppServ\php\pear
- 可開啓 error log
- error_log = syslog改為 error_log = "C:\php\errorlog\error.log"
- 存檔後 copy到 C:\Windows\php.ini
- 讓 Apache server執行 php程式
- 修改 C:\AppServ\Apache2.2\conf\http.conf
- 加入
- LoadModule php5_module "C:/php/php5apache2_2.dll"
- 剩下應該原本 AppServ就設定好了
- Restart!
- Done! 記得 Windows7若是用 AppServ->Control Server by Service->Apache Restart要用管理者身份執行 (按右鍵)
- Ref: 在 Windows 7下安裝 PHP 5.3.5
2012年9月18日 星期二
[XCode] 讓終端機能呼叫 XCode的指令 (Command Line Tools)
在 XCode中安裝 Command Line Tools的方法:
XCode->偏好設定->Downloads->Components->Command Line Tools Install
XCode->偏好設定->Downloads->Components->Command Line Tools Install
2012年9月14日 星期五
[IE] 將 Windows 7上 IE 9降為 IE 8
最近因為當志工做翻譯, 需要測試網頁, 環境是 IE8, 不過在 Windows 7上若直接透過 Windows IE8安裝會失敗. 志工夥伴 Yi-Hsin提供了 Downgrade IE9 to IE 8的分享. 這邊就整理整理囉!
- 開啟控制台
- 選擇 "程式和功能"
- 選擇左手邊的 "檢視已安裝的更新"
- 找到 Windows Internet Explorer 9
- 解除安裝(需要重開機)
- Done!
訂閱:
文章 (Atom)