Sunday, May 13, 2012

Use Event Dispatcher in Symfony2

Just use the code below to get the "event_dispatcher" service, easy!
$eventDispatcher = $this->container->get('event_dispatcher');

Sunday, May 06, 2012

Compile PHP binary with Lua extension on Windolws 7

  1. download and install Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 
  2. download PHP source code (php-5.3.11.tar.bz2) from: http://windows.php.net/download/
  3. download PHP SDK (php-sdk-binary-tools-20110915.zip) from: http://windows.php.net/downloads/php-sdk/
  4. download PHP Dependable libs (deps-5.3-vc9-x86.7z) from: http://windows.php.net/downloads/php-sdk/
  5. download PHP PECL Lua extension source code (lua-0.9.4.tgz) from: http://pecl.php.net/package/lua
  6. download and install Lua 5.1 from http://code.google.com/p/luaforwindows/downloads/list
    install Lua at C:\Lua
  7. create a directory at C:\php-sdk, unzip the php-sdk-binary-tools-20110915.zip into this directory
  8. open Microsoft Windows SDK v7.0 CMD Shell
  9. enter those commands below:
    setenv /x86 /win7 /Release
    cd C:\php-sdk
    bin\phpsdk_setvars.bat
    bin\phpsdk_buildtree.bat php-5.3.11
  10. unzip php-5.3.11.tar.bz2 into C:\php-sdk\php-5.3.11\vc9\x86\php-5.3.11
  11. create a directory at C:\php-sdk\php-5.3.11\vc9\x86\deps, unzip deps-5.3-vc9-x86.7z into this directory
  12. create a directory at C:\php-sdk\php-5.3.11\vc9\x86\pecl, unzip lua-0.9.4.tgz into C:\php-sdk\php-5.3.11\vc9\x86\pecl\lua
  13. back to Microsoft Windows SDK v7.0 CMD Shell, and enter those commands below:
    cd C:\php-sdk\php-5.3.11\vc9\x86\php-5.3.11
    buildconf
    configure --disable-zts --enable-snapshot-build --with-lua=C:\Lua\5.1
    nmake
    nmake snap
  14. go to the directory C:\php-sdk\php-5.3.11\vc9\x86\php-5.3.11\Release, you can get the PHP Winodows Binaries: pecl-5.3.11-nts-Win32-VC9-x86.zip and php-5.3.11-nts-Win32-VC9-x86.zip
  15. enjoy to use the binaries!

troubleshooting:
  1. "ext\calendar\jewish.c(324) : error C2001: newline in constant": open two files: jewish.c and calendar.c, re-save them with UTF-8 encoding.
  2.         cd Release\php-5.4.7
            ..\..\..\..\bin\zip.exe -9 -q -r ..\php-5.4.7-nts-Win32-VC9-x86.zip .
    The system cannot find the path specified.
            cd ..\..
            cd Release\pecl-5.4.7
            ..\..\..\..\bin\zip.exe -9 -q -r ..\pecl-5.4.7-nts-Win32-VC9-x86.zip .
    The system cannot find the path specified.
            cd ..\..
            cd Release\php-test-pack-5.4.7
            ..\..\..\..\bin\zip.exe -9 -q -r ..\php-test-pack-5.4.7.zip .
    The system cannot find the path specified.
            cd ..\..
            cd Release
            ..\..\..\..\bin\zip.exe -9 -q php-debug-pack-5.4.7-nts-Win32-VC9-x86.zip *.pdb
    The system cannot find the path specified.
            cd
    Z:\PHP-SDK\_php54\vc9\x86\php-5.4.7-src\Release
            cd
    Z:\PHP-SDK\_php54\vc9\x86\php-5.4.7-src\Release
            ..\..\..\..\bin\zip.exe -9 -q -r php-devel-pack-5.4.7-nts-Win32-VC9-x86.zip php-5.4.7-devel-VC9-x86
    The system cannot find the path specified.
            cd ..\..


    open Makefile, added a line as below after "PHP_SRC_DIR =C:\php-sdk\php-5.3.11\vc9\x86\php-5.3.11":
    ZIP="$(PHP_SRC_DIR)\..\..\..\..\bin\zip.exe"
memo:
  1. There is no php_lua.dll.
    The lua extension is static only.

reference1: Build your own PHP on Windows
reference2: Windows 中编译 PHP5.4 + xdebug
reference3: /dev/php/php-on-windows
pre-build DLLs: http://downloads.php.net/pierre/

Friday, February 17, 2012

Facebook 檢查是否有點擊讚按鈕 (Likes)

$appId = '1234567890'; // Facebook App Id
$res = $this->facebook->api('/me/likes/' . $appId);
回傳值:
{
  "data": [
    {
      "name": "應用程式名稱",
      "category": "Application",
      "id": "1234567890",
      "created_time": "2012-02-17T07:54:54+0000"
    }
  ],
  "paging": {
    "next": ""
  }
}
use FQL:
$appId = 1234567890;

$query = array(
  'likes' => "SELECT uid, page_id, type, profile_section, 
                     created_time FROM page_fan
              WHERE uid = me() AND 
                    page_id = "' . $appId . '",
);

/**
 * 回傳值
 * $response = array(
 *   array(
 *     'name' => 'likes',
 *     'fql_result_set' => array(
 *       array(
 *         "created_time" => "1329468255",
 *         "page_id" => "1234567890",
 *         "profile_section" => "other",
 *         "type" => "APP",
 *         "uid" => "100000119629520"
 *       )
 *     )
 *   )
 * );
 */
$responses = $this->facebook->api(
  array(
    'method' => 'fql.multiquery',
    'queries' => $query
  )
);
Facebook Javascript Like button click event:
FB.Event.subscribe('edge.create',
  function(response) {
    //alert('You liked the URL: ' + response);
  }
);

Tuesday, January 24, 2012

偵測是否要取得最新版本的 Flash 檔案

Flash loader 在開始取得檔案前, 先用 xxx?v=28172364656 的方式取得一個設定檔, 該設定檔帶的 v={microtime} 其時間單位為 load 檔時的時間郵戳, 以確保該設定檔每次都是 load 到最新的, 再將要取得的檔案列表放在該設定檔內, 每個檔案都用 yyy?v=123458 的方式做版本控制, 這樣應該可以讓 Flash loader 隨時都能取得最新的檔案

Monday, January 02, 2012

Doctrine2 ORM add query result cache and delete cache

// add query result cache
$query = $this->createQueryBuilder('i')
              ->where('i.delete = false')
              ->getQuery();
$query->useResultCache(true, 3600, 'allItems');
$items = $query->getArrayResult();

// delete cache
$em->getConfiguration()
   ->getResultCacheImpl()->delete('allItems');

Saturday, December 17, 2011

Develop Symfony2 with Eclipse

1. Download Eclipse IDE for Java EE Developers

2. Extract the archive file to where you want to install Eclipse.

3. Open Eclipse, Go to Help->Install New Software...

4. Add Symfony-2-Eclipse-Plugin repository: http://pulse00.github.com/Symfony-2-Eclipse-Plugin/

5. Install All of them. (PDT Extensions, PHP Development Tools, Symfony, YEdit)

6. Add Eclipse Color Theme plugins repository: http://eclipse-color-theme.github.com/update

7. Install Eclipse Color Theme

8. Download Eclipse Symfony2 theme

9. Go to Window->Preferences->General->Appearance->Color Theme , and install the Symfony2 theme.

10. ALL DONE! ENJOY Symfony2!

ex1. Go to PHP->Code Style->Formatter(PDT Tooles) Change Active profile to "Symfony [built in]"

ex2. Edit theme color in Twig: Normal, String

ex3. Edit theme color in YEdit: Scalars, Documents, Default