學習足跡

2013年5月31日 星期五

PHP Coding Style 程式碼風格規範(PSR)

PSR

PSR-0

A fully-qualified namespace and class must have the following structure \<Vendor Name>\(<Namespace>\)*<Class Name>
一個完全合格的 namespace (命名空間) 與 class (類別) 需要符合這樣的結構\<Vendor Name>\(<Namespace>\)*<Class Name> 。

範例 

 \Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php

\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php

\Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php

\Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php
Each namespace must have a top-level namespace ("Vendor Name").
每個 namespace 需要有一個頂層的命名空間 (“提供者名稱(Vendor Name”)。
Each namespace can have as many sub-namespaces as it wishes.
如果需要的話,每個 namespace 皆可有多個子命名空間。
Each namespace separator is converted to a DIRECTORY_SEPARATOR when loading from the file system.
當 namespace 若是從檔案系統載入時,其使用的分隔符號皆要轉換成 DIRECTORY_SEPARATOR 。
Each _ character in the CLASS NAME is converted to a DIRECTORY_SEPARATOR. The _ character has no special meaning in the namespace.
類別名稱 (class name) 中,每個底線符號 (“_”) 皆要轉換成 DIRECTORY_SEPARATOR 。因為底線(“_”)在 namespace 中是沒有意義的。
The fully-qualified namespace and class is suffixed with .php when loading from the file system.
從檔案系統所載入的合格 namespace 與 class 一定是 “.php” 結尾。
Alphabetic characters in vendor names, namespaces, and class names may be of any combination of lower case and upper case.
Vendors name、namespace 以及 class name 所使用的字母可以由大小寫組成。

PSR-1

Files MUST use only <?php and <?= tags.
檔案中一定 (MUST) 只能使用 <?php 以及 <?= 標籤。
Files MUST use only UTF-8 without BOM for PHP code.
PHP 程式的檔案編碼,一定 (MUST) 要用 “無 BOM 之 UTF-8″ 格式。
Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.
檔案需要 (SHOULD) 在 宣告 symbols (classes, functions, constants, 等) 或是採用從屬效應(side-effects) (像是產生輸出,變動 .ini 的設定等) 中擇一處理,不需要 (SHOULD NOT) 二者都做。
Namespaces and classes MUST follow PSR-0.
命名空間以及類別一定 (MUST) 依循著 PSR-0 建議文件。
Class names MUST be declared in StudlyCaps.
類別名稱一定 (MUST) 是採用 大寫開始的駝峰大小寫命名法(StudlyCaps) 來宣告。
Class constants MUST be declared in all upper case with underscore separators.
類別中的宣告常數變數的名稱一定 (MUST) 是由全大寫字母以及底線符號組成。
Method names MUST be declared in camelCase.
函式名稱一定 (MUST) 是以 小寫開始的駝峰大小寫命名法(camelCase) 宣告。

PSR-2

Code MUST follow PSR-1.
程式碼一定 (MUST) 得依循 PSR-1。
Code MUST use 4 spaces for indenting, not tabs.
程式碼的縮排一定 (MUST) 是用四個空白,而非 tab。
There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.
每行的字數長度需 (SHOLD) 得少於 80 字元;一定 (MUST) 要將相對限制(soft limit) 設定在 120 字元;必不要 (MUST NOT) 寫到絕對限制 (hard limit)。
There MUST be one blank line after the namespace declaration, and there MUST be one blank line after the block of use declarations.
宣告 命名空間 (namespace) 之下一定(MUST) 要空一行,以及宣告  use 之下一定 (MUST) 也要空一行。
Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.
類別 (class) 所使用的成對花括號,一定(MUST) 要將開始的放在宣告的下一行,以及程式碼本體結束的下一行。
Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.
方法 (method) 所使用的成對花括號,一定(MUST) 要將開始的放在宣告的下一行,以及程式碼本體結束的下一行。
Visibility MUST be declared on all properties and methods; abstract and final MUST be declared before the visibility; static MUST be declared after the visibility.
所有屬性或是方法的可視屬性(visibility)一定(MUST) 要宣告, abstract 以及 final 一定(MUST) 是宣告在可視屬性之前; static 則一定(MUST) 是宣告在可視屬性之後。
Control structure keywords MUST have one space after them; method and function calls MUST NOT.
控制結構 (control structure) 的關鍵字一定(MUST) 要在其後加入一個空白;方法(Method) 與函式(Function)則一定不要(MUST NOT)。
Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.
控制結構的開始(左)花括號一定(MUST) 要在宣告啟始的同一行,而結束(右)花括號則一定(MUST) 要在其程式碼本體結束的下一行。
Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before.
控制結構中,用到括弧時,其開始(左)括弧之後與結束(右)括弧之前一定不要(MUST NOT) 有空白。

PSR-3

  • The LoggerInterface exposes eight methods to write logs to the eight RFC 5424 levels (debug, info, notice, warning, error, critical, alert, emergency).
  • A ninth method, log, accepts a log level as first argument. Calling this method with one of the log level constants MUST have the same result as calling the level-specific method. Calling this method with a level not defined by this specification MUST throw a Psr\Log\InvalidArgumentException if the implementation does not know about the level. Users SHOULD NOT use a custom level without knowing for sure the current implementation supports it.
  • Every method accepts a string as the message, or an object with a __toString() method. Implementors MAY have special handling for the passed objects. If that is not the case, implementors MUST cast it to a string.
  • The message MAY contain placeholders which implementors MAY replace with values from the context array.
  • Placeholder names MUST correspond to keys in the context array.
  • Placeholder names MUST be delimited with a single opening brace { and a single closing brace }. There MUST NOT be any whitespace between the delimiters and the placeholder name.
  • Placeholder names SHOULD be composed only of the characters A-Z, a-z, 0-9, underscore _, and period .. The use of other characters is reserved for future modifications of the placeholders specification.

相關連結

2013年5月30日 星期四

Laravel 3 Bundle使用說明



教學影片

Hello Bundle - Creating Bundles with Laravel




Phil Sturgeon - Laravel & Composer


參考資料

英雄總是寂寞孤獨!自信?自負?


英雄總是寂寞孤獨的 都覺得他人都後知後覺 自己是先知先覺
但是英雄又有分自信與自負兩種
自信的英雄會想辦法讓自己不再寂寞、不再孤獨
想辦法指引大家 教導大家正確的方向
自負的英雄總是活在自我的世界 自己享受的寂寞與孤獨而終老
在自己的世界總是自信 但在別人眼中卻是個自負的人
坐而言不如起而行,想辦法讓這個世界活絡過來吧
讓大家不再寂寞與孤獨,各位英雄豪傑

2013年5月25日 星期六

Rails Form Helper使用說明

表單欄位

名稱 用途
form_tag 產生表單
label_tag label:<label>
text_field_tag
text_field
input text:<input type="text">
password_field_tag input password:<input type="password">
hidden_field_tag input hidden:<input type="hidden">
submit_tag input submit:<input type="submit">
check_box_tag input checkbox:<input type="checkbox">
radio_button_tag input radio:<input type="radio">
text_area_tag textarea:<textarea>
search_field input search:<input type="search">
telephone_field input tel:<inputtype="tel">
url_field input url:<input type="url">
email_field input email:<input type="email">
select_tag select:<select>
options_for_select option:<option>
select_date <select id="start_date_year" name="start_date[year]"></select> <select id="start_date_month" name="start_date[month]"></select> <select id="start_date_day" name="start_date[day]"></select>
file_field_tag input file:<input type="file">


2013年5月23日 星期四

Rails Migration使用說明


關鍵字

名稱 用途
add_column 增加欄位
change_column 變更欄位
remove_column 移除欄位
rename_column 重新命名欄位
create_table 新增資料表
change_table 變更資料表
drop_table 丟棄資料表
add_index 增加索引
remove_index 移除索引

變數型態

名稱 資料範例 用途
:binary 010101101011 二進制資料
:boolean true / false 布林值
:date 2013-04-01 日期
:datetime 2013-04-01 23:59:59 日期時間
:decimal 3.141
:precision => 6
浮點數
:float 3.141
:precision => 6
浮點數
:integer 0,1,2,3... 整數
:primary_key 0,1,2,3... 主鍵
:string KeJyun 字串
:text KeJyun KeJyun KeJyun KeJyun... 長字串
:time 23:59:59 時間
:timestamp 2013-04-01 23:59:59 使用時間欄位(created_at , updated_at)

關鍵變數

名稱 範例 用途
:default :default => 'default_value' 預設值
:null :null => false 是否可以空值
:limit :limit => 255 最大長度



參考資料

2013年5月7日 星期二

Rails模組(Model)資料驗證(Validates)

驗證規則

# validates 欄位名稱 驗證規則
validates :email, :presence true,
:uniqueness { case_sensitive: true } ,
:length => {:in => 10..200 },
:format => {:with => /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ , :message => 'Email格式錯誤'}
變數名稱 範例 用途
:presence :presence true 一定存在這個欄位資料
:uniqueness :uniqueness => { :case_sensitive => false }
:uniqueness => true
唯一值(條件)
:length :length => { :minimum => 2 }
:length => { :maximum => 500 }
:length => { :in => 6..20 }
:length => { :is => 6 }
資料長度
:minimum:最短長度
:maximum:最長長度
:in:長度範圍
:is:長度唯一值
:format format: {:with=> /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ , :message => 'Email格式錯誤'} 正規表示式判斷
:with:正規表示式
:message:錯誤訊息
變數名稱 範例 用途




參考資料

2013年5月5日 星期日

在Rails安裝Twitter Bootstrap套件

在Gemfile中加入下列文字
gem 'bootstrap-sass'
安裝bootstrap-sass套件
bundle install
app/assets/javascripts/application.js檔案中加入//= require bootstrap引用 Twitter Bootstrap JS
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
建立Twitter Bootstrap的scss檔 app/assets/stylesheets/bootstrap_and_overrides.css.scss,並在檔案中輸入下列文字以引用Twitter Bootstrap

@import "bootstrap";
body { padding-top: 60px; }
@import "bootstrap-responsive";


重新啟動伺服器
sudo service apache2 restart


可以開始在rails中使用Twitter Bootstrap了~


參考文章