»

Debugging PHP code with PhpStorm 7

Log — Tags: , — Posted by Starck on September 11, 2014


  1. Install Xdebug

  2. Modify your php.ini:

  1. Restart web server

  2. Start PhpStorm

  3. Open Run/Debug configuration

  4. Create a PHP Web Application configuration

  5. Install Xdebug helper Chrome extension

  6. Enable xdebug debugging in chrome browser

  7. Start listen for PHP Debug Connections in PhpStorm 7

  8. Done!

Installing PHP5 Twig Extension

Log — Tags: , , — Posted by Starck on April 17, 2014

Environment: Ubuntu

The PHP5 source needed for compiling additional modules

sudo apt-get install gcc php5-dev

Compiling Twig Source Code

Installation

PHP5

vim /etc/php5/conf.d/twig.ini

PHP5-FPM

vim /etc/php5/fpm/conf.d/twig.ini

Add the following to your twig.ini file

Restarting

PHP5

sudo service apache2 restart

PHP5-FPM

sudo service php5-fpm restart

ExpressionEngine Notes

Coding, Log — Tags: , — Posted by Starck on October 17, 2013


Template

取得 channel 的文章, 並顯示 channel custom field 值

if tag

Custom Tags

編寫 Plugin file:

假設我們今天要建立的 Plugin 名稱叫作 Custom

先在 third_party 資料夾底下建立 custom 資料夾 命名為 pi.custom.php .

若發現無法使用 $this->EE->TMPL 時

$this->EE->load->library('template',null,'TMPL');

使用 Template::parse_variables_row

使用 Template::parse_variables

Module

  • upd.module_name.php
  • mcp.module_name.php

mcp 就是 module 的 controller, 假設一個被請求的 url 如下:

admin.php?D=cp&C=addons_modules&M=show_module_cp&module=beyond&method=

C=addons_modules 代表目前的 Controller 是 expression/controllers/cp/addons_modules.php
M=show_module_cp 代表使用該 controller 的 show_module_cp 這個 method
module=beyond 代表被呼叫的 module id名稱為 beyond (third_party/{module_id})
method= 執行該 module controller 的哪一個 method, 未指定預設會導向 index method

透過指定 method 這個 GET 變數,將改變 module controller 呼叫不同的 method, 另外你也可以外部讀取 template 產生不同的 view, 將這些 templates 放置在 module/views 裡, 透過以下在 module controller 的 method 中回傳:

return $this->EE->load->view('template_name', $vars, TRUE);

載入自定義 javascript

  • mod.module_name.php
  • language/english/module_name_lang.php

Language 檔案定義 $lang 語系變數:

語系中 module_name_module_name 和 module_name_module_description 會出現在 MCP 的安裝 modules 列表上

How to create or update a Channel Field?

$this->EE->api_channel_fields->update_field((array) $field_data);

returns: (string) The field_id of the updated/created field.

Log Review #1 ( Tutorial HTML CSS jQuery Laravel AngularJS)

Log — Tags: , , , , , , , , — Posted by Starck on August 27, 2013


Laravel


PHP


AngularJS


HTML / CSS


jQuery / JavaScript

Install Mod-FastCGI and PHP5-FPM on Ubuntu

Log — Tags: , , , , — Posted by Starck on August 22, 2013

Installation

Configuration

edit /etc/apache2/mods-enabled/fastcgi.conf:

Restart Apache2 and PHP5-FPM

— Updated 2014-01-09 (Ubuntu 13.10)–

mkdir /var/www/cgi-bin

touch /var/www/cgi-bin/php5.fcgi

chown -R www-data:www-data /var/www/cgi-bin

edit /etc/apache2/mods-enabled/fastcgi.conf:

Virtual host setting example :

References

Continue Reading

Nginx with Apache + FastCGI + PHP-FPM

Modern Testing with Laravel 4

Coding, Log — Tags: , , — Posted by Starck on June 18, 2013


Behavior-Driven Development

簡稱 BDD, 簡單地說就是用一種情境設定的方式來進行開發的過程。

在 Laravel 4 我們需要以下三種組合之一:


Codeception Installation

# 下載 codecept
$ wget http://codeception.com/codecept.phar
# 初始化 codecept, 它會建立所需的檔案在目前的目錄中的 tests 資料夾
$ php codecept.phar bootstrap

查看有什麼指令可以使用:

php codecept.phar

修改 tests/functional.suite.yml:

因為我們新增了一個 Laravel4 的 module, 所以讓 Codeception 再次重新建立所需的 Class:

php codecept.phar build


Codeception Usage

建立第一個測試:

php codecept.phar generate:cept acceptance Fisrt

Codeception 會在 tests/acceptance/ 下建立一個 FirstCept.php 檔案

內容為:


First Scenario

  • 我要到 / (網站首頁)。
  • 我看到了 Hello World! 這段文字出現在首頁上。

這樣的情境,寫成測試檔就變成如下:

執行測試:

php codecept.phar run


Zombie.JS and Mink

由於 Codeception 的 PhpBrowser 是基於 PHP Curl 去實現模擬 Browser 的操作, 所以面對一些會有 Javascript 互動的網頁,在測試上就會顯得力不從心。還好 Codeception 提供了 ZombieJS module, 我們可以得到一個更真實的模擬測試。

Zombie.JS

Zombie.JS 是一個 NPM 的 package, 所以在這之前我們必須先安裝好 NPM 的環境。

將 zombie 1.4.1 版安裝到全域環境:

sudo npm install -g [email protected]

2013-06-18 註: 經測試, 目前只能裝 1.4.1 的版本, 版本太新 Mink 不支援.

開啟 ~/.bashrc, 加上 NODE_PATH 的設定

export NODE_PATH="/usr/local/lib/node_modules"

Mink

composer.json 中加入到 require:

"behat/mink": "[email protected]"

重新更新 composer:

composer update

目前已知問題: checkOption(), uncheckOption(), executeJs() 無作用


Selenium2 and PhantomJS

比起 Zombie.JS, 我更喜歡 PhantomJS, 更穩定且資源豐富. 主要看到官方的一些範例, 真得相當地強大, 甚至可以 Screenshot… (Codeception 用來當發生測試失敗時會將快照存在 log 資料夾, 相當地方便!)

要使用 PhantomJS 當作 Browser, 我們需要 Selenium2 作 driver.

先執行 Selenium2:

java -jar selenium-server-standalone-2.33.0.jar

將會啟動一個 Selenium2 Server, 預設會使用 port 4444, 如需修改可在後面加上 -port 參數:

java -jar selenium-server-standalone-2.33.0.jar -port 8888

08:17:34.571 INFO - Java: Apple Inc. 20.45-b01-451
08:17:34.572 INFO - OS: Mac OS X 10.7.5 x86_64
08:17:34.584 INFO - v2.33.0, with Core v2.33.0. Built from revision 4e90c97
08:17:34.691 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
08:17:34.692 INFO - Version Jetty/5.1.x
08:17:34.692 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
08:17:34.693 INFO - Started HttpContext[/selenium-server,/selenium-server]
08:17:34.693 INFO - Started HttpContext[/,/]
08:17:34.738 INFO - Started [email protected]
08:17:34.738 INFO - Started HttpContext[/wd,/wd]
08:17:34.746 INFO - Started SocketListener on 0.0.0.0:4444
08:17:34.746 INFO - Started [email protected]

接著啟動 PhantomJS 跟 Selenium2 連接:

phantomjs --webdriver=4444

PhantomJS is launching GhostDriver...
[INFO  - 2013-06-18T00:17:27.627Z] GhostDriver - Main - running on port 4444

然後設定 Codeception 的 tests/acceptance.suite.yml 設定檔, 指定用 Selenium2 module:

  • url (required) – start url for your app
  • browser (required) – browser that would be launched
  • host – Selenium server host (localhost by default)
  • port – Selenium server port (4444 by default)
  • delay – To set delay between actions in milliseconds (1/1000 of second) if they run too fast
  • capabilities – To set Selenium2 desired capabilities. Should be a key-value array.

Laravel 4 – Resources

Coding — Tags: , — Posted by Starck on June 14, 2013

Starter

Package

IDE helper

PHP – passthru with output buffering

Coding — Tags: — Posted by Starck on June 7, 2013

將 passthru 輸出內容存在變數中:

Laravel – Inject inline content into a section.

Coding — Tags: , — Posted by Starck on June 7, 2013

手動注入 section 內容:

layouts/scaffold.blade.php:

Laravel with Gmail

Coding — Tags: , — Posted by Starck on June 6, 2013

修改 app/config/mail.php:

  • host 為 smtp.gmail.com
  • port 為 465
  • encryption 為 ssl

Test:

Next Page »
(c) 2017 Starck Lin | powered by WordPress