Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันอังคารที่ 17 กันยายน พ.ศ. 2556

วิธีดึงข้อมูลจาก Database มาแสดงแบบ OOP PHP



บทความนี้เกี่ยวข้องกับการสร้างฟังชั่น เพื่อเชื่อมต่อฐานข้อมูล และดึงข้อมูลขึ้นมาแสดง ยังไม่เต็มรูปแบบของ OOP เนื่องจากยังไม่มีการสร้าง Object ภายนอก เพียงแต่มีรูปแบบการเชื่อมต่อฐานข้อมูลแบบ OOP และสามารถนำไปใช้ได้จริง เรียกว่า สร้างจินตนาการ อุ่นเครื่องกันก่อน.....

เริ่ม
ผมจะสร้างไฟล์ขึ้นมา 2 ไฟล์ คือ index.php กับ MySqlConnect.php
ที่ไฟล์ MySqlConnect.php ผมจะสร้าง function เพื่อเชื่อมต่อฐานข้อมูลก่อน ดังนี้

ไฟล์ MySqlConnect.php
function connect()
 {
    $conn = new mysqli('host', 'username', 'password', 'database')
                         or die('not connect to sql');
    return $conn;
 }
โค้ดที่ท่านเห็นด้านบน นี้คือการเชื่อมต่อฐานข้อมูลแบบ OOP ในฟังก์ชั่นนี้มีการสร้างอ็อบเจ็กต์ คือ
$conn = new mysqli(); เป็นรูปแบบการเชื่อมต่อกับฐานข้อมูล MySQL แบบใหม่ซึ่ง สามารถใช้งานได้ ใน MySQL 4.1 ขึ้นไป
ส่วนที่ไฟล์ index.php ผมก็จะนำเข้าไฟล์ MySqlConnect.php และสร้างตัวแปรขึ้นมาเพื่อเรียกใช้ function connect();

ไฟล์ index.php
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once('MySqlConnect.php');
        $conn = connect();        
        ?>
    </body>
</html>
มาถึงตอนนี้เราก็ทำการเชื่อมต่อฐานข้อมูลเรียบร้อยแล้ว เหลือแต่ select ตารางฐานข้อมูลและ query ออกมา
เท่านั้นเอง ไปต่อกันเลยครับ...
ที่ไฟล์ MySqlConnect.php ผมจะสร้างฟังก์ชั่นอีกคือ getSql();
function getSql($conn='', $sql='')
{
    $query = $conn->query($sql);
    $rows = array();

    while ($row = $query->fetch_array()) {        
        $rows[] = $row;
    }
    return $rows;
}
ฟังก์ชั่นนี้รับค่า parameter มาสองค่า คือ $conn, $sql ก็คือตัวแปรที่เราได้สร้างเอาไว้ที่ไฟล์ index.php
แล้วผมก็ query ออกมา เก็บข้อมูลในรูปแบบ Array แล้วก็ return ค่าออกไป

จากนั้นที่ไฟล์ index.php ก็ไปสร้างตัวแปรเพื่อส่งค่า parameter ไปให้กับ function getSql()
พร้อมทั้งวนลูป ค่าที่ได้รับการคืนค่ากลับออกมา

ไฟล์ index.php
$sql = 'select * from article';
$results = getSql($conn, $sql);
        foreach($results as $row){
        echo "<div style='width:400px;margin-left:200px;'>";    
        echo "<h3>".$row['title']."</h3>";
        echo $row['article'];
        echo "</div>";
เพียงเท่านี้เราก็จะได้ฟังก์ชั่นการเชื่อมต่อฐานข้อมูล พร้อมทั้ง query ข้อมูลออกมาแสดง แบบง่ายๆ

บทความนี้ก็ขอจบเพียงเท่านี้ครับ ผิดพลาดยังไงก็ขออภัยด้วยครับ.....

ไฟล์ index.php
<!DOCTYPE html>
<html lang="th">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once('MySqlConnect.php');
        $conn = connect();
        $sql = 'select * from article';

        $results = getSql($conn, $sql);
        foreach($results as $row){
        echo "<div style='width:500px;margin-left:100px;'>";    
        echo "<h3>".$row['title']."</h3>";
        echo $row['article'];
        echo "</div>";
        }
        ?>
    </body>
</html>

ไฟล์ MySqlConnect.php
<?php
function connect()
{
    $conn = new mysqli('localhost', 'root', '', 'bookneo')
                       or die('not connect to sql');
    return $conn;
}

 
function getSql($conn, $sql)
{
    $query = $conn->query("SET NAMES UTF8");
    $query = $conn->query($sql);
 
    $rows = array();
 
    while ($row = $query->fetch_array()){        
        $rows[] = $row;
    }
    return $rows;
}
?>


Read More

วันพุธที่ 4 กันยายน พ.ศ. 2556

Inheritance การสืบทอดคุณสมบัติ ของClass OOP PHP



ได้ยินกันบ่อยๆ inheritance เป็นถ่ายทอดคุณสมบัติของแม่แบบ หรือ Class หลักที่กำหนดให้มีคุณสมบัติต่างๆ ที่จำเป็นต้องมี ด้วยการสืบทอดของ Class ลูก(Sub-Class)จึงทำให้ Classลูก สามารถมีคุณสมบัติเฉพาะที่เหมือนกับ Classหลัก และสามารถเพิ่มคุณสมบัติอื่นเข้าไปได้อีกในคลาสนี้....

สมมุติว่า มีพ่อแม่คู่หนึ่ง ชื่อ a กับ b และสมมุติให้ a,b เป็น Class ParentClass
- a กับ b มีลูกด้วยกัน 3คน ชื่อ c, d, f และสมมุติให้ c,d,f เป็น Class ChildClass
- a กับ b มีคุณสมบัติเฉพาะดังนี้  ชื่อ ความสูง น้ำหนัก เพศ มีพฤติกรรมดังนี้ วิ่งสองขา นอนหลับ การกิน
คุณสมบัติและพฤติกรรมเหล่านี้จะถูกถ่ายทอดไปสู่ลูกๆ ทั้ง 3 ด้วย

แล้วทำอย่างไรให้ ParentClass รู้ว่า ChildClass เป็น Class ลูก(Sub-Class) ของตัวเอง
ก็ต้องประกาศให้เป็นที่รู้กันด้วย keyword ที่ชื่อ extends
รูปแบบ
class ChildClass extends ParentClass
{
//doSometing....
}
เพียงแค่นี้ ClidClass ก็สามารถเรียกใช้คุณสมบัติจาก ParentClass ได้แล้วครับ

ok. เดี๋ยวมาทำให้มันเห็นภาพแบบ ง่ายๆ สั้นๆกันครับ
ผมจะเริ่มด้วยการสร้างไฟล์ขึ้นมา 3 ไฟล์ คือ index.php, Parentclass.php, Childclass.php
ผมจะเริ่มที่ไฟล์ Parentclass.php ก่อน

ไฟล์ Parentclass.php
class ParentClass
{
    public function __construct()
    {
        echo 'ฉันสามารถวิ่ง 2 ขาได้';
    }
}
ท่านคงจะจำ method __construct() ได้ ถ้าไม่ได้ก็ให้ไปอ่านบทความก่อนหน้านี้ครับ
จากนั้นผมก็จะเรียก method __construct() ด้วยการสร้างอ็อบเจ็ค ที่ไฟล์ index.php ดังนี้

ไฟล์ index.php
ไฟล์ index.php
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type"
        content="text/html; charset=UTF-8">
        <title></title>
    </head>
  <body>
<?php
require_once('Parentclass.php');
$ab = new ParentClass();
?>
  </body>
</html>

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้



จากนั้นผมก็สร้าง classลูกขึ้นมา ชื่อว่า ChildClass
แล้วผมก็นำเข้าไฟล์ Parentclass.php ด้วยการ require_once()
require_once('Parentclass.php');

ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
   
}
ไฟล์ Childclass.php มีแค่นี้ไม่มีอะไรเลย แต่สามารถ output ได้เหมือนกับ PrentClass ได้ทุกประการ

การนำเข้าไฟล์ Parentclass.php ท่านจะนำเข้าตรงไฟล์ Childclass.php ก็ได้ หรือที่ไฟล์ index.php
ก็ได้ แต่ถ้าท่านนำเข้าที่ไฟล์ Childclass.php ก็ไม่ต้องไปนำเข้าที่ไฟล์ index.php อีก เดี๋ยวผมขอเอาไปนำ
เข้าที่ไฟล์ index.php ก็แล้วกัน จากนั้นผมก็ output ที่ไฟล์ index.php
ไฟล์ index.php
require_once('Parentclass.php');
require_once('Childclass.php');

$cdf = new ChildClass();

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้



ที่นี้เดี๋ยวผมจะเปลี่ยนวิธีเรียก function __contruct ของ ParentClass ใหม่ด้วยการใช้ คำว่า parent แล้วตามด้วยเครื่องหมาย ::
รูปแบบ
ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
   function __construct()
    {
        parent::__construct();
    }
}

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้


ทุกอย่างยังสืบทอดได้เหมือนเดิม

แล้วถ้าผมมี mathod เพิ่มขึ้นมา 2 mathod  ที่ไฟล์ Parentclass.php ดังนี้
class ParentClass
{
    public function __construct()
    {
        echo 'ฉันสามารถวิ่ง 2 ขาได้';
    }

    public function doSometing()
    {
        return 'call me doSometing';
    }
}
จากนั้นผมก็ เรียก method doSometing() ที่ไฟล์ Childclass.php ดังนี้
ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
    public function __construct() 
    {
        parent::__construct();
        echo $this->doSometing();
    }
}

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้ call me doSometing



ในบทความนี้ท่านก็ได้เห็น วิธีการสืบทอดคุณสมบัติ จาก Class(แม่แบบ) ของ Classลูก(Sub-Class)
พร้อมทั้งวิธีการเรียกใช้งาน ผิดพลาดยังไงก็ขออภัยด้วยครับ สำหรับบทความนี้ผมก็ขอจบเพียงเท่านี้.....

Read More

Encapsulation การปกป้องข้อมูลของอ็อบเจกต์ OOP PHP



Encapsulation ก็คือการปกป้องข้อมูลของอ็อบเจกต์ ด้วยการใช้คีย์เวิร์ด อย่าง public, private, protected การใช้งาน public โดยปกติค่าพื้นฐานของ property กับ method จะเป็น public อยู่แล้วโดยไม่ต้องใส่ public จะใส่หรือไม่ใส่ก็ได้ ท่านจะเขียนแแบบนี้ var $name; หรือแบบนี้ public $name; ก็ได้....

Encapsulation ก็คือการปกป้องข้อมูลของอ็อบเจกต์ ด้วยการใช้คีย์เวิร์ด อย่าง public, private, protected
วิธีการก็คือ ใช้คีย์เวิร์ดเหล่านี้วางไว้ขางหน้า property และ method
property = variable(ตัวแปร)
method = function(ฟังก์ชั่น)

Public = สามารถใช้งานได้ทั่วไป
Private = สามารถเข้าใช้ได้เฉพาะภายในคลาส
Protected = สามารถเข้าใช้ได้ภายในคลาส และคลาสที่สืบทอด(extends)จากคลาสแม่

การใช้งาน public โดยปกติค่าพื้นฐานของ property กับ method จะเป็น public อยู่แล้วโดยไม่ต้องใส่
public จะใส่หรือไม่ใส่ก็ได้
ท่านจะเขียนแแบบนี้ var $name; หรือแบบนี้ public $name; ก็ได้

property หรือ method ที่ถูกกำหนดให้เป็น public สามารถเรียกใช้จากภายนอก Class
ได้ทันทีที่กำหนดอ็อบเจกต์ เช่น
class Human{
var $name = 'Bookneo';
}
หรือ
class Human{
public $name = 'Bookneo';
}
ผมสามารถเรียกใช้ ด้วยการสร้างอ็อบแบบนี้
$Myname = new Human();
echo $Myname->name;
ส่วน private ไม่สามารถเรียกใช้จากภายนอกได้ แต่สามารถเรียกใช้ภายใน Class ได้ เช่น
class Human{
private $name = 'Bookneo';

function getName(){
return $this->name;
}
}
return คือการคืนค่ากลับออกไปผ่าน method
$this คือการเชื่อมโยงระหว่าง property กับ method โดยการใช้เครื่องหมาย -> ชี้ตำแหน่ง

เรียกใช้
$Myname = new Human();
echo $Myname->getName();
ทีนี้ผมจะสร้างไฟล์ขึ้นมา 2 ไฟล์ คือ index.php กับ Myclass.php
ไฟล์ Myclass.php ผมจะสร้าง method ขึ้นมา 2 method คือ setName กับ getName
method setName จะรับค่ามา 1 ค่า เริ่มต้นด้วยการเซ็ตค่าว่างให้เป็นค่าพื้นฐาน
method getName จะคืนค่ากลับออกไป
รูปแบบ
class Human
{    
function setName($name = ''){
    $this->name = $name;
}

function getName(){
    return $this->name;
}    
}
ไฟล์ index.php  ผมจะส่งค่าไปให้กับ method setName แบบนี้
$Myname->setName('Bookneo');

ไฟล์ index.php 
<!DOCTYPE html>
<html>
<head>
<mata>charset=utf-8</mata>
<title></title>
</head>
<body>

<?php
require_once('Myclass.php');
$Myname = new Human();
$Myname->setName('Bookneo');
echo $Myname->getName();
?>

</body>
</html>

สำหรับบทความนี้ก็ขอจบเพียงเท่านี้.....

Read More

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay