ScarShow

< IS >

前言

想寫一個簡單的網頁程式,但現在市面上PHP的樣板引擎百百種,那該選什麼樣的樣板引擎來搭配好呢?...等等先不說這個,你有聽說過PHP本身也是樣板引擎嗎?沒錯它是。

在這之前我們先看看Wikipedia是怎麼解釋樣板引擎:

"A (web) template engine is software that is designed to process web templates and content information to produce output web documents. It runs in the context of a template system."

它說明了樣板引擎的功能是將內容資訊與網頁樣板結合,然後產生出網頁文件的這一個行為。將網頁的內容與網頁樣板切開,這個不用幾行程式碼PHP就可以做到。

前言

在PHP中字串連接的方法與其它的語言有著非常的不同,我們都知道以C語言來說我們可以使用函式strcat()來連接兩個字元陣列,而在Java中我們可以使用+運算子來做字串的連接。

而PHP呢?PHP不同與上述語言,它則使用.運算子來連接字串,而且除了.以外還有許多不同的方式也可以連接字串。

基本使用

字串宣告

在PHP當中可以使用'或者是"來宣告字串,但是這兩個符號宣告出的字串其實是不相同的。

<?php
$str = "Hi, I am Tony.\nNice to meet you.";
echo $str;
// Hi, I am Tony.
// Nice to meet you.

$str = 'Hi, I am Tony.\nNice to meet you.';
echo $str;
// Hi, i am Tony,\nNice to meet you.

由上面範例可以得知使用"宣告的字串可以讓跳脫字元發揮出作用,而使用'宣告的字串則是純字串你輸入什麼就輸出什麼。

字串連接

<?php
$name = 'Tony';

echo "Hi " . $name; // Hi Tony
echo 'Hi ' . $name; // Hi Tony
echo "Hi $name";    // Hi Tony
echo 'Hi $name';    // Hi $name

那麼字串與變數的連接,在"可以很彈性的使用變數,而'只能夠使用.來做連接,而兩者都可以使用格式化輸出sprintf()但這邊就先不提。

由上面得知"可以很彈性的連接變數,那麼它除了變數的連接外,那與陣列、函式以及物件之間該如何連接以及可行性?我們看下面的範例。

上次提到了NanoCLI的基本介紹,這邊延續上次的help指令實作以及標準輸入輸出的說明。

使用

實作指令 Help.php

接下來要實作上次提到的help指令,這邊要注意的是除了一開始的指令只要是以參數方式呼叫的指令都要加上Namespace這樣是要配合autoload的使用,記得help.php要放對資料夾位置。

<?php
// 設定namespace
namespace Test;

use NanoCLI\IO;

class Help extends NanoCLI\Command {
    public function __construct() {
        parent::__construct();
    }

    public function run() {
        IO::writeln("This is Command: help\n");
    }
}

關於NanoCLI這個工具原本想都沒有想過要去製作它,它是伴隨著Pointless一起誕生出來的,除了NanoCLI之外還有一個CSS Compressor這個小工具但這邊先不說。

約一年前,那時候為了想要讓Pointless看起來像是使用內建指令那樣去操作,所以就另外製作了NanoCLI讓Pointless能順利實作各種CLI的指令,到現在NanoCLI只有少少的3個檔案而且總程式不超過250行,使用上也很簡單。

系統要求

PHP 5.3+

功能

  • 指令呼叫 (ex. $ ./cli.php command)
  • 指令選項 (ex. $ ./cli.php command -v -al)
  • 指令配置 (ex. $ ./cli.php command --prefix=/usr/local/bin)
  • 文字色彩
  • 文字界面讀寫
  • Namespace 以及 Autoload

這幾天為了Pointless而嘗試使用Phar去包裝整套系統,但除了官方文件之外,中文的資源相當的少,所以我在這邊筆記一下使用方法與問題

Phar

Phar(PHP Archive)它是PHP的extension,就像是Java的jar一樣可以用來打包程式碼,可讓專案易於散佈並安裝使用