\

Facebook


แสดงบทความที่มีป้ายกำกับ php แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ php แสดงบทความทั้งหมด

วันพุธที่ 23 พฤศจิกายน พ.ศ. 2559

Debug PHP Code ด้วย VS Code 2016 ของฟรีและดีงามจาก Microsoft


หากคุณเป็นนักพัฒนาภาษา C# หนึ่งในโปรแกรม Editor ที่มีความสามารถสูงในท้องตลาดและคุณต้องไม่พลาดแน่นอนคือ Visual Studio แต่ในสมัยก่อนเราต้องจ่ายค่าไลเซนต์ VS เพื่อดาว์นโหลดลงมาใช้งาน ดังนั้นนักเรียน นักศึกษา นักพัฒนา จะไม่ค่อยมีโอกาสได้ใช้มากนัก(ถ้าไม่มีตัวแคร็ก) หลังจากนั้น Microsoft ก็ออกตัว VS Express มาให้ใช้ฟรี เเต่มันก็ยังมีปัญหาเรื่องความหนักของโปรแกรมอยู่ดี และชาว Open source ก็ไม่ได้ใช้ประโยชน์มากนัก ดังนั้นการปล่อย VS Code ออกมาถือว่าเป็นการตอบโจทย์ และดึงกลุ่ม Open Source ให้เข้ามาใช้เครื่องมือของ Microsoft มากขึ้น

โหลดก่อนเลย!
คุณสามารถดาว์วโหลด VS Code ลงมาใช้งานได้ฟรี ที่หน้าหลัก Microsoft ลิงค์นี้
https://code.visualstudio.com
แล้ว install กด Next เรื่อยจน install เสร็จสิ้น

การ Config PHP Debugger
ก่อนอื่นเช็คไฟล์ php.ini กันสักนิดว่าพร้อมสำหรับ Debug หรือยัง โดยผมใช้ XDebug เข้าไปตั้งค่าตามนี้
XAMPP Stack :

1. แก้ไฟล์ c:/xampp/php/php.ini ถ้ายังไม่มีโค๊ดข้างล่าง ให้เพิ่มดังนี้

[XDebug]
zend_extension="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_host=localhost
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_port=9000
xdebug.remote_autostart = 1


2. เช็คดูว่าไฟล์ php_xdebug.dll อยู่ที่ directory ที่คุณลง xampp จริง
3. ตั้งค่า port 9000
4. ตั้งค่า xdebug.remote_enable เป็น 1


การ Config VS Code ให้มี PHP Debugger
1. เข้า command palette ไปที่ view > command palette หรือ ctrl + shift + p
2. พิมพ์ ext install
3. ค้นคำว่า php debug
4. กด install แล้ว restart VS Code ใหม่
5. ไปที่ file > preferrence > user settings ใส่ค่านี้ลงไปข้างใน  ปีกกา {}

"php.validate.executablePath": "C:/xampp/php/php.exe"


มาเริ่ม Debug กัน
1. เปิด project test ขึ้นมา โดยคลิกรูปกระดาษสองแผ่นที่เมนูด้าานซ้าย
2. เปิด debug mode โดยเลือกที่รูปแมลงด้านซ้าย
3. คลิกปุ่มฟังเฟืองเพื่อ setting เเล้วเลือ PHP สังเกตว่า port เป็น 9000 แล้ว save
4. run ปุ่มสามเหลื่ยมเขียวๆ
5. เข้า browser เเล้วไปที่ project test : localhost/test/test.php

อันนี้ ไฟล์ test.php ของผม

<?php
echo "test page for vs code + PHP";
$test = 1;
$testArray = array('test1', 'test2');
foreach ($testArray as $key => $value) {
    echo $value.'<br/>';
}
?>

6. ทำ break point ไว้เพียงเท่านี้ code ของท่านก็สามารถ watch ค่าตัวแปรได้เเล้ว ดังรูป

เป็นอันจบครับ Open Source จงเจริญ!

วันอังคารที่ 24 กุมภาพันธ์ พ.ศ. 2558

[PHP] วิธีจับ Notice มาเป็น Exception ใน TryCatch


ในภาษาพีเฮชพี Notice กับ Warning ไม่ถือเป็น runtime error ครับ ทำให้เวลาเราครอบด้วย try catch มันก็จะไม่เด้งไปที่ส่วนของ Exception  ex เเต่จะขึ้นข้อความขึ้นมาเเจ้งเตือนแทน ซึ่งส่วนใหญ่ก็คุ้นกับการตั้งค่า error_report() ให้ซ่อนข้อความเหล่านั้นไป

เเต่ถ้าอยากตั้งกฎขึ้นมาใหม่ว่า Notice  ก็ถือเป็น Exception ตัวหนึ่ง(เช่น Undefined index เป็นต้น) ก็ต้องจัดการด้วยฟังชั่น set_error_handler() เองครับ

ซึ่งบทความนี้ ผมจะแนะนำการจัดการ error ด้วยฟังชั่นเราเอง เช่นผมจะนับว่าการไม่เจออินเด็กใน array ถึงว่าผิดพลาด ก็ให้สร้างฟังชั่นนี้ขึ้นมาครับ

function errorHandlerCatchUndefinedIndex($errno, $errstr, $errfile, $errline ) {
    // In case Undefined index
    if (substr($errstr, 0, 16) == 'Undefined index:') {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
   } 
    return false;
}

เเล้วเรียกฟังชั่นด้วยคำสั่งนี้ ก่อนเข้า try

   // Set Notice return Error
   set_error_handler("errorHandlerCatchUndefinedIndex");

หลับจบ catch หรือ finally ใส่คำสั่งนี้เพื่อกลับคืนสู่การตั้งค่า error ปกติของระบบ

   // Restore Error
   restore_error_handler();

หน้าตาโค๊ดจะออกมาประมาณนี้

 set_error_handler("errorHandlerCatchUndefinedIndex");
try{
//do something!!
}catch(Exception $e){
restore_error_handler();
}
restore_error_handler();


อ้างอิง http://stackoverflow.com/questions/3261051/how-to-catch-an-undefined-index-e-notice-error-in-simpletest

วันจันทร์ที่ 23 กุมภาพันธ์ พ.ศ. 2558

PHP Simple HTML DOM Parser API

รวบรวม API ของ Simple HTML DOM เอาไว้ครับ สำหรับ link เต็มๆของหน้าหลักอยู่ที่นี้ คลาสตัวนี้เมื่อโหลดลงมาใช้มีประโยชน์ที่แปลงมาร์คอัพประเภท html ให้เป็น object DOM ทำง่ายต่อการค้นหา node ที่ต้องการไปใช้ต่อ บลาๆๆ ขี้เกียจอธิบาย จริงๆก็รู้กันอยู่เเล้ว แต่อยากรวบรวม ฟังชั่นที่ใช้บ่อยๆ+จำเป็น เอาไว้กันลืมครับ


อันนี้ Method >> ที่ผมใช้บ่อยๆ childNodes() , parentNode() เป็นต้นครับ การลบ element ของ DOM ทำไม่ได้ ต้องเลี่ยงมาใช้ removeAttribute() แทน เช่นลบ link ใน <iframe> เป็นต้น


Method Mapping
array
$e->getAllAttributes ()
array
$e->attr
string
$e->getAttribute ( $name )
string
$e->attribute
void
$e->setAttribute ( $name, $value )
void
$value = $e->attribute
bool
$e->hasAttribute ( $name )
bool
isset($e->attribute)
void
$e->removeAttribute ( $name )
void
$e->attribute = null
element
$e->getElementById ( $id )
mixed
$e->find ( "#$id", 0 )
mixed
$e->getElementsById ( $id [,$index] )
mixed
$e->find ( "#$id" [, int $index] )
element
$e->getElementByTagName ($name )
mixed
$e->find ( $name, 0 )
mixed
$e->getElementsByTagName ( $name [, $index] )
mixed
$e->find ( $name [, int $index] )
element
$e->parentNode ()
element
$e->parent ()
mixed
$e->childNodes ( [$index] )
mixed
$e->children ( [int $index] )
element
$e->firstChild ()
element
$e->first_child ()
element
$e->lastChild ()
element
$e->last_child ()
element
$e->nextSibling ()
element
$e->next_sibling ()
element
$e->previousSibling ()
element
$e->prev_sibling ()

ส่วนอันนี้ เป็น element ท่องไว้เลย ยังไงก็ได้ใช้



วันพฤหัสบดีที่ 3 เมษายน พ.ศ. 2557

[Xdebug] PHP Debug on Eclipse เซ็ตตัวดีบักเกอร์


พูดถึงวิธีดีบักไฟล์ PHP ถ้าเป็นครั้งแรกที่เริ่มจับใหม่ๆมั่นใจเลยว่าหลายๆคนต้องเคย echo ค่าออกมาทีละบบรทัด อัพเกรดขึ้นมาหน่อยก็ส่อง array ด้วย var_dump() หรือ print_r() แล้วครอบด้วย <pre> ซะ จริงๆแล้วก็แก้ปัญหาได้ดีทีเดียวแต่เมื่อระบบใหญ่ขึ้นเรื่อย อะไรที่ทำงานเร็วกว่าก็ตอบโจทย์ตรงกว่า
บทความนี้รวบรวมเพียง 4 ขั้นตอน กับการเริ่มต้นเป็น PHP developer กับ ide ฟรีๆอย่าง Eclipse ให้สั้นกระชับที่สุด



1. เริ่มต้นจากการ download package ที่เกี่ยวข้องทั้งหมด ได้แก่ Eclipse for PHP (ผมจะโหลดตัวนี้เลย แต่ถ้าใครถนัดแบบติดตั้ง pdt เองก็โดยเฉพาะ extension มาติดตั้งกับอิคริบส์เอง)


2. ตั้งค่า php.ini โดยเอา comment ที่บรรทัด zend_extension = "C:\xampp\php\ext\php_xdebug.dll" , xdebug.remote_enable = 1 และ xdebug.remote_handler = "dbgp" ออกและเซ็ตค่าเป็น 1


3. เปิด Eclipse ขึ้นมาแล้วไปที่เมนู Window > Preference  หา tab Debug จะมีตัวเลือก Debugger : ให้เลือก ใส่ค่าเป็น Xdebug กด apply แล้ว OK



4. ทดสอบสร้างโปรเจกค์ขึ้นมาหนึ่งชิ้น หลังจากนั้น ใช้ php default server เป็นตัวรัน debug mode โดยการกดที่ปุ่มเข้าสู่โหมด debug ที่มุมขวาบนของโปรแกรม แล้วดับเบิลคลิกที่หน้าบรรทัดที่ต้องการหยุด(breakpoint) ในโค๊ด


เมื่อต้องการดีบัก ก็เพียงกดรูปแมลงตัวเขียว โปรแกรมก็จะทำงานจนกระทั่งพบปุ่ม breakpoint จึงจะหยุดที่บรรทัดนั้น ในโหมดนี้เราสามารถดูค่าตัวแปรได้(Watch) ดูลำดับการทำงานได้ ดูเพิ่มเติมที่การดีบักphpขณะรันโปรแกรม แล้วพบกันใหม่ [2weektrain]

May be like this posts