Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > กระทู้รณรงค์ ตอน "มาเขียน php แบบ OOP กันเถอะ" คือผมก็เห็นว่า community ที่นี่มีคนเก่งเยอะ



 

กระทู้รณรงค์ ตอน "มาเขียน php แบบ OOP กันเถอะ" คือผมก็เห็นว่า community ที่นี่มีคนเก่งเยอะ

 



Topic : 027334



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์




คือผมก็เห็นว่า community ที่นี่มีคนเก่งเยอะพอสมควร
จะเป็นการดีถ้าจะเริ่มสอนคนที่เขียน php แบบ functional ให้เปลี่ยนมาเขียนแบบ OOP
เพราะที่ community นี้จะมีคนให้ถามเยอะครับ ^^

โดยส่วนตัวแล้วผมเห็นว่า หลายๆคนเริ่มเขียนแบบแยกไฟล์กันแล้ว แต่ก็ยังมีอีกหลายๆ คนยังเขียนแบบยาววววว ยืดกันอยู่
(สังเกตจาก code ที่เอามาถามกันน่ะคับ) ผมก็เลยเห็นว่าตอนนี้ภาษาอื่นๆ ก็พัฒนาไปค่อนข้างไกลแล้ว (support OO กันหมดแล้ว)
ผมก็เลยอยากให้เพื่อนๆ พัฒนาโคดเป็นแบบ OO กันให้มากขึ้นน่ะคับ ผมว่านะเขียนแบบ OOP โคดของเราจะเป็นระเบียบมากขึ้นคับ

จะเขียน php แบบ OOP ต้องใช้ PHP 5 ขึ้นไปนะคับ
ใครรู้ตัวว่าเก่ากว่า 5 upgrade ตามโลกได้แล้วนะคับ
(ตอนนี้ php 6 ก็กำลัง develop กันอยู่แล้วนะคับ)

ถ้าใครสงสัยว่า OO หรือ OOP คืออะไรลองอ่าน ที่นี่ดู
ส่วนว่าจะเริ่มเขียนยังไง ที่จริงที่ thaicreate ก็(เกือบจะ)มี tutorial เกี่ยวกับ class แล้ว ที่นี่ แต่เห็นว่ายังไม่เสร็จคับ
พอดีผมไป search เจอการเขียน php oop เบื้องต้นที่เป็นภาษาไทยลองเข้าไปดูๆ กันได้ ที่นี่ คับ

ส่วนผมลองเขียน แบบ OOP ง่ายๆ พอเป็นแนวคิดมาให้ดูมาให้ลองรันกันดูคับ
เป็นตัวอย่างการเขียนติดต่อกะ db เพื่อดึงข้อมูลธรรมดาคับ
เพียงแต่ถ้าเราเขียน OOP แบบนี้แล้ว sql เราจะรวมอยู่ที่ class class เดียว ไม่กระจัดกระจายไปหลายๆ ไฟล์
สามารถ reuse ได้หลายรอบโดยไม่ต้องเขียนใหม่
Code (PHP)
<?php

class CReturn {
	const FAIL = false;
	const SUCCESS = true;
	public static function error($error_msg){
		return array(self::FAIL, $error_msg);
	}
	public static function success($value){
		return array(self::SUCCESS, $value);
	}
}

class initDb {
	private static $host = "localhost";
	private static $user = "root";
	private static $pass = "mysql";
	private static $db = "db_test1";	
	
	public static function connect(){
		$db_conn = mysql_pconnect(self::$host, self::$user, self::$pass) or die(mysql_error());
		mysql_select_db(self::$db, $db_conn) or die(mysql_error());
		mysql_query("SET NAMES UTF8;");
		return $db_conn;
	}
}

class DbAbstract {
	protected $db_conn;
	protected $table_name;
	public $_data;
	public function __construct($db_conn){
		$this->db_conn = $db_conn;
	}
	protected function _get($sql){
		$this->_data = null;		
		$result = mysql_query($sql);
		if(mysql_errno($this->db_conn) !== 0) 
			return CReturn::error("Mysql error [".mysql_errno($this->db_conn)."] : ".$sql."<br />".mysql_error($this->db_conn));
		while($res = mysql_fetch_assoc($result)) {
			$this->_data[] = $res;
		}
		return CReturn::success(mysql_num_rows($result));
	}
	protected function getTableName(){
		return $this->table_name;
	}
	public function getAll(){
		return $this->_get("SELECT * FROM {$this->getTableName()}");
	}
}

class DbTable1 extends DbAbstract {
	protected $table_name = "table1";
	public function getById($id){
		return $this->_get("SELECT *  FROM {$this->getTableName()} WHERE user_id = {$id}");
	}
}

print "<pre>";
$db_conn = initDb::connect();

// แบบ error
$oTb1 = new DbTable1($db_conn);
list($result, $value) = $oTb1->getById("id_is_not_string");
print "<b>Query result</b> = ".var_export($result,true)."<br />";
print "<b>Num rows/Error msg</b> = '".$value."'<br />";
print "<b>data</b> = ".var_export($oTb1->_data,true)."<br />";
print "<br />";

// แบบ ดึงข้อมูลไม่เจอหรือไม่มีใน db
$oTb1 = new DbTable1($db_conn);
list($result, $value) = $oTb1->getById(5);
print "<b>Query result</b> = ".var_export($result,true)."<br />";
print "<b>Num rows/Error msg</b> = ".var_export($value,true)."<br />";
print "<b>data</b> = ".var_export($oTb1->_data,true)."<br />";
print "<br />";

// แบบดึงข้อมูลได้ 1 record
$oTb1 = new DbTable1($db_conn);
list($result, $value) = $oTb1->getById(1);
print "<b>Query result</b> = ".var_export($result,true)."<br />";
print "<b>Num rows/Error msg</b> = ".var_export($value,true)."<br />";
print "<b>data</b> = ".var_export($oTb1->_data,true)."<br />";
print "<br />";

// แบบดึงข้อมูลได้หลาย records
list($result, $value) = $oTb1->getAll();
print "<b>Query result</b> = ".var_export($result,true)."<br />";
print "<b>Num rows/Error msg</b> = ".var_export($value,true)."<br />";
print "<b>data</b> = ".var_export($oTb1->_data,true)."<br />";
print "<br />";

?>


ส่วน db ใช้แค่
Code sql
CREATE TABLE `table1` (
`user_id` int(11) NOT NULL auto_increment,
`fname` varchar(255) collate utf8_unicode_ci NOT NULL,
`lname` varchar(255) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

INSERT INTO `table1` (`user_id`, `fname`, `lname`) VALUES
(1, 'นายกอ', 'ไก่'),
(2, 'นายขอ', 'ไข่');


ลองดูกันคับ
"ความคิดเปลี่ยน อนาคตก็เปลี่ยน แค่เปิดใจ"
ถ้าเราไม่เริ่มพัฒนาตัวเองตั้งแต่วันนี้ แล้วเราจะเริ่มวันไหน ใช่มั๊ยครับ !!

ร่วมสร้างสรรค์ community นี้ให้ดียิ่งๆ ขึ้นไปคับ
สงสัยเรื่องอะไรโพสถามพี่ๆ เค้าได้เลยคับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-05-14 11:58:32 By : nut_t02 View : 139469 Reply : 419
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ยกตัวอย่างได้ดีมาก ๆ ครับ






Date : 2009-05-14 12:08:15 By : webmaster
 


 

No. 2



โพสกระทู้ ( 1,035 )
บทความ ( 0 )



สถานะออฟไลน์


เห็นด้วยครับ ไม่ต้องไปคิดว่ามันยากน่ะครับ เพราะมันง่ายมากๆเลยอาจจะง่ายกว่า function อีกพอดีเคยเขียนอยู่

ของดีต้อง +1 ครับ
Date : 2009-05-14 12:18:28 By : kanchen
 

 

No. 3

Guest


กำลังพยายามให้เป็น OOP แต่ก้อชอบเผลอเขียนแบบ ฟังก์ชั่น (เพระมันชิน ฮ่า ๆ )
Date : 2009-05-14 12:29:58 By : หนุ่มคุง
 


 

No. 4



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


สิ่งดีๆ ที่ควรปักหมุด เผื่อมีใครเอาโค๊ดดีๆ มาแปะอีก อิอิ
Date : 2009-05-14 12:55:22 By : plakrim
 


 

No. 5



โพสกระทู้ ( 99 )
บทความ ( 0 )



สถานะออฟไลน์


ว่าจะลองเขียนหลายทีแล้ว

แต่ไม่มีเวลาซักที งานหน้าต้องลองใช้ดู

(ถ้ามันไม่เร่งนะ)
Date : 2009-05-14 20:14:42 By : ttong
 


 

No. 6



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ผมว่าพอเราเขียนกันไปซักพักนึง ก็น่าจะพอรวบรวมโคดที่เราเอามา share กันออกมาได้เป็น framework ตัวนึงได้
ทีนี้ล่ะ เราก็จะมี framework สำเร็จรูปที่สร้างด้วยฝีมือพวกเราเองจริงๆ สามารถเอาไป apply กับโปรเจคใดๆ ก็ได้
เพียงแค่เปลี่ยนโคดนิดหน่อยเท่านั้นเอง

โดย framework ตัวนี้ไม่ได้เลิศเลออย่างจูมล่า หรือแมมโบ ที่แทบจะไม่กล้าแก้ core อะไรเลยเพราะกลัวทำงานไม่ได้
โดย framework ตัวนี้ก็ไม่ได้แย่ขนาดที่ทำออกมาแล้วใช้ได้แค่โปรเจคเดียว

ร่วม share กันไปคับ
เดี๋ยวก็สำเร็จเอง


โดยส่วนตัวแล้วผมก็พอมีที่ทำๆ เอาไว้บ้าง
รวมรวบ lib โน้น lib นี้มารวมกัน พยายามทำให้ configurable มากที่สุดเท่าที่จะเป็นไปได้
อาจไม่สมบูรณ์ เท่าใดนัก เพราะเขียนด้วยความรู้อันน้อยนิด
ก็รออาศัยเทพทั้งหลายในนี้ช่วยขัดเกลาเอาล่ะคับ แหะๆ ^^'

จะผิดจะถูกอย่างไรถ้าสงสัยก็โพสถามเลยคับ
แล้วมาช่วยกันเกลา

"ถ้ายังไม่คิดพัฒนา เราก็ยังล้าหลังเหมือนเดิมนะคับ"


ปล. ดูเหมือนเรื่อง OOP ที่นี่ยังไม่ค่อยเป็นที่น่าสนใจของคนทั่วไปในนี้นะคับ
ตัวอย่าง ก็เริ่มมีให้เห็น อันที่จริงเห็นมานานแล้วมากกว่าว่า concept การเขียนโปรแกรมแบบเดิมมันไม่ได้ผล
แต่ก็ไม่ได้สนใจที่จะเปลี่ยนแปลงมัน - -'
Date : 2009-05-14 20:42:16 By : nut_t02
 


 

No. 7

Guest


ขอคุณกระทู้นี้ และท่านเทพฯ ทั้งหลายนะครับ
Date : 2009-05-14 22:16:27 By : panyapol
 


 

No. 8



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ทำไมหลายคนไม่ใช้ OOP

ตามความคิดของผมเอง ที่ประสบมาคือ

1. OOP จริงๆแล้ว ต้องมีประโยชน์ในการ reuse เป็นอันดับแรกในการเลือก สำหรับการออกแบบคลาส แล้วจะต้องสามารถ ถ่ายทอดคุณสมบัติ และมีแพทเทิร์นที่วางกันไว้ก่อน และควรจะมีเอกสารกำกับเพื่อคนที่ใช้จะได้สามารถเอาไปปรับใช้ได้ถูกต้อง ซึ่งต้องใช้เวลาการออกแบบคลาสให้ เป็นกลางๆ ไม่มากไม่น้อยไปสำหรับ เบสคลาส

2. เรื่อง interface กับ abstract class หลายๆคนยังไม่เข้าใจวิธีการทำงานของมัน ซึ่งมีเพิ่มขึ้นใน php5 นี้ ซึ่งหลักการทำงานของมัน อาจทำให้ Over head สำหรับหลายๆคน ทำให้ทำงานหนักมากกว่าเขียนแบบธรรมดามาก

3. การเขียนโดยใช้ OOP เป็นการทำให้เครื่อง ทำงานหนักเกินจำเป็น ในหลายกรณี

4. OOP ใน php ยังไม่สามารถเทียบกับภาษาอื่นได้ ซึ่งจะสามารถใช้แพทเทิร์น ต่างๆที่มีความแตกต่างกันได้หลากหลายตามแต่กรณีที่จำเป็น (แต่ตอนนี้ ก็ มี abstract กับ interface ให้ใช้)

5. เรื่องการออกแบบให้เป็นกลาง และสามารถปรับปรุงคลาสโดยการ inherit, implement นั้นเป็นงานที่ยากมาก มีเรื่อง scop ให้ต้องวางไว้ก่อน และการออกแบบกับโปรเจกต์บางที อาจมีส่วนที่ต้อง hard code ซึ่งเป็นส่วนที่ไม่สมควรใน Object คับ

6. คนที่จะใช้ OOP กับงานได้จริงๆนั้น ยังหาได้น้อยเพราะว่าจะใช้กับงานได้จริง ก็ต้องชำนาญพอสมควรก่อน ไม่งั้น ยังไงก็ต้องมานั่งแก้โค้ด ในคลาส ซึ่งอาจมีปัญหากับคลาสต่างๆ ที่สืบทอดกันไป ทำให้มีความเสี่ยงสูง

7. ผมว่า OOP เหมาะสำหรับโปรเจกต์ขาดกลาง ขึ้นไป ถึงจะคุ้มค่า

8. php เองไม่ค่อยมี library ให้เรียนมากซึ่งต่างกันกับภาษาอื่น ที่จำเป็นต้องเรียน standard library ซึ่งเป็น OOP มากมาย เช่น Java, Ruby เพราะ php เองเน้นให้ใช้งานแบบทั่วไปได้ไม่ค่อยเจาะจง และทำให้เรียนได้ง่ายกว่า(การตลาด) แต่ก็มี library ภายนอกหลายตัวที่ใช้ OOP ของ php5 ซึ่งคนส่วนใหญ่มักไม่ค่อยได้ใช้ library ภายนอกกัน



http://gunner.freetzi.com
Date : 2009-05-15 13:40:22 By : pjgunner
 


 

No. 9



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอแก้โค้ดตัวเองหน่อยนะคับ ไม่รู้ว่าจะทำงานไหม ผมก็ยังไม่แน่ใจ ไม่รู้ว่า interface ประกาศเป็น static ได้ไหม

Code (PHP)
<?php
interface DBConnect{
	public static function defaultConnect();
	public static function connect();
}


class MySQLConnect implements DBConnect{
    const DEF_HOST = 'localhost';
    const DEF_USER = 'root';
    const DEF_PASSWORD = '';
    const DEF_DB = 'dbhanler';
     
    public static function defaultConnect(){
        return self::connect(self::DEF_HOST, self::DEF_USER, self::DEF_PASSWORD, self::DEF_DB);
    }
     
    public static function connect($host, $user, $pass, $db_name, $pconnect = false){
        global $conn;
         
        if($pconnect)
            $conn = mysql_pconnect($host, $user, $pass);
        else
            $conn = mysql_connect($host, $user, $pass);
         
        if(!$conn) exit( mysql_error() );
         
        if( !mysql_select_db($db_name, $conn) ) exit('Cannot select database.');
        mysql_query("SET NAMES UTF8");
         
        return $conn;
    }
}//DBHandler class
?>

Date : 2009-05-15 15:54:07 By : pjgunner
 


 

No. 10



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ลืมบรรทัดที่ 4 ไปนิดนึงนะคับ

Code (PHP)
<?php
interface DBConnect{
	public static function defaultConnect();
	public static function connect($host, $user, $pass, $db_name, $pconnect = false);
}


class MySQLConnect implements DBConnect{
    const DEF_HOST = 'localhost';
    const DEF_USER = 'root';
    const DEF_PASSWORD = '';
    const DEF_DB = 'dbhanler';
     
    public static function defaultConnect(){
        return self::connect(self::DEF_HOST, self::DEF_USER, self::DEF_PASSWORD, self::DEF_DB);
    }
     
    public static function connect($host, $user, $pass, $db_name, $pconnect = false){
        global $conn;
         
        if($pconnect)
            $conn = mysql_pconnect($host, $user, $pass);
        else
            $conn = mysql_connect($host, $user, $pass);
         
        if(!$conn) exit( mysql_error() );
         
        if( !mysql_select_db($db_name, $conn) ) exit('Cannot select database.');
        mysql_query("SET NAMES UTF8");
         
        return $conn;
    }
}//DBHandler class
?>

Date : 2009-05-15 16:23:38 By : nut_t02
 


 

No. 11



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ผมก็อยากเขียนแนว oop นะครับ แต่เพื่อนร่วมงานเขาไม่เขียนนี้ซิ
เราเลยต้องเลยตามเลย
พวก framework ทั้งหลายก็อยากใช้ แต่ไม่ได้ใช้ซักที

อย่างว่าแหละครับไม่มีเวลาให้ทดลอง ทำเอาของใหม่มา
พอถึงกำหนดส่ง แล้วมันไม่ไ้ด้อย่างหวัง ก็โดนปรับ โดนด่าไปอีก
Date : 2009-05-15 17:17:37 By : kuznetsova
 


 

No. 12



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


555 อันนี้ผมก็เป็นคับ

ผมเลยใช้วิธีทำนอกเวลา แล้วเอาผล + วิธีเขียนมาให้ดูคับ
แล้วบอกว่ามันทำให้ชีวิตง่ายขึ้นอย่างไร
ได้ผลคับตอนนี้ศึกษากันใหญ่เลย !!


แต่ทั้งนี้ทั้งนั้นปัญหาหลักๆ น่าจะเป็นที่ผู้อาวุโสกว่าเราทั้งหลายใน office
เค้าอาจจะไม่ค่อยเห็นด้วยที่จะมีการเปลี่ยนแปลงอะไร

เอาเป็นว่าคิดว่าจะเริ่มผมก็ยินดีด้วยแล้วคับ
ดีกว่าอ่านประทู้นี้แล้วปล่อยผ่านมันต่อไป
Date : 2009-05-15 17:26:34 By : nut_t02
 


 

No. 13



โพสกระทู้ ( 702 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


สิ่งไหนที่คิดว่าดี ควร หรือว่าไม่เหมาะสมอย่างไร ให้ผู้ใช้งานเลือกเอาครับ ว่าสะดวกอันไหน แต่ทุกความคิด ที่สนุบสนุนการเป็น Web Programmer ที่ดีผมก็ยินดีสนับสนุนครับ

หุหุ
Date : 2009-05-15 17:30:03 By : ddsure
 


 

No. 14



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


กำลังหัดเขียนอยุ่อะ

ชอบๆ เพลินดีครับ

ยังไม่ชำนาญเท่าไร

ผลงานล่าสุดของผม ก้เขียนปฏิทินด้วย OOP เนี้ยแหละ

http://www.danya-reload.com/home/article/viewArticle.php?id=42
Date : 2009-05-15 18:14:59 By : danya
 


 

No. 15



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

php จำเป็นต้อง backward compatibility สำหรับ oop ใน php4 ดังนั้น เมธอดที่ ไม่ได้เป็น static ก็ยังสามารถถูกเรียกได้ โดยไม่จำเป็นสต้องสร้าง instance แต่ไม่ควรอย่างยิ่งสำหรับการใช้งานแบบนี้นะครับ

ตย.

class Test{
public function tt(){
echo 'Test';
}
}

Test::tt(); // ทำงาน

สมมติว่า ลอง ให้เมธอดนี้ เรียกใช้ reference ของตัวเอง
class Test{
public $ok = 'ok';
public function tt(){
echo $this->ok;
}
}

Test::tt(); // คราวนี้ Error

ซึ่งอาจเป็นกับดัก ในการโค้ดนะครับ ควรออกแบบตามสถาปัตยกรรมใหม่ โดยใช้ static แยก เพื่อให้บ่งบอกสถานะการเรียกใช้ ว่า static ไม่สามารถใช้ reference ของตัวเองได้
Date : 2009-05-15 19:34:35 By : pjgunner
 


 

No. 16



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ผมเองกะว่าจะใช้ OOP กับโปรเจกต์ที่กำลังวางแผนไว้ หลังจากศึกษา javascript library ตัวหนึ่ง
เห็นกระทู้นี้ ก็เลยมาชำเลืองดูก่อน
แต่ว่า OOP ใน php ยังไม่เป็น แบบ stable หรือ standard ซักเท่าไหร่ หลังจากลองอ่านดู OOP สำหรับ php 5

ซึ่งปัจจุบันผมใช้ php 2.2.3

As of PHP 5.3.0, it's possible to reference the class using a variable. Keywords like self, parent or static are not allowed in dynamic class references.

ตย.
Code (PHP)
<?php
// Copy from php manual ^^!
class Foo
{
   public static $my_static = 'foo';

   public function staticValue() {
       return self::$my_static;
   }
}

class Bar extends Foo
{
   public function fooStatic() {
       return parent::$my_static;
   }
}


print Foo::$my_static . "\n";

$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n";      // Undefined "Property" my_static 

print $foo::$my_static . "\n"; // ตามที่เข้าใจ น่าจะบรรทัดนี้ ว่า ไม่ควร
$classname = 'Foo';
print $classname::$my_static . "\n"; // หรือว่าจะ บรรทัดนี้

print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
?>



ดังนั้นควรใช้ Foo::$my_satatic; จะดีกว่านะคับ

ผมเองก็ยังไม่ได้ไปอ่านรายละเอียด OOP ที่น่าจะ stable ของ php6
Date : 2009-05-15 19:58:07 By : pjgunner
 


 

No. 17



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


โอ้ว เป็นประโยชน์มาก ขอบคุณคับ
สำหรับความรู้คับ
สำหรับ php 6 ผมอ่านคร่าวๆ (คร่าวมากๆ เพราะอ่านไม่ค่อยออก เหอๆ)


แต่ถ้ามีความรู้เกี่ยวกับ js lib ผมก็เอานะคับ
ตอนนี้ผมใช้ jquery เป็นแค่พื้นๆ นิดหน่อย แล้วก็ต้องไปหัดใช้ ext js อีกตัว
ตอนนี้ผมก็กำลังลองผิดลองถูกเหมือนกัน
ยังไงก็ share กันได้นะคับ ^^
(อันที่จริงต้องเรียกว่าผมมาขอความรู้ถึงจะถูก หุหุ)
Date : 2009-05-15 22:50:42 By : nut_t02
 


 

No. 18



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ext รู้สึกจะไม่ฟรีแล้วนะครับ
Date : 2009-05-15 23:22:34 By : plakrim
 


 

No. 19



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


กำลังหัดเหมือนกันครับ

ตอนแรกมีหนังสือ แล้วอ่านเห็นผ่านๆ

แต่ไม่ได้ลองศึกษาจริงๆ

เวลาเขียน ก็เขียนแค่

Ex. My Code
<?
class db
{
	public function query ($cmd)
	{
		return @mysql_query ($cmd);
	}
	
	public function fetch ($cmd)
	{
		return @mysql_fetch_array ($cmd);
	}
	
	public function num ($cmd)
	{
		return @mysql_num_rows (self::query ($cmd) );
	}
	
	public function quickfetch ($cmd)
	{
		return self::fetch ( self::query ($cmd) );	
	}
	
	public function connect ()
	{
		global $data;
		$connect = @mysql_connect ($data['host'], $data['user'], $data['pass']);
		@mysql_select_db ($data['db']);
		return $connect;
	}
	
	public function close ($con = "")
	{
		@mysql_close ($con);
	}
}
?>


ผมใช้แค่นี้เองครับ แถมใส่ $db = new db(); ไว้ในหน้าพวก config ที่จะต้องถูก include โดยหน้าอื่นๆ

สรุปคือ ทำไว้เท่ๆ ไปงั้น

ตอนนี้เขียนเว็บบอร์ดเล่นๆ ตอนเริ่มก็ยังไม่เห็นกระทู้นี้ เลยอัด function ไปยาวเลย

พอมาเห็นกระทู้นี้เลยลองหยิบหนังสือ PHP มาอ่าน OOP ดู

ตอนนี้เพิ่งมาเปลี่ยนเป็น OOP ไป คลาส 2 คลาสเองครับ (คิดไม่ออกว่าจะใช้ยังไงดี)

เลยอยากให้ ท่านไหนใจดี มาช่วยเด็ก ม.4 คนนี้ คิดหน่อยครับ ว่าจะใช้ยังไงดี

ใครอยากช่วยคิดก็แอดมาเลยครับ bank[at]th-gaming.com

ปล. ไม่ได้ใช้ในเชิงพาณิชย์แน่นอนครับ ลองเขียนเล่นๆ ไว้ใช้เอง ก่อนเปิดเทอม งุงิ
Date : 2009-05-15 23:37:36 By : PoseidonX
 


 

No. 20



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


รู้สึกว่าถ้าเพื่อการศึกษาจะยังฟรีอยู่นะคับ
แต่ถ้าเพื่อธุรกิจคงต้องซื้อ license อยู่


Date : 2009-05-15 23:43:10 By : nut_t02
 


 

No. 21



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


เพื่อการศึกษา มันจะได้ใช้กี่ครั้งเนี้ย
Date : 2009-05-15 23:44:47 By : plakrim
 


 

No. 22



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ผมก็กำลังเขียน database แบบ oop อยู่
อีกประมาณ 3 ปีก็เสร็จแล้วล่ะ (ล้อเล่นได้ประมาณ 90% แล้ว) เหลือ debug อีกหน่อย
Date : 2009-05-16 01:02:21 By : num
 


 

No. 23



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


นี่ก็เยี่ยมคับ ไว้เอามาแชร์กันนะคับ


หนับหนุนความคิดดีดี แหะๆ
Date : 2009-05-16 07:21:01 By : nut_t02
 


 

No. 24



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ขอโทษนะคับ ผมเพิ่งเข้าไปดูปฏิทิน rep No. 16 เยี่ยมมากคับ
ถ้าประยุกต์กะ ajax หน่อยคงสามารถเขียน note ลงไปได้ เหมือน google calendar เลย

ถ้าเขียนได้ แล้วก็คงมีแนวความคิดแล้วล่ะคับ ว่า google doc ทำงานยังไง
พอเป็น idea ไปทำอย่างอื่น

ปล ผมชอบนะที่คุณเขียน comment ด้วยใครที่อ่าน code ไม่ค่อยรู้เรื่องก็เดาๆ ได้จาก comment นี่แหละ
อันที่จริง comment ควรเขียนประมาณนี้อ่ะคับ เพราะ tool บางตัวสามารถนำ comment มาแสดงได้เช่น เขียนโคดแบบนี้
Code (PHP)
<?php

/**
 * Enter description here...
 *
 */
class test {
	/**
	 * Enter description here...
	 *
	 * @param string $d (1-31)
	 * @param string $m (1-12)
	 * @param string $y
	 * @return integer
	 */
	public function getWeek($d = '', $m = '', $y = '')
	{
	    $day     =     date('j');
	    $month     =    date('n');
	    $year     =     date('Y');
	    
	    if ( is_numeric($d) && $d > 0 ) $day     = $d;
	    if ( is_numeric($m) && $m > 0 ) $month     = $m;
	    if ( is_numeric($y) && $y > 0 ) $year     = $y;
	    
	    $firstWeek         =     date('w', mktime( 0, 0, 0, $month, 1, $year));
	    
	    return ceil( ( $day + $firstWeek )  / 7 );
	}
}

?>


เวลา tool ที่ใช้เขียนจะแสดงแบบนี้คับ

code comment 2

จะเป็นประโยชน์มากสำหรับคนที่นำไปใช้ต่อ ลองนึกดูสิว่าถ้าเรามีโคดยาวๆ เยอะๆ หลายบรรทัด หรือบางทีแยกออกเป็นหลายไฟล์
คงจะไม่มีคนไปนั่งไล่หรอกคับ ว่า function นี้รับ parameter อะไร return อะไรยังไง
เค้าก็อาศัยดูไอ้ตรงนี้อ่ะแหละ อีกอย่างนะคับ comment ที่ผมเขียนให้ดูมาสามารถใช้ phpDocumentor gen
ออกมาเป็นรูปแบบ html สวยๆ ได้ เช่น ที่นี่คับ

อ่อ อีกเรื่องนึงคับ (หลายเรื่องจังแหะ )
programmer เราๆ ท่านๆ เนี่ยส่วนใหญ่ไม่ค่อย validate parameter ที่รับเข้ามากันคับ
อย่างน้อยก็ควรมีการดัก error ไว้ จะไม่ validate ก็ได้ถ้าใช้คนเดียว
หรืออย่างน้อยก็มีค่า default ให้ดูเป็นตัวอย่าง ซึ่งค่า default นี่อย่างน้อยก็ให้ program ทำงานต่อได้โดย
ไม่ error ออกมา php fatal error หรือ php warning คับ

แพร่มซะยาวเลยผม
เด๋วผมขอเอาไปใช้มั่งนะคับ ปฏิทินนี่ ^^
Date : 2009-05-16 08:02:13 By : nut_t02
 


 

No. 25



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

rep 16. เขียน calendar ได้ขนาดนี้ไม่ใช่มนุษย์แล้วครับ (เหนือมนุษย์) อิๆ
Date : 2009-05-16 08:37:46 By : num
 


 

No. 26



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ทดสอบใหม่อีกรอบ เพราะลืมเรื่อง dynamic paramiter ไป

Code (PHP)
<?php
interface DBConnect{
	public static function connect($host ='', $user ='', $pass ='', $db_name ='', $flag ='');
	public static function endConnection();
}
?>


Code (PHP)
<?php
class MySQLConnect implements DBConnect{
    const DEF_HOST = 'localhost';
    const DEF_USER = 'root';
    const DEF_PASSWORD = '';
    const DEF_DB = 'mysql';
     
	 //@implement inteface DBConnect::connect()
    public static function connect($host = self::DEF_HOST, $user = self::DEF_USER, $pass = self::DEF_PASSWORD, $db_name = self::DEF_DB, $flag = false){
        global $conn;
         
        if($flag)
            $conn = mysql_pconnect($host, $user, $pass); // persistent connection
        else
            $conn = mysql_connect($host, $user, $pass);
         
        if(!$conn) exit( mysql_error() );
         
        if( !mysql_select_db($db_name, $conn) ) exit('Cannot select database.');
        mysql_query("SET NAMES UTF8");
         
        return $conn;
    }
	
	//@implement interface DBConnect::endConnection()
	public static function endConnection(){
		return mysql_close($conn);
	}
}//MySQLConnect class
?>


Code (PHP)
<?php
// ไม่เคยใช้ oracle แต่ลองมั่วๆ ตามแมนน่วนดู ไม่รู้ว่าจะทำงานป่าว
class OracleConnect implements DBConnect{
	const DEF_USER = 'root';
    const DEF_PASSWORD = '';
    const DEF_DB = 'oracle';
	
	//@implement interface DBConnect::connect()
	public static function connect($host='', $user = self::DEF_USER, $pass = self::DEF_PASSWORD, $db_name = self::DEF_DB, $flag = ''){
		global $conn;
		
		if($flag) //if 1
			if( is_array($flag) ){//if 2
				foreach($flag as $key=>$val)
					$$key = $val;
				
				if($charset && $session_mode)
					$conn = ocilogon($user, $pass, $db_name, constant($charset), constant($session_mode));
				else if($charset)
					$conn = ocilogon($user, $pass, $db_name, constant($charset));
				else if($session_mode)
					$conn = ocilogon($user, $pass, $db_name, NLS_LANG, constant($session_mode));
				else
					exit('พารามิเตอร์ไม่ถูกต้อง'); // หรือ trow Exception
			}else{ // if 2
				$conn = ocilogon($user, $pass, $db_name, constant($flag));
			}
		else //if 1
			$conn = ocilogon($user, $pass, $db_name);
			
		if(!$conn) exit('Error: connect to oracle.');
		
		return $conn;
	}
	
	//@implement interface DBConnect::endConnect()
	public static function endConnection(){
		return oci_close($conn);
	}
}//end OracleConnect
?>


ปล.ยังไม่สามารถทีละหลาย คอนเน็คชั่นได้ แค่ทดสอบเขียนดู
Date : 2009-05-16 09:52:37 By : pjgunner
 


 

No. 27



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ลืมสร้าง Factory class ให้ด้วย - -!

Code (PHP)
<?php
//คลาสโรงาน ^^
class DBConnectFactory{
	//to establish default connection
	public static function createDefaultConnection($db_type ='MySQL'){
		switch($db_type){
			case 'MySQL':
				return MySQLConnect::connect();
				break;
			case 'Oracle':
				return OracleConnect::connect();
				break;
			default:
				exit("Sory No Connection to '$db_type' database");
		}
	}
	
	//to establish user connection
	public static function createConnection($db_type = 'MySQL', $host='', $user ='', $pass ='', $db_name ='', $flag =''){
		switch($db_type){
			case 'MySQL':
				return MySQLConnect::connect($host, $user, $pass, $db_name, $flag);
				break;
			case 'Oracle':
				return OracleConnect::connect($host, $user, $pass, $db_name, $flag);
				break;
			default:
				exit("Sory No Connection to '$db_type' database");
		}
	}
}// DbConnectFactory class
?>

Date : 2009-05-16 10:11:17 By : pjgunner
 


 

No. 28



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


มันช่างน่าปวดหัว... มากกว่าที่โรงเรียนอีก ฮ่าๆ

ปล. public function กับ public static function มันแสดงผลเหมือนกันหรือเปล่าครับ เห็นในหนังสือบอกว่าให้ผลเหมือนกัน แล้วก็ static ใช้กับตัวแปร แล้วเรียกแบบ function::$var; อะครับ หรือมันเปลี่ยนไปแล้วหว่า
Date : 2009-05-16 10:57:52 By : PoseidonX
 


 

No. 29



โพสกระทู้ ( 480 )
บทความ ( 0 )



สถานะออฟไลน์


สักวันจะเขียนแบบ OOP ให้ได้ค่ะ

แต่ตอนนี้ขอเขียนแบบธรรมดาให้รอดก่อนดีกว่า แหะๆ
Date : 2009-05-16 11:15:52 By : Avrill
 


 

No. 30



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

อยากให้เขียน tutorail เรื่อง OOP ของ PHP5 ครับ จะได้มีคนเริ่มใช้จริงๆ เลยอิๆ
Date : 2009-05-16 12:56:09 By : num
 


 

No. 31



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตอบ rep No 30 นะคับ

ขอตอบเรื่อง "static ใช้กับตัวแปร แล้วเรียกแบบ function::$var;"
ตอบว่า ผิดคับต้องเป็นแบบนี้คับ "class::$var;" ^^'

ขอตอบเรื่อง "public function กับ public static function มันแสดงผลเหมือนกันหรือเปล่าครับ"
ตอบว่า ถ้าเรื่องการแสดงผลก็แสดงผลเหมือนกันคับ แต่ที่ต่างกันคือวิธีการเรียกใช้งาน
สำหรับผม ผมว่าควรจะเรียกใช้งานให้ต่างกัน (แม้ว่าจะเรียกเหมือนกันก็ได้ แต่ php error จะไม่เหมือนกัน) คือ

สำหรับ static function ควรเรียกแบบ
<?php

class test {
	public static function functionStatic(){
		
	}
}
test::functionStatic();

?>


สำหรับที่ไม่ใช่ static function ควรเรียกแบบ
<?php

class test {
	public function functionNonStatic(){
		
	}
}
$test = new test();
$test->functionNonStatic();

?>


php สามารถเรียกแบบ ตัวอย่าง 1 และ 2 นี้ได้โดยไม่ error ใดๆ (ย้ำนะคับว่า เฉพาะ php ภาษาอื่นผมไม่แน่ใจคับ)
แต่ผมว่า ควรเรียกให้ต่างกัน เพื่อกันความสับสนคับ
ตัวอย่าง 1
<?php

class test {
	public function functionNonStatic(){
		
	}
}
// แบบ initiate object ก่อน
$test = new test();
$test->functionNonStatic();

// แบบ static
test::functionNonStatic();

?>


ตัวอย่าง 2
<?php

class test {
	public static function functionNonStatic(){
		
	}
}
// แบบ initiate object ก่อน
$test = new test();
$test->functionNonStatic();

// แบบ static
test::functionNonStatic();

?>

Date : 2009-05-17 07:58:53 By : nut_t02
 


 

No. 32



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


factory class ที่ rep No. 28-29 ของคุณเอี่ยวคับ

จากตัวอย่างของคุณเอี่ยว พวกเราก็เริ่มมีแนวคิดที่คล้ายๆ กับ library ADOdb แล้วนะคับ
คือ concept ของ ADOdb สรุปออกมาง่ายๆ ว่า
ถ้าเราเปลี่ยน db ที่ใช้เช่นจาก MySQL ไปเป็น ORACLE เราต้องเปลี่ยน code แค่บรรทัดเดียวเท่านั้น
โดยที่ program ทั้งหมดที่เขียนมา 1000 กว่าไฟล์ (ยกตัวอย่างเพื่อให้เห็นภาพ) ต้องใช้งานได้ถูกต้องเหมือนเดิมทุกประการ


วิธีเรียกใช้งาน code ของคุณเอี่ยวคับ
<?php
$conn = DBConnectFactory::createConnection("MySQL", "localhost", "root", "mysql", "db_test1");
//หรือ
$conn = DBConnectFactory::createConnection("Oracle", "localhost", "root", "mysql", "db_test1");
?>

บางคนต้องลองเขียนก่อนลองใช้ ถึงจะเห็นภาพ
ส่วนบางคนต้องลองใช้ก่อนลองเขียน ถึงจะเห็นภาพ
ผมเลย แนบ link ของ ADOdb เป็นตัวอย่างที่ใช้ในชีวิตจริง ที่ใช้ factory class สำหรับให้พวกที่ 2 เห็นภาพนะคับ ^^
ส่วนพวกที่ 1 ดูตัวอย่างจาก code ของคุณเอี่ยวหรือ ของผม เป็นแนวทางไปก็ได้คับ

วิธีใช้งาน ADOdb สั้นๆ แบบภาษาไทยที่นี่
ส่วนตัว lib ADOdb download ได้ ที่นี่
ส่วน manual ตัวเต็มดูได้ ที่นี่
Date : 2009-05-17 08:36:46 By : nut_t02
 


 

No. 33



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

public เรียกได้หมด

private เรียกได้เฉพาะภายในคลาสตัวเอง

protected เรียกได้เฉพาะใน ครอบครัว ก็คือคลาสลูกนะคับ

ตัวแปร static คือ ค่านั้นมีอยู่ตลอดเวลา เช่น
Code (PHP)
<?php
class Test{
	protected static $abc = 0;
	
	public function __construct(){
		self::$abc++;
	}
	
	public function getABC(){
		return self::$abc;
	}
}

echo '<br><br>';
$t = new Test();
echo $t->getABC(), '<br><br>';

$t2 = new Test();
echo $t->getABC();

//echo TEST::$abc; //เรียกไม่ได้เพราะเป็น protected
?>

ส่วน static method คือเมธธอดที่สามารถเรียกโดยไม่ต้องมี reference แต่ในเมดธอดต้องไม่เรียก สิ่งที่ต้องใช้ reference '$this' เมธอด หรือ ตัวแปร แต่สามารถเรียก ใช้ static, constant ได้
( ปล. ผมชอบพิมพ์ void ไปเอง ชอบลืม $this, self, parent, function
หลักการที่บอกมานั้น มาจาก Java ทั้งหมด PHP ก็คงจะเหมือนกัน
)
Date : 2009-05-17 14:56:57 By : pjgunner
 


 

No. 34



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ลืมบอกไปตัวแปรแบบ static ก็คือใช้ร่วมกันได้หลาย instance นั่นเอง (จะมีก็อบปี้เดียว)
Date : 2009-05-17 15:06:32 By : pjgunner
 


 

No. 35



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


แจ๋มจริงๆ แต่ละคนเก่งๆ กันทั้งนั้น เห็น coding แต่ละคนแล้วผมก็แค่เด็กๆ คงต้องเขียน oop อย่างจริงๆ จังๆ กับเขาบ้างแล้ว
Date : 2009-05-17 16:08:38 By : plakrim
 


 

No. 36



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


คห.26 ขอบคุณสำหรับคำแน่ะนำครับ

ผมก็กำลังฝึกเขียน OOP ไปเรือยๆ

ปรกติแล้ว เวลาผมเขียน ผมจะเน้นดีไซน์ และจัดรูปแบบโปรแกรมให้สวยงามก่อนครับ 555+
Date : 2009-05-17 22:25:16 By : danya
 


 

No. 37



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


คห.27 สวัสดีครับพี่หนุ่ม 555+
Date : 2009-05-17 23:36:31 By : danya
 


 

No. 38



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ประโยชน์ที่หลายคน ลืมนึกถึงหรือ อ่านไปไม่ถึง เพราะยังไม่ค่อยเข้าใจ OOP ที่ผมเขียนก็คือ

สังเกตดู interface DBConnect จะมี abstract method ถึงแม้ว่าคลาสนี้ จะไม่เป็น interface ก็ตามยังไง
ก็ตามคลาสที่สืบทอดคุณสมบัติ หรือ implement ไปก็ต้องมีเม็ดธอดที่ประกาศในคลาสนี้ ดังนั้นเราจึงเชื่อแน่ว่า คลาส
ลูกหรือ คลาสที่ implement ไป จะต้องมีเมธอดที่มีอยู่ในคลาสแม่แน่นอน

สมมติว่าเรา สร้างชนิดการติดต่ออีกอัน โดย implement DBConnect ชื่อว่า MySQLiConnect จึงเชื่อได้แน่ว่า คลาสนั้นย่อมมี connect() และ endConnection() และมีการเข้าถึงที่เท่าเทียมหรือมากกว่า

สำหรับผู้ใช้ หรือผู้ที่ implement แล้วเป็นการง่ายในการใช้งาน สะดวกเหมาะสม แต่มันก็ต้องแลกกับเวลาในออกแบบพอสมควร ยังมีการออกแบบอีกหลายรูปแบบ ที่แตกต่างกัน ตามแต่ละส่วน(ถ้าออกแบบผิด ในบางส่วน ก็จะทำให้ยากในการแก้ไขเป็นอย่างมาก)
Date : 2009-05-18 08:07:58 By : pjgunner
 


 

No. 39



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


เอ่อ

ขอถามอีกอย่างครับ

ถ้าคำสั่งนี้

Code (PHP)
<?php
class a{
private $a;
function __construct () {
self::$a = 1;
}
}
?>


กับ

Code (PHP)
<?php
class a{
private $a;
self::$a = 1;
?>


มันต่างกันอย่างไรครับ
Date : 2009-05-18 21:55:25 By : PoseidonX
 


 

No. 40



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตอบคุณ PoseidonX นะคับ

code แรก error เพราะ $a ไม่ใช่ static property จึงอ้างแบบ static ไม่ได้
ส่วน code อันที่สอง syntax ผิดนะคับ

ใน class จะต้องประกอบด้วย
- property ในที่นี้คือ private $a นั่นเอง
- method หรือ function ในที่นี้คือ __construct() ก็ได้คับ

เพราะฉะนั้นผมเลยตอบไม่ได้ว่า มันต่างกันยังไง ^^

ปล ผมใช้ php 5.2.7 test นะคับ
Date : 2009-05-18 22:32:11 By : nut_t02
 


 

No. 41



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

เอา database class ที่เขียนไว้มาโพสครับ เดี๋ยวว่างๆ ผมจะมาโพสวิธีใช้ไว้ใน community ครับ :)

คลาส DragonHtmlDB
http://cakephp.jitwitya.com/post/DragonHtmlDB
Date : 2009-05-19 19:13:11 By : num
 


 

No. 42



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


คุณ nut_t02 ครับ

ขอโทษทีครับ เขียนโค้ดผิด

คืออยากถามแค่ว่า ใส่ตัวแปร $a ใน function __construct() กับ ไม่ใส่ใน __construct()

มันจะให้ผลต่างกันยังไงครับ เพราะว่าในหนังสือที่ผมอ่านเขาบอกว่า __construct() ก็คือกำหนดค่าก่อนเรียกใช้ฟังก์ชั่นต่างๆ เท่านั้นเอง
Date : 2009-05-19 19:59:10 By : PoseidonX
 


 

No. 43



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตอบคุณ PoseidonX คับ
ถูกต้องตามที่คุณอ่านมาแล้วคับ คือ ทุกอย่างที่อยู่ใน function __construct() จะถูกเรียกใช้งานโดยอัตโนมัติเมื่อ instance object คับ
(เมื่อ new Class(); เท่านั้น)

ส่วนที่บอกว่าไม่ใส่ไว้ใน __construct() นั่นหมายถึง ใส่ไว้ใน function อื่นคับไม่ใช่เขียนลอยๆ มาตามตัวอย่างที่คุณเขียนมาคับ
ซึ่งจะทำงานเมื่อ user มีการเรียกใช้งานเท่านั้นคับ

Date : 2009-05-19 22:53:18 By : nut_t02
 


 

No. 44



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ผมเข้าไปดู DragonHtmlDB ของคุณ num แล้วคับ
เขียนได้ดีจริงๆ ค่อนข้างครบทุกอย่างที่อยู่ในใจผมเลย
concept แนวนี้แหละคับที่ผมอยากจะเอามาเป็นตัวอย่างให้คนใช้กันเยอะๆ

แต่ว่าคุณ num น่าจะแยกออกจากกันไปเลยนะคับระหว่าง class db กับตัว pagination ที่ใช้ แสดงตาราง (บรรทัดที่ 670, 774)
บางทีคนอื่นเค้ามาอ่านแล้วอาจจะอยากเอาไปประยุกต์ใช้กับเรื่องอื่น แต่เจอ code ไปพันบรรทัดก็อึ้งเหมือนกัน แก้ไม่ถูก ^^'
ตัวอย่างการเรียกใช้งาน อาจดูยากไปนิดนึงนะคับ แหะๆ


ปล. ใครจะเอา code ของคุณ num ไปใช้กรุณาอ่านและทำตาม license ก่อนนะคับ
สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน
ถือว่าเป็นการให้เครดิตคนคิดค้นขึ้นมาคับ

ข้อดีของการดู code คนอื่นก็คือ
เราจะได้เทคนิคการเขียนโปรแกรมแบบใหม่ๆ ที่ตัวเองยังไม่รู้ ได้เห็นบางคำสั่งที่ไม่เคยเห็น
ตรงนี้แหละคับที่เราควรเอามาลองใช้ลองดู เพื่อให้เป็นประสบการณ์ของตัวเอง

เด๋วไปลองเขียน code มาแลกกันดูมั่งดีกว่าเผื่อของผมตกหล่นจะได้มีผู้ช่วยชี้แนะคับ

Date : 2009-05-19 23:37:15 By : nut_t02
 


 

No. 45



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ผมเข้าไปดู DragonHtmlDB ของคุณ num แล้วคับ
เขียนได้ดีจริงๆ ค่อนข้างครบทุกอย่างที่อยู่ในใจผมเลย
concept แนวนี้แหละคับที่ผมอยากจะเอามาเป็นตัวอย่างให้คนใช้กันเยอะๆ

แต่ว่าคุณ num น่าจะแยกออกจากกันไปเลยนะคับระหว่าง class db กับตัว pagination ที่ใช้ แสดงตาราง (บรรทัดที่ 670, 774)
บางทีคนอื่นเค้ามาอ่านแล้วอาจจะอยากเอาไปประยุกต์ใช้กับเรื่องอื่น แต่เจอ code ไปพันบรรทัดก็อึ้งเหมือนกัน แก้ไม่ถูก ^^'
ตัวอย่างการเรียกใช้งาน อาจดูยากไปนิดนึงนะคับ แหะๆ


ปล. ใครจะเอา code ของคุณ num ไปใช้กรุณาอ่านและทำตาม license ก่อนนะคับ
สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน
ถือว่าเป็นการให้เครดิตคนคิดค้นขึ้นมาคับ

ข้อดีของการดู code คนอื่นก็คือ
เราจะได้เทคนิคการเขียนโปรแกรมแบบใหม่ๆ ที่ตัวเองยังไม่รู้ ได้เห็นบางคำสั่งที่ไม่เคยเห็น
ตรงนี้แหละคับที่เราควรเอามาลองใช้ลองดู เพื่อให้เป็นประสบการณ์ของตัวเอง

เด๋วไปลองเขียน code มาแลกกันดูมั่งดีกว่าเผื่อของผมตกหล่นจะได้มีผู้ช่วยชี้แนะคับ

ขอบคุณครับ โค้ดตัวนี้ผมใช้เวลาเขียนนานจริงๆ ครับแหะๆ
ในการเขียนคลาสนี้ผมได้แนวคิดหลายๆ อย่างมาจาก cakephp กับ codeigniter ครับ

สำหรับส่วน pagination ที่คิดไว้มีสองแบบคือประกาศ object pagination แบบอัตโนมัติไปเลยไปเลยตัวเดียว
กับแบบที่เขียนครับ ผมเลือกแบบที่สองดูแล้วเท่ห์ดีครับ แหะๆ
ส่วนอีกแบบนึงที่ให้ผู้ใช้ class ประกาศ object เอง ผมไม่เลือกเพราะกลัวจะทำให้ใช้งาน class ยากไปอะครับ

ตัวอย่างการใช้งานพยายามใส่ไปหลายๆ อย่างในไฟล์เดียวเลยอ่านยากหน่อยครับ
เอาไว้เดี๋ยวจะหาเวลาไปปรับปรุงตัวอย่างการใช้งานครับ

ผมขออธิบายเพิ่มเติมเกี่ยวข้อกำหนดของตรง "ไม่ใช้เพื่อการค้า" ครับ เพื่อจะได้ใช้คลาสได้อย่างสบายใจครับ
class นี้สามารถนำไปใช้ในงานเขียนเว็บไซท์เพื่อการค้าได้ตามปกติครับ
เพียงแต่ว่าจะไม่อนุญาติให้นำโค้ดโดยตรงนี้ไปขายหรือดัดแปลงเพื่อขายครับ
Date : 2009-05-20 00:51:04 By : num
 


 

No. 46



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตั้งใจไว้ แต่พอรีบทีไรกลับมาเขียนแบบเดิมทุกทีครับ แบบว่า ชินอ่ะ
Date : 2009-05-20 14:30:41 By : navico
 


 

No. 47



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ไม่ทราบว่าคุณ num ใช้ editor หรือ ide ตัวไหนพัฒนาคับ

แล้วไม่ทราบว่า ใช้หลักการใดในการ ป้องกัน sql injection ครับ จะเอาไปใช้มั่ง ไม่รู้โดนมั่งรึป่าว

ขอบคุณคับ
Date : 2009-05-21 13:30:34 By : pjgunner
 


 

No. 48



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ไม่ทราบว่าคุณ num ใช้ editor หรือ ide ตัวไหนพัฒนาคับ

แล้วไม่ทราบว่า ใช้หลักการใดในการ ป้องกัน sql injection ครับ จะเอาไปใช้มั่ง ไม่รู้โดนมั่งรึป่าว

ขอบคุณคับ

ปกติผมจะใช้ devphp ซะส่วนใหญ่ครับเป็น text editor ตัวเล็กๆ ถูกชะตากับผมตรงที่มันฟรีแล้วก็ใช้งานง่ายครับ
แต่เวลาเขียน comment ที่เป็น phpdocumentor tag
ผมใช้ zend for eclipse <-- ตัวนี้ใกล้หมดอายุแล้วแหะๆ
อีกสักพักผมจะกลับไปใช้ pdt ซึ่งเป็น eclipse อีกตัวครับ

สำหรับเรื่องวิธีป้องกัน sql injection

ปกติเราจะเขียนกัน

mysql_query( "SELECT * FROM test WHERE id=" . $_GET['id'] )
ซึ่งจะกันได้โดยใช้คำสั่ง
mysql_query( "SELECT * FROM test WHERE id='" . mysql_real_escape_string($_GET['id']) . "'" )
ต้องใช้ เครื่องหมาย ' ' ด้วยครับไม่งั้นถ้าผู้ใช้สามรถส่งข้อมูลมาเป็นคำสั่ง query อย่างเช่น '0 OR id=99'

ปัญหาจะเกิดก็ตอนมีตัวแปรที่จะส่งให้กับ query หลายๆ ตัวครับ ซึ่งจะเขียนได้ลำบากและโค้ดอ่านยากมากเลยครับ
$result = mysql_query(
"SELECT * FROM test WHERE id='" . mysql_real_escape_string($_GET['id']) . "' OR id='" . mysql_real_escape_string($_GET['id2']) . "'"
)


ผมเลยใช้วิธีที่เห็นใน codeigniter คล้ายๆ กับที่ในหลายๆ ภาษาจะมีคำสั่ง prepare statement ช่วยป้องกัน sql injection
แต่ผมใช้วิธีส่งเป็น array ไปเลยซึ่งจะเขียนได้สั้นกว่า
$result = $db->query('SELECT * FROM test id=? OR id=? ' ,array($_GET['id'],$_GET['id2']));
โดยข้างในคำสั่ง query() จะช่วยแทนที่เครื่องหมาย ? ด้วยค่า $_GET['id'] และ $_GET['id2'] และใส่เครื่องหมาย ' ' ให้ด้วยคัรบ
Date : 2009-05-21 14:13:05 By : num
 


 

No. 49



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอบคุณมากคับ prepare statement ดีๆ นี่เอง

รู้วิธีใช้ sql injection แล้ว
Date : 2009-05-21 14:35:58 By : pjgunner
 


 

No. 50



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ผมเองก็ไม่เคยใช้พวก mysql_real_escape_string(); มาก่อน หรือเมื่อก่อนเคยใช้ addslashes();

ตอนนี้ไม่ใช้แล้ว

ผมลอง ใช้ sql injection กับ เว็บตัวเอง แต่ก็ล็อคอินไม่ได้เหมือนว่ามันได้ escape string ไว้แล้ว

เอา sql เดียวกันนี้ ไปยิงที่ phpmyadmin กลับ แสดงเรคคอร์ดออกมา

ยัง งง อยู่เหมือนกัน สรุปว่าจำเป็นต้อง escape หรือ escape ให้อัติโนมัติกันแน่คับ


Date : 2009-05-21 15:13:31 By : pjgunner
 


 

No. 51

Guest


แล้ว ไม่ต้องใช้ mysql_real_escape_string(); ได้มั้ยคับ ในกรณีที่ get_magic_quotes_gpc() คืนค่า 1


โดยปกติควรจะ set magic_quote_gpc off ครับ เพื่อไม่ให้เกิดความสับสน
ยกเว้นกรณีที่ต้องการสร้างเว็บไซท์ที่ปลอดภัยแต่ยังไม่อยากไปยุ่ง
เขียนคำสั่งมากๆ ให้ set ไปเป็น on ครับ ก็จะทำให้สร้างเว็บไซท์ได้สบายขึ้นเยอะทีเดียวครับ

แต่จากความสะดวกสบายก็ตามมาด้วยเรื่องยุ่งยากครับ
ปัญหาของ magic_quote_gpc off จะทำให้ส่วนของข้อมูลเพราะมันจะเพี้ยนไปจากเดิมครับ อย่างเช่น
ส่ง c:\test.txt มา แต่เราจะได้รับ c:\\test.txt เมื่อเราตรวจสอบข้อมูล string ความยาวกี่ตัวอักษร
เราจะได้ยาวเกินมาตัวนึงครับ ซึ่งจริงๆ และเวลาเราจะทดสอบว่า มันมีค่า เท่ากับ c:\test.txt หรือไม่เราจะต้องเขียน
if (stripslashes($_POST['data']) == "c:\\test.txt"){
}

หรือ
if ($_POST['data'] == addslashes("c:\\test.txt")){
}

ซึ่งจุดนี้เป็นอีกจุดที่ทำให้การตั้งให้ magic_quote_gpc on เป็นเรื่องที่น่ารำคาญพอสมควรทีเดียวครับ

และแม้ว่าเรา magic_quotes_gpc() เป็น on แล้วก็ตาม แต่ก็ยังสามารถเกิดปัญหาได้ครับ
แต่หากกรณีเราเกิดเผลอไปแก้ไข string อย่างเช่นเผลอไปเปลี่ยน \ ไปเป็น /
$_POST['path'] = str_replace('\','/',$_POST['path']); ก็จะทำให้เกิดจุดที่ผู้ใช้สามารถส่ง query เข้ามาได้
หรืออีกกรณีนึงที่อาจจะเป็น sql injection ได้ เช่นเมื่อเราใช้ข้อมูลจากจุดอื่นที่ไม่ใช่ $_POST,$_GET,$_COOKIE
ส่งให้กับ query ของเรา อย่างเช่นโหลดข้อมูลจาก text file ขึ้นมาใช้งานครับ
magic_quote_gpc ไม่สามารถกันข้อมูลจาก text file ได้ครับ
ซึ่งในส่วนนี้จะต้องกำหนดให้เป็น magic_quotes_runtime เป็น on ถึงจะป้องกัน sql injection ได้ครับ

จะเห็นได้ว่า magic_quote_gpc on จะปลอดภัยในระดับ 90% ยกเว้นกรณีพิเศษแปลกๆ อีก 10%
แต่ก็แถมมาด้วยการได้ข้อมูลเพี้ยนๆ มาใช้ในการตรวจสอบก่อนจะนำไปใส่ในตาราง และพอดึงข้อมูลจากตาราง
มาอีกทีจะเป็นข้อมูลปกติไม่มีการ addslashes ให้
แต่ถ้า magic_quotes_runtime เป็น on อีกก็จะเป็นข้อมูลที่ addslashes เรียบร้อยอีกแน่ะ -*-
ซึ่ง setting เกี่ยวกับ magic_quotes_gpc ทั้งหมดนี้
ทำให้โปรแกรมเมอร์ที่เขียน php เขียนโปรแกรมหลายหลายไสตล์ไม่เป็นอันหนึ่งอันเดียวกัน
ทำให้การเขียนโปรแกรมที่เหมือนกันเปี๊ยบ กลับเขียนได้ถึง 4 รูปแบบด้วยกัน (หรือมากกว่านั้น!) คือ
gpc on, rumtime on
gpc off, rumtime on
gpc on, rumtime off
gpc off, rumtime off
ไม่เพียงแต่ทำให้โปรแกรมเมอร์ที่เขียนโปรแกรมด้วยกันแต่ตั้งไว้ต่างกันเขียนโปรแกรมร่วมกันได้อย่างยากลำบากแล้ว
หากโปรแกรมสองโปรแกรมต้องการ setting ที่ต่างกันแล้ว
การนำโปรแกรมทั้งสองมาใช้ร่วมกันจะทำให้เกิดปัญหาทั้งด้านความปลอดภัย
หรือทางด้าน performance อย่างใดอย่างหนึ่ง หรือไม่ก็ทั้งสองอย่าง T-T

หลังจากที่ผ่านการอนุญาติให้ใช้ magic_quotes_gpc มาเป็นเวลานาน เจอคนด่าและเหน็บแนมมามากพอสมควรแล้ว
มาถึงตอนนี้ php team ได้ทำการแนะนำไว้แล้วดังนี้ครับ
Magic Quotes is a process that automagically escapes incoming data to the PHP script. It's preferred to code with magic quotes off and to instead escape the data at runtime, as needed.

This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.

http://th2.php.net/magic_quotes


ดังนั้นเพื่อที่จะเขียนโปรแกรมได้อย่างเป็นธรรมชาติและได้มาตรฐานเดียวกันหมด จะต้องเป็น off ให้หมดครับ แล้วจัดการ addslashes ทีเดียวในช่วงสร้างสตริง sql ครับ..
Date : 2009-05-21 16:02:53 By : num
 


 

No. 52



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ลืมบอกไปการจะใช้ class ของผมได้จะต้องตั้ง magic_quotes_gpc เป็น off ครับ
Date : 2009-05-21 16:07:46 By : num
 


 

No. 53



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ผมเองก็ไม่เคยใช้พวก mysql_real_escape_string(); มาก่อน หรือเมื่อก่อนเคยใช้ addslashes();

ตอนนี้ไม่ใช้แล้ว

ผมลอง ใช้ sql injection กับ เว็บตัวเอง แต่ก็ล็อคอินไม่ได้เหมือนว่ามันได้ escape string ไว้แล้ว

เอา sql เดียวกันนี้ ไปยิงที่ phpmyadmin กลับ แสดงเรคคอร์ดออกมา

ยัง งง อยู่เหมือนกัน สรุปว่าจำเป็นต้อง escape หรือ escape ให้อัติโนมัติกันแน่คับ

สงสัยเพราะว่าผู้ให้บริการ hosting ต้องการตัดปัญหาเว็บของผู้ใช้บริการถูกโจมตีน่ะครับ
ส่วนใหญ่ก็เลยตั้งค่า default ของ magic_quotes_gpc เป็น on
ตะกี้ผมลองไปเช็ค phpinfo(); ที่เวบผม admin เค้าก็ตั้งไว้ on ครับ
Date : 2009-05-21 16:14:58 By : num
 


 

No. 54



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter


ขอบคุณ คุณ num มากคับ ทำให้เข้าใจ String ใน PHP เยอะมากขึ้นจริงๆ แต่ผมเองก็ยังงง อยู่บ้าง

ต้องช่วยตัวเองบ้างแล้ว

สำหรับเพื่อนๆ ที่อยากจะใช้ PHP 6 ก็คงจะต้องเตรียมตัวกัน

ผมเองก็คงจะต้อง ปรับเป็น off บ้างแล้วเหมือนกัน(เพื่อ อนาคต )
Date : 2009-05-21 16:39:07 By : pjgunner
 


 

No. 55



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

ขอบคุณ คุณ num มากคับ ทำให้เข้าใจ String ใน PHP เยอะมากขึ้นจริงๆ แต่ผมเองก็ยังงง อยู่บ้าง

ต้องช่วยตัวเองบ้างแล้ว

สำหรับเพื่อนๆ ที่อยากจะใช้ PHP 6 ก็คงจะต้องเตรียมตัวกัน

ผมเองก็คงจะต้อง ปรับเป็น off บ้างแล้วเหมือนกัน(เพื่อ อนาคต )

PHP6 น่าจะเจ๋งนะครับ ขนาด PHP5 ยังมีคำสั่งใหม่ๆ เยอะแยะจนใช้ไม่หมดเลยครับ

ข้างบนผมพิมพ์ผิดครับ
ปัญหาของ magic_quote_gpc off จะทำให้ส่วนของข้อมูลเพราะมันจะเพี้ยนไปจากเดิมครับ อย่างเช่น
->
ปัญหาของ magic_quote_gpc on จะทำให้ส่วนของข้อมูลเพี้ยนไปจากเดิมครับ อย่างเช่น
Date : 2009-05-21 17:10:47 By : num
 


 

No. 56



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอโทษเพื่อนๆ ที่นอกเรื่องไปหน่อย เรามาเข้าเรื่อง OOP กันต่อดีกว่าคับ(เดี๋ยวจะโดนแช่ง)

ว่าด้วยเรื่อง abstract class และ interface

abstract class และ interface โดยหลักแล้วถูกออกแบบมาเพื่อให้ เป็นโครงร่างของคลาสต่างๆที่สืบทอดคุณสมบัติคับ โดยตัวมันเองแล้ว ไม่สามารถที่จะสร้าง instance ได้

เมธอดใน interface นั้น จะเป็น abstract method โดยอัตโนมัติ(ไม่จำเป็นต้องใส่โมดิฟายเออ abstract)

ส่วน เมธอดใน abstract class นั้น ถ้าอยากให้เป็น abstract method จำเป็นต้องใส่โมดิฟายเออ abstract ด้วย
โดยที่ abstract class สามารถมีได้ทั้ง เมธอดธรรมดา และ abstract method

ใน abstract class

คำว่า abstract method นั่นก็คือ จะต้องมีคลาสในครอบครัว(ลูกหลาน) implement ให้ครบก่อน จึงจะกลายเป็นคลาสธรรมดา(สร้าง instance ได้) ถ้า implement ไม่ครบ ก็จะยังเป็น abstract class อยู่

ใน interface
ถ้า implement ไม่ครบ ก็จะต้อง ใส่โมดิฟายเออ interface ด้วย

ความจริงแล้วอีกเหตุผลที่ เขาสร้าง interface ขึ้นมาก็คือ ลดความสับสนในการพัฒนา เรื่อง multiple inheritance นั่นเอง

ยังคิดตัวอย่างที่ใช้อยู่ทั่วไปไม่ออก แปะไว้ก่อน ละกัน
Date : 2009-05-21 18:36:22 By : pjgunner
 


 

No. 57



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


พี่หนุ่ม โชว์เทพแล้วเว้ยยย อิอิ

พี่หนุ่ม ของเขาดีจริงนะ 5555+
Date : 2009-05-22 15:22:00 By : danya
 


 

No. 58



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

เรื่อง magic_quotes_gpc เป็นเรื่องที่ทำให้ต้องแก้โปรแกรมมาหลายทีแล้วอะ เลยรู้ซึ้งเลยว่ามันทำให้เกิดปัญหาตามมามากมาย
Date : 2009-05-22 15:51:34 By : num
 


 

No. 59



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอโทษนะคับ เพราะช่วงนี้ผมไม่ว่างเท่าไหร่(ก็ติดเกมอยู่คับ เพิ่งเล่นดู สนุกดี http://urd.astonia.com/)

คือเรื่องตัวอย่างน่ะคับ ผมเองก็มีความคิดได้แล้วว่าจะเอาเรื่องอะไรดี ที่สามารถนำประยุกต์ใช้ได้แต่ยังไม่มีเวลาเขียนเพราะ ประโยคข้างบน

แต่เรื่องที่คิดนั้น ก็จะเอามาบอกให้คนที่สนใจและติดตามกระทู้นี้อยู่ นำไปคิดและพัฒนามามาแสดงให้เพื่อนๆดูก็ได้ จะได้แชร์กันถึงความหมาย ซึ่งแต่ละคนอาจคิดหรือวางแผนไม่เหมือนกัน แตกต่างกัน จะได้นำมาหา QED ร่วมกัน


สมมติว่า เราจะสร้าง เกมออนไลน์ประเภทเกมภาษา เกมหนึ่ง(เช่น Final fantasy, Dragon Wariror) ซึ่งมีรายละเอียดคร่าวๆ คือ เกมนี้เป็นเกมภาษา เป็นเกมเนื้อเรื่อง มีฮีโร่(ตัวเอก กับพักพวกที่เราใช้ได้ อาจหลายตัว) มีมอนสเตอร์หลากหลายชนิดหลายระดับหรือ อาจมีหลายธาตุ อาจมีสกิล เวทมนต์ ต่างๆ ก็ได้

แน่นอนว่า ที่ผมบอกไปในพารากราฟข้างบน หมายถึงเป้าหมายหลักของเรา แต่สมติว่าเรายังไม่ต้องคิดถึงเรื่องเนื้อเรื่องหรืออะไรอย่างอื่น สิ่งที่เราสนใจก็ตอนนี้ก็คือ การออก class ต่างๆให้ใช้ร่วมกันได้อย่างมีประสิทธิภาพมากที่สุด โดยใช้ OOP ซึ่งแน่นอนว่า OOP ในสถานการ์ณนี้ ย่อมเป็นประโยชน์อย่างยิ่ง(reusable, extensible) แน่นอนว่าเกี่ยวกับเรื่อง ตัวละคร ฮีโร่ มอนส์เตอร์ ต่างๆนั่นเอง โดยยังไม่ต้องไปรวมถึงการไป ดึง/บันทึก ข้อมูลจากฐานข้อมูล

ปล. นะครับ : เรื่องนี้ไม่จำกัดความคิด ไม่มีผิดถูก แต่มีเรื่องของประสิทธิภาพในการ reusable และ extensible โดยให้โปรแกรมไม่ต้องจำเป็นต้องไปแก้โค้ดเดิมในภายหลัง คืออยากให้ใช้ OOP ให้มีประสิทธิภาพกัน และเพื่อเป็นการหาทางออกร่วมกัน เราสามารถที่จะปรึกษาหาทางกันได้ โดยเอาโค้ดมาแปะกัน(ขอให้ 1 rep ต่อ ทุกคลาส เพื่อไม่ให้งง แต่แก้เอามาใหม่ หรือแลกเปลี่ยนกันได้ถ้ามีการแลกเปลี่ยนกัน มีคอมเมนต์ พอเข้าใจ)


Date : 2009-05-24 22:05:58 By : pjgunner
 


 

No. 60



โพสกระทู้ ( 519 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


มีเบื้องต้นประมาณนี้หรือเปล่าคับ เพื่อนๆ ช่วยดูให้ผมด้วย
ขาดไรตรงไหนมาช่วยกันนะคับ
เรียนรู้ไปพร้อมๆ กันคับ มี tutor นี่แล้วคับ
Code (PHP)
<?php
class ตัวละคร {
    protected เลือด;
    protected พลังเวท;
    protected basic_skill;
    protected level;
    protected exp;
    protected ธาตุ;
}
class hero extends ตัวละคร {
    protected ชื่อ;
    protected more_skill;
}
class monster extends ตัวละคร {
    protected ชื่อ;
    protected more_skill;
}
?>

มีคงมีอีกอ่ะแหละคับ
แต่ผมอยากให้คนอื่นช่วยๆ กันคิดคับ
Date : 2009-05-26 07:52:45 By : nut_t02
 


 

No. 61



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

จากตัวอย่าง ของคุณ nut_t02 ผมคิว่าน่าจะใส่ operation ด้วยนะครับ

จาก rep.63 ผมก็ลองเอาไปสร้างได้ดังนี้

Code (PHP)
<?php
abstract class Character{//เป็น abstract เพื่อไม่ให้สร้าง instance
	protected $name;
	protected $picture;
	protected $alive = true;
	
	public final function getName(){ return $this->name; }
	
	public final function setName($name){ $this->name = $name; }
	
	public final function getStatus(){ return $this->alive; }
	
	public final function setPicture($picture){ $this->picture = $picture; }
	
	public final function getPicture(){ return $this->picture; }
}//Character

//ใช้เก็บสถานะ Character
abstract class CharacterStatus extends Character{
	protected $character_exp;//ถ้าเป็น ฮีโร่ ก็เป็นฮีโร่ exp ถ้าเป็น มอนสเตอร์คือ exp ที่ได้รับเมื่อถูกกำจัด
	protected $max_hp;
	protected $max_mp;
	protected $hp;
	protected $mp;

}//CharacterStatus
	
//สามารถโจมตีได้
abstract class Attackable extends CharacterStatus{
	protected $offence;
	protected $defence;
	protected $offence_element;
	protected $defence_element;

	public function attack(Attackable $dest){//overidable
		if($dest instanceof Monster){
			$hp_reduce = $this->calculate($this, $dest);
			$dest->hp_reduce($hp_reduce);
		}
	}
	
	public final function hp_reduce(Attackable $attacker, $amount =0){//เลือดลด เป็นพับบลิคเพราะ อาจติดพิษได้(จากข้างนอกคลาส)
		if( $this->hp > $amount )
			$this->hp -= $amount;
		else
			$this->death($attacker);
	}
	
	public final function hp_add($amount =0){//เลือดเพิ่ม
		$this->hp += $amount;
		if( $this->hp > $this->max_hp )
			$this->hp = $this->max_hp;
		$this->awake();
	}
	
	protected function death(Attackable $attacker){//ตาย
		$this->alive = false;
		$this->hp = 0;
		setPicture("{$name}_death.png");
	}
	
	protected final function awake(){//ฟื้น
		if( $this->hp > 0 )
			$this->alive = true;
		setPicture("{$name}.png");
	}
	
	//เป็น abstract เพราะ อาจมีสูตรการคำนวนต่างกันสำหรับ ฮีโร่ และ มอนสเตอร์
	public abstract function calculate(Attackable $attacker, Attackable $dest);
	public abstract function addExp($exp);
}//Attackable

class Hero extends CharacterStatus implements EquipableCharacter{
	protected $hero_class;
	
	public function __construct($name, HeroClass $class, $max_hp, $max_mp, $exp, $picture){
		$this->setName($name);
		$this->setclass($class);
		$this->max_hp = $max_hp; $this->max_mp = $max_mp;
		$this->character_exp = $exp;
		$this->picture = $picture;
		
		$this->hp = $this->max_hp; $this->mp = $this->max_mp;
	}
	
	//ตั้งอาชีพ มีผลต่อสกิล(แต่ยังไม่เขียน)
	private function setClass(HeroClass $class){ $this->hero_class = $class; }
	
	public function getClassName(){ return $hero_class->getName(); }
	
	//@implement Attactable->calculate()
	public function calculate(Attackable $attacker, Attackable $dest){
		//อาจใช้สูตรอื่น และคำนวณ element ด้วย
		return $attacker->offence - $dest->defence;
	}
	
	//@implement Attackable->addExp()
	public function addExp($exp){
		$this->character_exp += $exp;
		//คำนวน level
	}
	
	//@implement Equipable->setEquipment()
	public function setEquipment(Equipment $item, $insert = true){
		if( $item instanceof Weapon )
			$this->weapon = $insert ? $item : 'None';
		else
			$this->body = $insert ? $item : 'None';
	}
	
	//@implement Equipable->getWeapon()
	public function getWeapon(){ return $this->weapon; }
	
	//@implement Equipable->getBody()
	public function getBody(){ return $this->body; }
}// Hero

class Monster extends CharacterStatus{	
	
	public function __construct($name, $max_hp, $max_mp, $exp, $picture){
		$this->setName($name);
		$this->setclass($class);
		$this->max_hp = $max_hp; $this->max_mp = $max_mp;
		$this->character_exp = $exp;
		$this->picture = $picture;
	}
	
	//@overide Attackable->death()
	protected function death(Attackable $attacker){
		parent::death($attacker);
		$attacker.addExp($this->character_exp);
	}
	
	//@implement Attackable->addExp
	public function addExp(){}
	
}

/* Interface ต่างๆ */

interface EquipableCharacter{//ให้ Hero implement
	public function setEquipment(Equipment $eq, $insert=true);
	public function getWeapon();
	public function getBody();
}

interface Item{}//ยังไม่เขียนข้างใน interface คือยังไม่เสร็จเอาไว้ให้ item อื่นๆ implement
interface Equipment{}//เพื่อเป็น reference ได้
class Weapon implements Item, Equipment{
	public $name;
	public $attack_value;
	public $element;
	
	public function __construct($name, $attack_value, Element $element){
		$this->name = $name; $this->attack_value = $attack_value; $this->element = $element;
	}
	
	public function getName(){ return $this->name; }
	public function getAttackValue(){ return $this->attack_value; }
	public function getElement(){ return $this->element; }
	
	public function __toString(){
		return "Weapon name : {$this->name}\n Attack : {$this->attack_value}\n Element : {$this->element}";
	}
}

class Body implements Item, Equipment{}//ยังไม่เขียน อาจคล้าย Weapon

abstract class HeroClass{
	public $name;
	public $skills = array();
	public function getClassName(){ return $this->name; }
	public function getSkills(){ return $this->skills; }
}

//ตัวอย่าง อาชีพ อีโร่ Novice
class Novice extends HeroClass{//มีได้แค่ instance เดียว (Sigleton)
	private static $instance;
	
	private function __construct(){//ไม่ให้สร้าง instance ด้วยตัวเอง
		$skills[] = 'defend';
	}
	
	public function defend(){}
	
	public static function singleton(){
		if( !isset($instance) )
			$this->instance = new Novice();
		return $this->instance;
	}
	
	private function __clone(){}
}


class CharacterFactory{
	public static function createHero($name = '', HeroClass $class, $max_hp =100, $max_mp =10, $exp =0, $picture ='default_hero.png'){
		return new Hero($name, $class, $max_hp, $max_mp, $exp, $picture);
	}
	
	public static function createMonster($name, $max_hp, $max_mp, $exp, $picture='slime.png'){
		return new Monster($name, $max_hp, $max_mp, $exp, $picture);
	}
}
?>


ปล. ผมเองก็มึนอยู่ ผมก้ไม่ได้ช่ำชองเท่าไหร่ ไม่รู้ว่า อันไหนควรจะทำแบบไหนเท่าไหร่ อาจขาดๆ เกินๆ
ขอไปกินข้าวก่อนนะครับ โค้ดข้างบนต้องต้องสร้าง instance ของ HeroClass ไว้ใช้ก่อนนะครับโดยใช้ singleton() ส่วนการบันทึก ก็คงใช้ใช้ serialization ช่วยครับ
Date : 2009-05-28 11:08:42 By : pjgunner
 


 

No. 62



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ติดนิสัย ภาษา static มามาก ความจริงใช้ dynamic attribute เอาก็ได้
ยังใช้จริงๆ ไม่ได้หรอกนะครับ ยังไม่ครบ และยังไม่ได้ รีแฟคเตอร์

http://gunner.freetzi.com
http://twitter.com/pjgunner
Date : 2009-05-28 11:39:06 By : pjgunner
 


 

No. 63



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอแก้หน่อยนะครับ

เมธอด Attackable->attack() ยังเขียนไม่เสร็จครับ ผมลืม ตอนเขียนนึกอะไรขึ้นได้ก็ย้ายไปเขียนที่อื่น ความจริงมันน่าจะมีเรื่อง skill เข้ามาเกี่ยวอีกนะครับ

และ

class CharacterFactory ที่จริงควรเป็น abstract class CharacterFactory นะครับ
Date : 2009-05-28 18:00:25 By : pjgunner
 


 

No. 64

Guest


เพิ่มคลาส

Code (PHP)
<?php
interface NPC{
	public function isSeller(){}
	public function isQuest(){}
}

class NPCSeller extends Character implements NPC{
	private $items;
	
	public function __construct($items){
		$this->items = $items;
	}
	
	//@implement NPC->isSeller()
	public function isSeller(){ return true; }
	
	//@implement NPC->isQuest()
	public function isQuest(){ return false; }
}

class NPCQuest extends Character implements NPC{
	private $quests;
	
	public function __construct($quests){
		$this->quests = $quests;
	}
	
	//@implement NPC->isSeller()
	public function isSeller(){ return false; }
	
	//@implement NPC->isQuest()
	public function isQuest(){ return true; }
}
?>

สังเกตจากโค้ดที่แนบมา ผมคิดว่าผมคงจะออกแบบผิด ใช้ไม่ถูกหลักการซะแล้วหละครับ สังเกต เมธอดข้างบน ไม่ได้ใช้ประโยชน์ของ Polymorphism ความจริง Character ควรเป็น interface มากกว่าหละมั้ง(สับสนตัวเอง ) ยังไงคงจะต้องออกแบบใหม่ คราวนี้ ร่างโครง กะสะโคป ไว้ก่อนดีกว่า ไม่งั้นเหมือนเดิมอีก

ปล. กระทู้เงียบเลยครับ ยังไงก็คุยกันเรื่อง ที่เกี่ยวข้องกันต่อเถอะครับ ไม่ต้องสนใจผม ไม่ได้ตั้งใจให้กระทู้เงียบเลย เดี๋ยวมันจะจบแค่นี้เสียเปล่าๆ

ปลอ. ผมคงไม่ได้กลับมาอีกประมาณ 1 เดือน อยากให้เพื่อนๆ คุยถกกันต่อครับ

Date : 2009-05-29 22:09:43 By : pjgunner
 


 

No. 65



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ กำลังศึกษาพอดี
Date : 2009-06-02 17:00:19 By : HS4OSX
 


 

No. 66



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณค่ะที่บอกกล่าวกัน
Date : 2009-06-09 01:28:02 By : tan311
 


 

No. 67



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ตรง rep.65 (ความจริงใช้ dynamic attribute เอาก็ได้) ความจริงเราไม่ควรใช้นะครับ เพราะ จะเสียประโยชน์ของ Infomation Hiding ซึ่งถ้าเป็น dynamic property แล้ว(เปลี่ยน attribute เป็น property นะครับ )
มันจะกลายเป็น public หมด ตัวอย่าง

Code (PHP)
<?php
class Test{}

$t = new Test();
$t->abc = 'xxx';
echo $t->abc;
?>


ส่วนตอนนี้ ผมกำลัง ลองทำโจทย์ของผมใหม่โดยให้สโคปไม่เกิน ให้ฮีโร่และมอนสเตอร์โจมตีกันได้ มี สถานะต่างๆ
ใช้ item และ สกิล ได้ ไอเทมบางอย่างรวมกันได้(คือมีหลายอันใน instance เดียว) ซึ่งผมใช้วิธีเขียนแบบ จากล่างไปสู่ บน ซึ่งตอนนี้ถึงขั้นตอนการเขียนเกี่ยวกับ potion ต่างๆ ผมติดอยู่ว่า ถ้าเป็น hp potion ขนาดต่างกัน ควรเขียน แบบแยก หรือว่า เขียนคลาสเดียวดี

โค้ดทั้งหมดที่เพิ่งเขียนได้

clases/Picture.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

interface Picture(){
	
	public function getPicture();
	public function setPicture();
}
?>


classes/Item.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

abstract class Item implements Picture {
	protected $name, $legend, $picture;

	public function getName() {
		return $this->name;
	}
	
	protected function setName() {
		$this->name = $name;
	}

	public function getLegend() {
		return $this->legend;
	}
	
	public function setLegend($legend) {
		$this->legend = $legend;
	}

	//@implement Picture::setPicture()
	public function setPicture($picture) {
		$this->picture = $picture;
	}

	abstract public function getType();
}
?>


classes/Equipment.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

interface Equipment {

	public function getStatus();
	
	//for enchance item for future feature
	protected function setStatus();
}
?>


classes/Body.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

class Body extends Item implements Equipment {
	const PICTURE_DIR = 'items/bodies/';
	protected $status;

	public function __construct($name, EquipmentStatus &$status, $legend ='', $picture= 'default.png') {
		$this->setName($name);
		$this->setStatus($status);
		$this->setLegend($legend);
		$this->setPicture($picture);
	}

	public function getStatus() {
	       return $this->status;
	}

	//@Implements Item::getType()
	public function getType() {
		return 'Body';
	}

	//@Overide Item::getPicture()
	public function getPicture(){
		return Body::PICTURE_DIR.$this->picture;
	}

	protected function setStatus(EquipmentStatus &$status) {
		$this->status =& $status;
	}

	public function __toString() {
		$first = $this->getType().' : '.$this->getName().'\n';
		$statuses = $this->getStatus();
		foreach($statuses as $attr=> $value)
			$status .= $attr.' : '.$value.'\n';
		$last = 'Legend : '.($this->getLegend() ? $this->getLegend() : 'None').'\n';
		return ( $first.$statuses.$last );
	}
}
?>


classes/Weapon.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

class Weapon extends Item implements Equipment {
	const PICTURE_DIR = 'items/weapons/';
	protected $status;

	public function __construct($name, EquipmentStatus &$status, $legend ='', $picture= 'default.png') {
		$this->setName($name);
		$this->setStatus($status);
		$this->setLegend($legend);
		$this->setPicture($picture);
	}

	public function getStatus() {
	       return $this->status;
	}

	//@Implements Item::getType()
	public function getType() {
		return 'Weapon';
	}

	//@Overide Item::getPicture()
	public function getPicture(){
		return Weapon::PICTURE_DIR.$this->picture;
	}

	protected function setStatus(EquipmentStatus &$status) {
		$this->status =& $status;
	}
	
	public function __toString() {
		$first = $this->getType().' : '.$this->getName().'\n';
		$statuses = $this->getStatus();
		foreach($statuses as $attr=> $value)
			$status .= $attr.' : '.$value.'\n';
		$last = 'Legend : '.($this->getLegend() ? $this->getLegend() : 'None').'\n';
		return ( $first.$statuses.$last );
	}
}
?>


classes/EquipmentStatus.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

class EquipmentStatus {

	//I want to fix scope of Equipment attrbite
	//and arrage sort it
	public function __construct($attrs) {
		//base status
		$this->attrs['att'] = $attrs['att'] ? $attrs['att']: 0;
		$this->attrs['def'] = $attrs['def'] ? $attrs['def'] : 0;
		$this->attrs['mag_att'] = $attrs['mag_att'] ? $attrs['mage_att'] : 0;
		$this->attrs['mag_def'] = $attrs['mage_def'] ? $attrs['mag_def'] : 0;

		//other status for attack and defend
		//attack think to percent
		//defend think to 100 percent prevent from enemy attack
		$this->attrs['blind'] = $attrs['blind'] ? $attrs['blind'] : 0;
		$this->attrs['prevent_blind'] = $attrs['prevent_bind'] ? 100 : 0;
		$this->attrs['curse'] = $attrs['curse'] ? $attrs['curse'] ? 0;
		$this->attrs['prevent_curse'] = $attrs['prevent_curse'] ? 100 ? 0;
		$this->attrs['poison'] = $attrs['poison'] ? $attrs['poison'] : 0;
		$this->attrs['prevent_poison'] = $attrs['prevent_poison'] ? 100 : 0;
		$this->attrs['sleep'] = $attrs['sleep'] ? $attrs['sleep'] ? 0;
		$this->attrs['prevent_sleep'] = $attrs['prevent_sleep'] ? 100 ? 0;
	}

	public function getAttrs() {
		return $this->attrs;
	}
}
?>


classes/ItemGroupable
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

interface ItemGroupable {
	const MAX_NUMBER = 100;
	public function getNumber();
	public function add($number);
	public function reduce($number);
}
?>


classes/Potion.php
<?php
function __autoload($class_name){
	require_once($class_name.'.php');
}

abstract class Potion extends Item implements ItemGroupable {
	const PICTURE_DIR = 'items/potions/';
	
	//@Implements Itemgroupable::getNumber()
	public function getNumber() {
		return $this->number;
	}

	//@Implements Itemgroupable::add()
	public function add($number) {
		$this->number += $number;
		if($this->number > ItemGroupable::MAX_NUMBER) {
			$remain_number = $this->number - ItemGroupable::MAX_NUMBER;
			$this->number = ItemGroupable::MAX_NUMBER;
			throw new MaxItemNumberException($remain_number);
		}
	}

	//@Implements Itemgroupable::reduce()
	public function reduce($number) {
		if($this->number < $number)
			throw new ReduceItemNumberException($this->number);
		else
			$this->number -= $number;
	}
}
?>


^ตรงคลาสนี้แหละครับที่จะใช้เป็นคลาสแม่ของ Potion ชนิดต่างๆ แต่ยังไม่แน่ว่า hp potion จะให้เป็นหลายคลาสตามจำนวนการเติม หรือว่า จะให้เป็นคลาสเดียว เพราะมันมีผลตอน group กัน เวลาที่ได้ของมาถ้าแยก ก็จะสามารถเก็บข้อมูลได้ง่าย แต่อาจมีปัญหาที่จะมีคลาสจำนวนมากในระบบ ถ้ามี Potion ประเภทอื่นๆ เช่น เพิ่มทั้ง เลือดและ mp ไอเทมประเภท ฟื้นชีวิต หรืออื่นๆ ซึ่งยังคิดไม่ออก (คลาสนี้ยังไม่สมบูรณ์ลืมใส่ useTo())

ใครมีข้อคิด แนะนำ สอบถาม ถามมาได้คับ ผมก็ยังคิดไม่ออกเหมือนกัน
Date : 2009-06-10 23:03:17 By : pjgunner
 


 

No. 68



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

เรพข้างบน ยังไม่เสร็จนะครับ ยังไม่มีคลาส exception และยัง ไม่ถึงส่วน character เลย ยังทดสอบไม่ได้ ต้องเขียนให้หมดก่อนถึงจะทดสอบได้นะครับ แน่นอนว่า มันคงต้องมี error และส่วนที่ยังไม่สมบูรณ์ที่ต้องเพิ่มเข้าไป

ปล.ผมยังไม่ค่อยได้เข้ามาตอบนะครับ ช่วงนี้ ยังไงก็ทิ้ง คำถาม ข้อแนะนำ ข้อคิดเห็น ไว้เลยนะครับ
Date : 2009-06-10 23:08:02 By : pjgunner
 


 

No. 69



โพสกระทู้ ( 146 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


อยากลองศึกษษบ้างจัง อยากได้ความรู้ค่ะ
Date : 2009-06-12 09:55:18 By : kai9
 


 

No. 70



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter

ผมก็อยาก จะลองเขียน แบบ OO อยู่เหมือนกัน
Date : 2009-06-12 14:54:36 By : StepZaLung
 


 

No. 71



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์


อยากเขียนอยู่นะครับ แต่ยังมีเรื่องที่ไม่เข้าใจอีกมากมายมีหนังสือภาษาไทยแนะนำไม๊ครับ?
Date : 2009-06-15 14:06:35 By : rukia
 


 

No. 72



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


PHP 5 ขึ้น
สงไสยต้องไปอัพPHPของตัวเองซะละ
Date : 2009-06-16 15:17:35 By : ahung
 


 

No. 73



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ใครอยากเริ่มศึกษา OOP ก็ลองใช้ PDO ดูก็ได้ครับ มันใช้ ฟีเจอร์ OOP ใน php 5 พอดีเลย
พีดีโอก็ใช้ประโยชน์จาก abstraction ซึ่ง ถ้ามีฐานข้อมูลชนิดใหม่เพิ่มในอนาคต ก็ไม่ต้องเรียนคำสั่ง php ตัวใหม่อีก(เรียนเฉพาะดาต้าเบสชนิดใหม่)

PDO Introduction


The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions. Note that you cannot perform any database functions using the PDO extension by itself; you must use a database-specific PDO driver to access a database server.

PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.


PDO ships with PHP 5.1, and is available as a PECL extension for PHP 5.0; PDO requires the new OO features in the core of PHP 5, and so will not run with earlier versions of PHP.

From PHP manual


http://gunner.freetzi.com
Date : 2009-06-19 10:07:06 By : pjgunner
 


 

No. 74



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


ดีมากเลย
Date : 2009-06-20 00:42:28 By : yuttn
 


 

No. 75



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


OOP โปรแกรมแรกของโผ้มมมม ม่ะรู้ถูกป่ะ พอดีอ่านหนังสือจาวาแล้วเอามาเขียน php (ปนกันแหลกลาน)
เขียนตามความเข้าใจอ่ะ ผิดถูกม่ะรู้โพสไว้ก่อน 555+
เดี๋ยวจะอ่านหนังสือต่อถ้าผมเข้าใจถูกจะมาโพสใหม่


Code (PHP)
<html>
<head>
<title>ทดลองการสร้าง OOP</title>
</head>
<body>
<?php
class showText 
{
var $text;

function setText($txt1) {
	$this->text = $txt1;
	//ถ้าต้องการเรียกใช้แอตทริบิวต์จากภายในคลาส ให้ใช้ว่า $this->ชื่อแอตทริบิวต์;
}

function showSet() {
	echo $this->text;
	//ถ้าต้องการเรียกใช้แอตทริบิวต์จากภายในคลาส ให้ใช้ว่า $this->ชื่อแอตทริบิวต์;
}

function display() {
echo "ทดลองการเขียนโปรแกรมในแบบ OOP" . "<br>";
	}
}

$box1 = new showText();
	//การประกาศตัวแปรออบเจ็ค $ชื่อตัวแปรออบเจ็ค = new ชื่อคลาส;
$box1->display();
	//ถ้าต้องการเรียกใช้แอตทริบิวต์จากภายนอกคลาสให้ใช้ว่า $ชื่อตัวแปรออบเจ็ค->ชื่อแอตทริบิวต์;
$box1->setText("ไรว้า");
	//ถ้าต้องการเรียกใช้แอตทริบิวต์จากภายนอกคลาสให้ใช้ว่า $ชื่อตัวแปรออบเจ็ค->ชื่อแอตทริบิวต("อาร์กิวเมนต์");
$box1->showSet();
?>

</body>
</html>




ผลรัน

ทดลองการเขียนโปรแกรมในแบบ OOP
ไรว้า
Date : 2009-06-20 16:03:51 By : maibon
 


 

No. 76



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ผมเพิ่งหัดเขียนแบบ oop เหมือนกันคับกำลัง งง อยู่เลย ไงผู้รู้ลองเขียนให้ผมดูมั่งได้ป่าวคับ...

แบบว่า่...รับค่า่มาจาก text field อ่ะคับ พอกด submit ให้แสดงเลขคี่จากค่าที่รับเข้ามาไล่ลงมาจนถึง 1 นะคับ...

ผมยังไม่รู้จะเขียนไงเลย..

เคยเขียนแบบฟังฃั่นอ่ะคับพอจะเริ่มเรียนรู้แบบ oop งงมากเลย ลองผู้รู้สอนหน่อยนะครับ...
Date : 2009-06-21 18:59:29 By : olezajung
 


 

No. 77



โพสกระทู้ ( 76 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ เป็นแนวทางที่ดี
Date : 2009-06-23 10:44:51 By : pklangkua
 


 

No. 78



โพสกระทู้ ( 27 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
<?php
require_once 'DB.php';
$user = 'root';
$pass = ' ';
$host = 'localhost';
$db_name = 'test';
$dsn = "mysql://$user:$pass@$host/$db_name";

$db = DB::connect($dsn);
if(DB::isError($db)){
    die($db -> getMassage());
}

$sql = "select * from stu";
$result = $db -> query($sql);
if(DB::isError($result)){
    die($result -> getMassage());
}

while($result -> fetchInto($row)){
    $id = $row[0];
    $name = $row[1];
    $gpa = $row[2];
    echo "$id \t $name \t $gpa <br>";
}

$sql = "INSERT INTO stu VALUES(4,'AuA',1.8,3)";
$result = $db -> query($sql);
//$result = $db -> query("insert into stu(sid,sname,sgpa,cid)values($id,'$name',$gpa,$cid)");
if(DB::isError($reult)){
    die("inser error".$sesult -> getMassage()."\n");
}

$sql = "delete from stu where sid = $del";
$result = $db -> query($sql);
if(DB::isError($reult)){
    die($result -> getMassage());
}


Date : 2009-06-23 13:58:27 By : tuanau
 


 

No. 79



โพสกระทู้ ( 27 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่รู้ว่าจะมีคนสนใจบะ
Date : 2009-06-23 13:59:23 By : tuanau
 


 

No. 80

Guest


กำลังศึกษา ครับ

งงเรื่อง การประกาศ พวก
static
private static
const
protected
public
$this->
ฯลฯ
ว่าใช้ อย่างไร มี ที่ศึกษา เพิ่ม เติม มั้ย ครับ
Date : 2009-06-30 03:12:32 By : madlyaek
 


 

No. 81



โพสกระทู้ ( 146 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ดีจัง การเขียน oop แต่เราอยากเริ่มต้องทำไงดี
Date : 2009-07-02 07:56:58 By : kai9
 


 

No. 82



โพสกระทู้ ( 146 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


มีหนังสือสำหรับเรียน oop ไหมค่ะ แนะนำด้วยค่ะ
Date : 2009-07-02 07:57:51 By : kai9
 


 

No. 83



โพสกระทู้ ( 202 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เยี่ยมครับ
Date : 2009-07-04 16:41:24 By : [email protected]
 


 

No. 84



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


เยี่ยมครับ
Date : 2009-07-06 12:59:46 By : TTiger
 


 

No. 85



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

เป็นปัญหามากคับ เรื่อง magic quote ตามที่คุณ num ได้บอกไว้ โดยเฉพาะ การเขียน กับ oop ถ้าเราได้เก็บ state ของ ข้อมูลในฐานข้อมูล เพราะเราต้องเอา slash เข้าออก บ่อยๆ ซึ่งโอเวอร์เฮดจริงๆ

ซึ่ง object ควรเก็บข้อมูลปรกติ ที่ไม่ได้ addslashes ไว้ด้วยซึ่งการแก้ปัญหา คือต้องเพิ่มโค้ดในโปรแกรมจำนวนมาก

แต่ตอนนี้ถ้าจะไปเซต php ให้ ปิดไป โปรเจกต์ที่อยู่ในระบบ ก็จะมีปัญหา และโปรเจกต์ของลูกค้ามันก็ควรเป็นไปตามมาตรฐานด้วย ซึ่งถ้าจะเขียนด้วย oop ทั้งระบบ ก็จะเป็นการเพิ่มต้นทุนด้านเวลา และการตรวจสอบมากขึ้นด้วย

ซึ่งปัญหานี้ควรได้รับการแก้ไข ซึ่งเราไม่สามารถปิด magic_quote_gpc ในขณะรันไทม์ได้ซะด้วย


ส่วนเรื่อง PDO มันก็ไม่ได้วิเศษวิโสอะไรหรอกนะครับ ผมลองใช้แล้ว ก็ไม่ได้มีฟีเจอร์ตามแต่ละดาต้าเบส
เหมือนแพ็คเกจ java.sql ของ Java ซึ่งให้เจ้าของดาต้าเบสเป็นผู้ implement เองเพียงแต่มี prepare statement ให้ใช้เท่านั้นเอง และต้องโค้ดมากขึ้นเกินจำเป็น
Date : 2009-07-15 11:26:00 By : pjgunner
 


 

No. 86



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


สำหรับหนังสือ เกี่ยวกะ OOP ของ PHP

ผมแนะนำ Insight PHP ฉบับสมบูรณ์ ของ provision คับ (ราคาปก 299)
เพราะอ่านแล้วรู้สึกว่าเข้าในง่ายดี ผมก็อ่านๆ งมๆ เอาเองก็พอจะรู้เรื่องมากขึ้นเพราะหนังสือเล่มนี้แหละครับ

อีกเล่มที่แนะนำคือ คู่มือเขียนโปรแกรมด้วยภาษา Java ของ provision อีกเช่นเคย (ราคาปก 149)
เล่มนี้อธิบายแนวคิดเกี่ยวกับ OOP ให้คนที่ไม่มีพื้น OOP เลยให้เข้าใจ OOP ได้

โดยความเห็นส่วนตัวแล้ว ผู้ที่ศึกษาด้วยตัวเอง หนังสือสองเล่มนี้ คงจะช่วยให้ท่านได้ เข้าใจและไม่กลัว OOP แน่นอน
Date : 2009-07-31 10:08:24 By : maibon
 


 

No. 87



โพสกระทู้ ( 5 )
บทความ ( 1 )



สถานะออฟไลน์


ชอบ oop เหมือนกันครับ เท่าที่เคยเขียน php ตั้งแต่ 4,5,6 ก็รองรับการเขียนโปรแกรมแบบ oop ทุกเวอร์ชั่น แตกต่างก็จะมีบางคุณสมบัติของ oop ที่บางเวอร์ชั่นทำไม่ได้ เช่น การกำหนดระดับการเข้าถึงข้อมูล ถ้าเวอร์ชั่น 4 ก็จะเป็น public หมด แต่ถ้า 5-6 ก็จะเป็นได้ทั้ง public private ฯลฯ สำหรับคนที่จะหัด oop ผมแนะนำ javascrip ครับ ไม่ต้องเครียมการอะไรมาก ฝึกง่าย แสดงผลลัพธ์ง่าย ถึงจะไม่รองรับคุณสมบัติของ oop ทั้งหมดแต่ก็ได้หลักการของ oop พอสมควรเลยครับ
Date : 2009-07-31 23:14:39 By : oointhai
 


 

No. 88



โพสกระทู้ ( 10 )
บทความ ( 0 )



สถานะออฟไลน์


อ่านะ เข้ามาดู ขอบคุณมากๆ เลยครับ
Date : 2009-08-12 18:57:57 By : Sirichut
 


 

No. 89



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

จาก rep 90
Quote:
ชอบ oop เหมือนกันครับ เท่าที่เคยเขียน php ตั้งแต่ 4,5,6 ก็รองรับการเขียนโปรแกรมแบบ oop ทุกเวอร์ชั่น แตกต่างก็จะมีบางคุณสมบัติของ oop ที่บางเวอร์ชั่นทำไม่ได้ เช่น การกำหนดระดับการเข้าถึงข้อมูล ถ้าเวอร์ชั่น 4 ก็จะเป็น public หมด แต่ถ้า 5-6 ก็จะเป็นได้ทั้ง public private ฯลฯ สำหรับคนที่จะหัด oop ผมแนะนำ javascrip ครับ ไม่ต้องเครียมการอะไรมาก ฝึกง่าย แสดงผลลัพธ์ง่าย ถึงจะไม่รองรับคุณสมบัติของ oop ทั้งหมดแต่ก็ได้หลักการของ oop พอสมควรเลยครับ

ผมไม่แนะนำให้คนที่ต้องการศึกษา OOP จริงๆ ไปศึกษาจาก javascript ครับเพราะมัน เป็นเหมือนของเด็กเล่น
คือมันขาดความสามารถที่ทำให้เข้าใจธรรมชาติของ OOP คือ javascript ไม่สามาถ inherit ได้ คือมันเก็บเฉพาะ property และ ฟังชั่นเท่านั้นเอง
Date : 2009-08-13 10:31:37 By : pjgunner
 


 

No. 90



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆครับที่ให้ความรู้
Date : 2009-08-13 15:17:28 By : badkung04
 


 

No. 91



โพสกระทู้ ( 1,579 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


นี้หรือ OOP เดียวเอาไว้ก่อนดีกว่า ศึกษา PHP เอาตัวแปรให้มันเต็มที่ก่อนดีกว่าแล้วค่อยมาศึกษาตัวนี้ต่อไป
คนเก่งก็เก่งจริงๆคนโง่ก็โง่ได้ใจ หุหุหุหุ(คนโง่นั้นคือผมเองนะคับ)
Date : 2009-08-13 15:28:30 By : somparn
 


 

No. 92



โพสกระทู้ ( 1,242 )
บทความ ( 13 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เขียนเองพอถูๆ ไถ ๆ แต่ใช้ถนัดมากครับ oop เนี่ย หุ หุ
oop code ที่ผมใช้บริการบ่อย www.phpclass.org
ยากได้อะไร ก็สมัครสมาชิก แล้ว search เอานะครับ

ตอนนี้ที่ผมเอามาใช้งาน อยู่มีสองตัว
คือ class split page =>kgpager
class ajaxtableedit
ใช้เวิร์คดีครับ
Date : 2009-08-14 23:19:18 By : DownsStream
 


 

No. 93



โพสกระทู้ ( 164 )
บทความ ( 0 )



สถานะออฟไลน์


อยากทำเว็บให้เก่งกว่านี้ คงต้องฝึกอีกนานเรยนะเรา ฮ่าๆๆ
Date : 2009-08-24 20:45:54 By : gangzaclub
 


 

No. 94



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์


กะลัง จะเขียน function เป็น oop ก็มาอีก เฮ้อ จะตามทันไหมน้อ..
Date : 2009-08-27 12:59:51 By : peak_z
 


 

No. 95

Guest


Quote:
ผมไม่แนะนำให้คนที่ต้องการศึกษา OOP จริงๆ ไปศึกษาจาก javascript ครับเพราะมัน เป็นเหมือนของเด็กเล่น
คือมันขาดความสามารถที่ทำให้เข้าใจธรรมชาติของ OOP คือ javascript ไม่สามาถ inherit ได้ คือมันเก็บเฉพาะ property และ ฟังชั่นเท่านั้นเอง

พอดีกำลังศึกษา ภาษา javascript ที่เป็นเหมือนของ... อยู่ครับ ก็เลยเห็นว่ามันเป็นภาษาที่รองรับ OOP ส่วนเรื่อง inherit ภาษา javascript สามารถ inherit ได้หลายรูปแบบครับ เพียงแต่การเขียนอาจจะแตกต่างจากภาษาโดยทั่วไปอย่าง java php ฯลฯ ที่ใช้ key word ชื่อ extends ครับ แล้วก็เรื่องที่ภาษา javascript ที่พอจะรองรับ OOP เท่าที่ศึกษามา พอสรุปได้ดังนี้ครับ

  • Encapsulation

  • Inheritance

  • Aggregation

  • Composition

  • Polymorphism



อีกนิดนึงครับ ภาษา javascript ที่เป็นเหมือนของ... ที่ใช้ OOP ในการสร้่าง ก็เช่น
  • ตัว Code ที่ใช้ tacking เว็บเราๆ ที่รู้จักในนาม Google Analytics.

  • ajax framework ทั้งหลาย เช่น dojo

  • ผมดูแล้ว ภาษา Javascript คงจะไม่ใช่ของ... และเป็นภาษาที่น่าสนใจทีเดียว

    แล้วก็ต้องข้ออภัยทุกท่านที่อาจทำให้หลงประเด็นเรื่อง OOP กับ PHP ไปบ้าง เพียงแต่อยากแนะนำให้เข้าใจ OOP จากการศึกษาหลายๆภาษา หรือเป็นการเริ่มจากภาษาง่ายๆก่อน ครับ
    Date : 2009-08-29 06:10:27 By : oointhai
     


     

    No. 96



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    คับผม ผมก็ไม่ได้เรียน หรือศึกษา javascript มามากนัก เพราะตัวเองก็เพิ่งใช้เป็นได้ไม่นาน

    ผมก็ชอบมันตรงที่เป็นไดนามิคดี และอาจทำให้บางฟีเจอร์

    ไม่ทราบคุณ oointhai พอมีตัวอย่างการใช้ feature OOP ที่ได้เกริ่นมาซัก อย่างละ 1 ตัวอย่างบ้างมั้ยคับ

    จะเป็นพระคุณอย่างมาก
    Date : 2009-08-29 07:57:11 By : pjgunner
     


     

    No. 97



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    Inheritance ผมหามาได้ละ

    Code
    Object.prototype.extend = function (oSuper) {
    for (property in oSuper) {
    this[property] = oSuper[property];
    }
    }

    function ClassA () {
    }

    function ClassB() {
    this.extend(new ClassA());
    }


    จาก ที่นี่

    1. มันใช้เท็คนิคที่พิเศษที่มีใน javascript คือเพิ่ม property ให้อัตโนมัติในคลาสหลักที่ระบุ เมื่อเพิ่มเข้าไปในคลาสไหนแล้วมันก็จะ มีในทุก object รวมถึง คลาสลูก(ซึ่งทุกคลาสจะ สืบทอดมาจากคลาส Object, ตามลิงค์ เค้าเรียกว่า prototype)

    2. ใช้ dynamic property ในการเพิ่มให้แก่คลาสที่ จะสืบทอด

    อันอื่น คือโทษที ให้คุณ oointhai เป็นคนเพิ่มให้ถ้าจะกรุณา
    Date : 2009-08-29 08:34:03 By : pjgunner
     


     

    No. 98

    Guest


    ผมขอยกตัวอย่าง Polymorphism นะครับ ตัดมาจากเว็บอ้างอิง

    Code (PHP)
    /* Polymorphism. */
    
    /* Class. */
    function Shape( ) {
    this.getArea = function( ) {
    };
    }
    
    /* Class inherit from Shape. */
    function Circle( radius) {
    this.radius = radius ;
    }
    Circle.prototype = new Shape( ) ;
    /* Overriding. */
    Circle.prototype.getArea = function( ) {
    return 3.141 * this.radius * this.radius ;
    }
    
    /* Class inherit from Shape. */
    function Rectangle( width , height ) {
    this.width = width ;
    this.height = height ;
    }
    Rectangle.prototype = new Shape( ) ;
    /* Overriding. */
    Rectangle.prototype.getArea = function( ) {
    return this.width * this.height ;
    }
    
    /* new instance. */
    var oCircle = new Circle( 2 ) ;
    var oRectangle = new Rectangle( 2 , 2 ) ;
    
    /* ทดสอบ object คนละชนิดใน array โดยเรียก getArea(). */
    var list = new Array( ) ;
    list[ 0 ] = oCircle ;
    list[ 1 ] = oRectangle ;
    for( var i = 0 ; i < list.length ; i++ ){
    var oShape = list[ i ] ;
    document.write( oShape.getArea( ) + '<br>') ;
    }
    


    // Result
    12.564
    4

    ที่มา : http://www.oop-programming.net
    Date : 2009-08-29 10:10:12 By : oointhai
     


     

    No. 99

    Guest


    คับ language feature มันมีก็จริงแต่เราต้องมาทำเอง (ไม่ชอบ keyword 'function')

    ถ้าจะให้ผมเรียน oop ผมก็ไม่เลือก javascript อยู่ดีคับ มีแค่บางฟีเจอร์ ลิงค์ที่เกี่ยวข้อง

    ปล. ควรใช้ instanceof ด้วยนะครับ

    แล้ว Encapsulation ล่ะครับ
    Date : 2009-08-29 11:57:12 By : pjgunner
     


     

    No. 100

    Guest


    encapsulation ตามที่ผมเข้าใจจากการเขียนโปรแกรม ก็คือกลไกของภาษาในการเก็บสารสนเทศที่เกี่ยวข้องกันเข้าไว้ด้วยกันใน object ซึ่งถ้ามองในเรื่องของ oop ก็คือกลไกของภาษาในการเก็บ property และ method ที่เกี่ยวข้องกันเข้าไว้ด้วยกันใน object ซึ่งถ้าตามความเข้าใจของผม ถ้าดูจาก code ที่ผ่านๆมา ก็จะสามารถมองเห็นการทำ encapsulation ของภาษา php ซึ่งทำการ encapsulate โดยใช้ class เช่นเดียวกับภาษาระดับสูงทั่วๆไปอย่าง java ,c++ ,c# ฯลฯ ส่วนภาษา javascript ก็ใช้ function หรืออีกภาษาที่หันมารองรับ oop อย่าง vb.net ก็ใช้ module หรือ class ก็ได้ โดยส่วนตัวผมสนใจ oop โดยไม่ได้ยึดติดกับภาษาใดภาษาหนึ่ง เพราะผมเองที่หากินกับการเขียนโปรแกรมคงไม่มีความสามารถไปเปลี่ยนแปลงกลไกของภาษาต่างๆที่รองรับ oop หากแต่ต้องก้มหน้าก้มตาศึกษาภาษาต่างๆตาม job ที่เข้ามา ตอนนี้ก็มี oop บน rubby มาอีกภาษาหนึ่ง ซึ่งมีรูปแบบการสืบทอดคลาสโดยใช้เครื่องหมาย < แทน extends ผมเองก็คงจะปฏิเสธรูปแบบของภาษาเค้าไม่ได้ เพราะไม่งั้นโปรแกรมก็คงทำงานไม่ได้
    สุดท้ายผมก็ขอให้ทุกท่านใช้ oop กับภาษาที่ท่านถนัด แล้วก็สามารถใช้ concept ของ oop กับภาษาอื่นๆที่จะต้องใช้โดยหลีกเลี่ยงไม่ได้ครับ
    Date : 2009-08-29 13:06:09 By : oointhai
     


     

    No. 101



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    คับผม ผมก็มอง ruby อยู่ครับ ตัวภาษามันเป็น strong dynamic ดี ถึงแม้จะใช้เครื่องหมาย < มันก็มีความหมายเดียวกัน ความจริงแล้วผมก็ไม่เคยสร้างคลาสแบบ ใช้คีย์เวิร์ด function ใน js หรอกครับ ก็เพิ่งเคยเห็นเหมือนกัน
    ปรกติก็ใช้ {} ตัวอย่าง ซึ่งมันก็เป็นคล้าย associative array ที่มี property เป็น method ได้ เวลาจะสืบทอดก็ใช้ jQuery.extend() เอาถึงแม้ว่าจะใช้ instanceof ไม่ได้

    การใช้เพียงแค่ class ของภาษา oop ต่างๆ ตามความคิดเห็นของผมมันไม่ได้ถือว่าเป็น(หรือใช้ประโยชน์ได้เต็มที่) oop ครับเพราะมันไม่ได้มีประโยชน์มากนักในการพัฒนาโปรแกรม ผมว่า oop มันมีประโยชน์ในกรณีที่

    1. สร้างเครื่องมือที่สามาถ เพิ่ม เปลี่ยนแปลงการทำงานในรายละเอียดภายหลังได้(ใช้กับงานได้หลายประเภท)
    2. ทำระบบที่สามารถ เพิ่มเติม ถอดออก เปลี่ยนแปลง ได้ตามธุรกิจและผู้ใช้ได้ง่าย(สร้างซอฟต์แวร์ที่สามารถแข่งขัน ได้เร็วโดยไม่ต้องเริ่มพัฒนาใหม่)
    3. สร้างต้นแบบ ให้คนอื่นไปพัฒนาต่อได้หลายคน และเอามาประกอบกันได้ง่าย

    ความจริงแล้วการออกแบบโปรแกรมให้เป็น oop มีต้นทุนสูงคือ
    1. ใช้เวลาศึกษาวิถีทางเขียนโปรแกรมแบบ oop นานกว่า แบบทั่วไป
    2. ใช้เวลาในการออกแบบ นาน
    3. ใช้เวลาในการศึกษารูปแบบ นาน สำหรับคนที่เอาไปพัฒนาต่อ(จึงมี pattern ยังไม่ได้เรียนเหมือนกัน)
    4. ทำงานช้ากว่าการเขียนแบบทั่วไป

    ดังนั้นถึงแม้ผมจะเขียนโปรแกรมแบบ oop ได้คล่อง ผมก็ยังจำเป็นต้องตัดสินใจว่าจะใช้ในโปรเจกต์ไหน หรือส่วนไหนของโปรเจกต์ เพราะว่ามันไม่ได้ทำให้ผลงานเป็นไปอย่างที่ผมต้องการเพียงแต่มันทำให้รูปแบบการพัฒนาและปรับปรุงเป็นไปอย่างที่ผมต้องการ โดยเฉพาะระบบที่ค่อนข้างใหญ่แล้ว แล้วต้องมีการแข่งขันตลอดผมก็ต้องใช้มันถึงแม้ว่ามันจะไม่ได้ช่วยเรื่อง GUI มากนักก็ตาม

    อย่าไปใช้มันเพราะว่ามันเท่ห์ แต่ควรใช้กับงานที่จำเป็นต้องใช้มันจริงๆ

    สำหรับคนที่อยากจะศึกษา "รู้ไว้ใช่ว่า"
    แนะนำให้ศึกษาในภาษาที่มันค่อนข้างบังคับ ครับ เช่น Java
    และ php ตอนนี้ก็มีฟีเจอร์ พอควรแก่การศึกษาเช่นกัน

    ปล. ผมเพิ่งเขียน javascript เป็นเมื่อปีเศษนี้คับ
    Date : 2009-08-29 17:59:56 By : pjgunner
     


     

    No. 102



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    แง่มๆ เพิ่งลองเขียน javascript แบบ OOP ง่ะ

    <script type="text/javascript">
    //ref: http://amix.dk/blog/viewEntry/19038
    var AJS = {
        update: function(l1, l2) {
            for(var i in l2)
                l1[i] = l2[i];
            return l1;
        }
    }
    AJS.Class = function(members) {
        var fn = function() {
            if(arguments[0] != 'no_init') {
                return this.init.apply(this, arguments);
            }
        }
        fn.prototype = members;
        AJS.update(fn, AJS.Class.prototype);
        return fn;
    }
    AJS.Class.prototype = {
        extend: function(members) {
            var parent = new this('no_init');
            for(k in members) {
                var prev = parent[k];
                var cur = members[k];
                if (prev && prev != cur && typeof cur == 'function') {
                    cur = this._parentize(cur, prev);
                }
                parent[k] = cur;
            }
            return new AJS.Class(parent);
        },
    
        implement: function(members) {
            AJS.update(this.prototype, members);
        },
    
        _parentize: function(cur, prev) {
            return function(){
                this.parent = prev;
                return cur.apply(this, arguments);
            }
        }
    }//end AJS.Class
    
    
    Shape = AJS.Class({
    	name: 'Shape',
    	init: function(name){
    		if (typeof name == 'string'){
    			this.name = name;
    		}
    	},
    	getArea: function(){
    		return 0;
    	},
    	getAreaMessage: function(){
    		return this.name + ' area = ' + this.getArea();
    	}
    });
    
    Circle = Shape.extend({
    	init: function(radius){
    		this.parent('Circle');
    		this.radius = radius;
    	},
    	getArea: function(){
    		return Math.PI * this.radius * this.radius;
    	}
    });
    
    Rectangle = Shape.extend({
    	init: function(width,height){
    		this.parent('Rectangle');
    		this.width = width;
    		this.height = height;
    	},
    	getArea: function(){
    		return this.width * this.height;
    	}
    });
    
    window.onload =  function(){
    	var p0 = new Shape();
    	var p1 = new Circle(10);	
    	var p2 = new Rectangle(10,20);	
    	alert(p0.getAreaMessage());
    	alert(p1.getAreaMessage());
    	alert(p2.getAreaMessage());
    }
    
    </script>
    


    ref : เขียน Javascript แบบ OOP โดยใช้ AJS.Class
    Date : 2009-10-05 12:05:06 By : num
     


     

    No. 103



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    ว่าแต่ AJS นี่ย่อมาจากอะไรคับ อ่านดูคลาส AJS แล้วงงเต๊ก

    แต่ตอนใช้ ก็ดูดีมาก เกือบสะดวกเหมือน OOP จากภาษาอื่นเลย และมีคอนสครัคเตอร์ให้ใช้ แถมเรียกคอนสตรัคเตอร์ของคลาสแม่ได้ด้วย

    ว่าแต่คุณสมบัติอื่นๆ มีอะไรขาดไปมั่งป่าวคับ
    Date : 2009-10-05 13:15:52 By : pjgunner
     


     

    No. 104



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    Quote:
    ว่าแต่ AJS นี่ย่อมาจากอะไรคับ อ่านดูคลาส AJS แล้วงงเต๊ก

    แต่ตอนใช้ ก็ดูดีมาก เกือบสะดวกเหมือน OOP จากภาษาอื่นเลย และมีคอนสครัคเตอร์ให้ใช้ แถมเรียกคอนสตรัคเตอร์ของคลาสแม่ได้ด้วย

    ว่าแต่คุณสมบัติอื่นๆ มีอะไรขาดไปมั่งป่าวคับ

    AJS เป็น js framework คล้ายๆ jquery น่ะพอดีเห็นเค้ามีตัวอย่างเขียนไว้เข้าใจง่ายดีเลยหยิบเอามาใช้ :D
    http://amix.dk/blog/viewEntry/19038
    http://orangoo.com/labs/AJS/
    Date : 2009-10-05 14:50:48 By : num
     


     

    No. 105



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    หุหุ ผมก็อยากเขียน แบบ OOP เหมือนกันครับ เพราะอนาคตการพัฒนาจะได้ง่ายและสะดวก ตอนนี้ก็เพิ่งจะลองหัดเขียนเว็บ php ครับ

    กำลังศึกษาอยู่ครับ ก็ได้โค๊ดจากเว็บนี้ล่ะครับเป็นแนวทางให้ผลงานออกมาได้ ยังไงก็จะพยายามมาก ๆ ครับอยากเป็น pro
    Date : 2009-10-05 15:14:36 By : cshunter
     


     

    No. 106

    Guest


    ผมชอบเข้ามาอ่านที่นี่ครับ
    เด็กเยอะดีครับ ชอบดูเด็กโชว์ภูมิกันครับ

    ไว้วันหน้าจะเอางานแบบที่เป็นผู้ใหญ่ๆมาให้ชมกันนะครับ
    Date : 2009-10-07 14:00:24 By : เอาใจช่วยเด็กๆ
     


     

    No. 107



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    ชอบ rep 106 ครับ

    ผู้ใหญ่อะไรชอบแอบดูเด็ก สงสัยแอบดูมานานละ

    ว่าแต่ว่าจะเอางานมาให้ชม อย่าไปก้อบของผู้ใหญ่ด้วยกันมาให้นะครับ เดี๋ยวเด็กจะนิสัยเหมือนผู้ใหญ่ บางคน

    หรือว่าผู้ใหญ่จะนิสัยเหมือนเด็ก (ชอบโชว์ภูมิ)
    Date : 2009-10-07 17:27:34 By : pjgunner
     


     

    No. 108



    โพสกระทู้ ( 1,579 )
    บทความ ( 3 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    55555555555
    ผมชอบเลี้ยงเด็กก๊าบ
    Date : 2009-10-07 22:30:10 By : somparn
     


     

    No. 109



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    คุณพี่ No.106 คะ
    อยากเห็นงานแบบที่ผู้ใหญ่เค้าทำกันอ่ะ รอดูอยู่นะคะ
    Date : 2009-10-13 16:17:57 By : vi_iivy
     


     

    No. 110



    โพสกระทู้ ( 1,439 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    No 106 อะไรคืองานผู้ใหญ่ ???~
    อยากเห็นโชว์หน่อยครับ
    Code (PHP)
    <?php
    function hex2str($hex)
    {
      for($i=0;$i<strlen($hex);$i+=2)
      {
        $str.=chr(hexdec(substr($hex,$i,2)));
      }
      return $str;
    }
    $text ="cdc2e8d2cababbc3d0c1d2b7a4b9cdd7e8b920c1d1b9e4c1e8e3aae8b9d4cad1c2bcd9e9e3cbade8";
    echo hex2str($text);
    ?>
    

    Date : 2009-10-14 21:05:02 By : xbeginner01
     


     

    No. 111



    โพสกระทู้ ( 237 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ตอบ No.106
    เขาคงอิจฉาละมั้งครับ
    ที่มีคนเก่งขึ้นๆ อิอิ แต่ว่าก็อยากดูงานใหญ่เหมือนกันครับ
    มันเป็นแบบไหนหรอ จะต้องใหญ่เท่าช้างหรือป่าวน้ออ
    Date : 2009-10-18 07:51:52 By : siammbk
     


     

    No. 112



    โพสกระทู้ ( 362 )
    บทความ ( 0 )



    สถานะออฟไลน์


    แล้ว OO มันต่างกันยังไงกับฟังชั่นครับ ฟังชั่นมันไม่เหมือนวัตถุหรอครับไม่ทราบจริงๆครับ จะสามารถ หาศึกษาได้จากที่ไหนครับ หรือว่าต้องเริ่มที่ไหนก่อนบ้าง
    Date : 2009-10-22 15:03:48 By : hamzter
     


     

    No. 113



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    งั้นเริ่มจากนี่ได้เลยครับ

    http://www.tonymarston.net/php-mysql/what-is-oop.html <-- En

    OOP On wiki <-- Th




    http://gunner.freetzi.com
    Date : 2009-10-22 16:03:12 By : pjgunner
     


     

    No. 114



    โพสกระทู้ ( 875 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    เห่อยังเขียนไม่เป็น ฝีกมาหลายที ลองดูสักตั้ง
    Date : 2009-10-23 10:08:09 By : peterxp
     


     

    No. 115



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    เด็กเยอะดีครับ ชอบดูเด็กโชว์ภูมิกันครับ


    แป่ว ทำไมผู้ใหญ่ ใช้คำพูดแบบนี้ (ไม่ค่อยสมกับที่บอกว่าตัวเองเป็นผู้ใหญ่เลย เป็นผู้ใหญ่แต่ทำไมความคิดเด็กจัง) หว่าเด็กอย่างผมไม่ค่อยปลื้มผู้ใหญ่แบบนี้เลย

    ที่นี้เค้าไม่ได้อวดรู้กันนะครับ แค่เป็นสังคมแห่งการแบ่งปันและช่วยเหลือซึ่งกันและกัน

    ขอให้ผู้ใหญ่ที่คิด ว่าเด็ก โชว์ ภูมิกันทราบไว้ด้วยนะครับ

    ผมอ่าน คห.106 แล้วรู้สึกอย่างไรไม่รู้บอกไม่ถูก แต่ว่า พูดได้ว่าไม่พอใจเป็นอย่างแรง ที่เค้ามาพูดแบบ นี้
    Date : 2009-10-23 12:08:30 By : DownsTream
     


     

    No. 116



    โพสกระทู้ ( 875 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    เห่อๆ ว่าแต่ใครจะนำร่องเหรอ อยากเรียนๆ php oop เรียนเองไปไม่เป็นเห่อๆ
    พี่วินครับ เปิดหน้า tutorial ของ php oop มั่งจิพี่
    เอาแบบหน้า ajax tutorail ไปเลยพี่ ซึ่งโดนใจผมมาก และคาดว่าโดนใจเพื่อนๆ หลายๆ คน
    ผมหน่ะเสพติด thaicreate ไปแล้ว วันไหนไม่ได้เปิด เหมือนมันขาดๆ เห่อๆ
    Date : 2009-10-28 10:58:07 By : peterxp
     


     

    No. 117



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    เขียน php method chaining เลียนแบบ string object ใน javascript ครับ
    http://www.w3schools.com/jsref/jsref_obj_string.asp

    <?php
    class JString
    {
        protected $s = '';
        function  __construct($str) {
            $this->s = $str;
        }
        function  __toString() {
            return $this->s;
        }
        static function jstring_all(&$item){
            if (is_array($item)){
                array_walk($item, array('JString','jstring_all'));
            } else {
                $item = new JString($item);
            }
        }
        function charAt($offset){
            if ($offset >= 0 && $offset < $this->length() ){
                return new JString($this->s[$offset]);
            } else {
                return null;
            }
        }
        function concat($s){
            $s = func_get_args();
            return new JString($this->s . implode('',$s));
        }
        function substr($start, $length){
            return new JString(substr($this->s, $start, $length));
        }
        function replace($pat, $replace){
            return new JString(preg_replace($pat, $replace, $this->s));
        }
        function toLowerCase(){
            return new JString(strtolower($this->s));
        }
        function toUpperCase(){
            return new JString(strtoupper($this->s));
        }
        function split($sep){
            $a = explode($sep);
            foreach($a as $k=>&$v){
                $v = new JString($v);
            }
            return $a;
        }
        function match($pat){
            $m = array();
            preg_match_all($pat, $this->s, $m);
            JString::jstring_all($m);
            return $m;
        }
        function charCodeAt($offset){
            if ($offset >= 0 && $offset < $this->length() ){
                return ord($this->s[$offset]);
            } else {
                return null;
            }
        }
        function indexOf($str){
            if (($index = strpos($this->s, $str))===false){
                return -1;
            }else {
                return $index;
            }
        }
        function length(){
            return strlen($this->s);
        }
        function startWith($str){
            return strpos($this->s, $str)===0;
        }
        function endWith($str){
            if (strlen($str) == 0){
                return false;
            }else{
                return substr($this->s, -strlen($str)) == $str;
            }
        }
    
    }
    
    $s = new JString('Hello World!!!');
    $hello = $s->substr(0, 5);
    $hello_doraemon = $hello->concat(' Doraemon!!!');
    
    echo $s,', length = ',$s->length(),'<br>';
    echo $hello,', length = ',$hello->length(),'<br>';
    echo $hello_doraemon,', length = ',$hello_doraemon->length(),'<br>';
    
    echo $hello->concat('.',"I am fine.","Thank you.")->substr(10,5),'<br>';
    
    
    $match = $hello_doraemon->match('|[x]+|i');
    foreach($match[0] as $m){
        echo $m,'<br>';
    }
    
    echo $hello_doraemon->replace('|o|','@')->concat(':::: good')->toLowerCase(),'<br>';
    
    if ($s->startWith('Hello')){
        echo '$s start with Hello<br>';
    } else {
        echo '$s does not start with Hello<br>';
    }
    
    if ($s->endWith('!!!')){
        echo '$s end with !!!<br>';
    } else {
        echo '$s does not end with !!!<br>';
    }
    

    Date : 2009-10-30 20:51:49 By : num
     


     

    No. 118



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    เยี่ยมครับ ดูน่าใช้เหมือนกันทีเดียว
    Date : 2009-10-31 01:00:25 By : pjgunner
     


     

    No. 119



    โพสกระทู้ ( 1,579 )
    บทความ ( 3 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    เพ่ peterXPผมก็กำลังศึกษาอยู่เหมือนกันแต่ตอนนี้ฟังช์ชั่นมันตีกันไปหมด 555 ajax ก็เข้าใจผิดเข้าใจถูกจำผิดจำถูกอยู่เลย พอดีผมอ่านหนังสือหลายเล่มมากก็เลยเอามาฝาก
    Quote:
    1.การสร้างออบเจ็กต์
    class ชื่อของคลาส
    {
    //กำหนดชุดคำสั่ง function
    }

    Quote:
    Ex.
    class test //สร้างคลาสชื่อ test
    {

    }
    $obj=new test(); //สร้างออบเจ็กต์ขึ้นมาใหม่เก็บไว้ในตัวแปร $obj
    echo"\$obj is a".gettype($obj)."<br>"; // พิมพ์ว่าตัวแปร $obj เป็นข้อมูลชนิดใด


    Quote:
    2. รายละเอียดของออบเจ็กต์ (Object Properties)
    class test
    {
    var $name="phpbasic"; //ประกาศตัวแปร $name ด้วยคำสั่ง var
    }
    $obj1=new test();
    $obj2= new test();
    $obj1->name="thaicreate"; //กำหนดรายละเอียด ของ $obj1
    $obj2->name="php"; //กำหนดรายละเอียด ของ $obj2

    echo"$obj1->name<br>"; //แสดงรายละเอียดของ obj1 คือ thaicreate
    echo"$obj2->name<br>"; //แสดงรายละเอียดของ obj1 คือ php

    หมายเหตุ: -> คือตัวกำเนินการใช้ในการอ้างถึงตัวแปร

    Quote:
    3.ออบเจ็กต์เมธอด (Object Method)
    class test
    {
    var $name="phpbasic";
    function hello()
    {
    echo"Hello";
    }
    }
    $obj=new test();
    $obj->Hello(); //แสดงHello

    Quote:
    3.1การเข้าถึง Object Property ในเมธอด
    class test
    {
    var $name="phpbasic";
    function Hello()
    {
    echo"Hello $this->name<br>";
    }
    }
    $obj=new test(); //แสดง Hello phpbasic

    *หมายเหตุ: this-> เป็นตัวแปรพิเศษ
    Quote:
    3.2 การเปลี่ยนค่า Object Property ในเมธอด
    class test
    {
    var $name="phpbasic";
    function setname($n)
    {
    $this->name=$n;
    }
    function Hello()
    {
    echo"Hello $this->name<br>";
    }
    }
    $obj->new test();
    $obj->setname("somparn");
    $obj->Hello(); แสดง Hello somparn

    Quote:
    3.3 คอนสตรักเตอร์(constructor)
    class test
    {
    var $name="phpbasic";
    function setname($n="somparn") //สร้าง constructor
    {
    $this->name=$n;
    }
    function Hello()
    {
    echo"Hello $this->name<br>";
    }
    $obj1=new test("thaicreate"); //กำหนดค่าเริ่มต้นให้กับobj1
    $obj2=new test("php");//กำหนดค่าเริ่มต้นให้กับ obj2
    $obj1->Hell();//แสดง Hell thaicreate
    $obj2->Hell();//แสดง Hell php
    }


    ผมก็กำลังศึกษาเล่นๆไปยามว่างๆจากงานครับ เหนื่อยดีพิมพ์เยอะ555
    Date : 2009-10-31 01:16:34 By : somparn
     


     

    No. 120



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์


    คิดง่าย Object หนึ่งๆ ก็จะมีหน้าทีของตัวมันเองครับ
    บางครั้งเรายังนำ "วัตถุ" ของโปรแกรม หนึ่งใช้ร่วมกันกับอีกอีก "วัตถุ" ของอีกโปรแกรมหนึ่ง แล้วเรียกออกมาใช้ได้เลย ทั้งนี้ทำให้ผู้เขียนโปรแกรมใหม่ไม่จำเป็นต้องเริ่มต้นใหม่ทั้งหมด เข้ากระบวนการ reuse จึงทำให้เราสามารถประหยัดเวลาในการเขียน Source code ได้ครับ
    Date : 2009-11-06 12:09:59 By : chutichai
     


     

    No. 121



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    ตัวอย่างการใช้งาน pdo class ลองเริ่มต้นที่นี่ก่อน
    Code (PHP)
    <?php
    
    	include ('../../wp-config/define.conf.php');
    	include('funct-wp.php');
    	
    	if(empty($_GET['cate_id']) || $_GET['cate_id'] == NULL){
    	 	echo 'cate_id don \'t exsits';
    	exit(0);
    	}
    	$cate_id = $_GET['cate_id'];
    	
    	try{
    		$conn = new pdo(DNS,USER,PSSWD);
    		}catch(PDOException $e){
    		echo 'warning!Pdo disconnected! '.$e->getMessage().
    		',on location : '.$e->getFile().', in line '.$e->getLine();
    	}
    		//post_picture,post_topic,post_read,post_reply,post_name,post_date
    		
    		$sql = "SELECT ".POSTPT.",".POSTTP.",".POSTRD.",".POSTRY.",".POSTNM.",".POSTDT.",".POSTID.",".POSTVT."  
    		FROM ".WBBTLC."
    		WHERE ".CATEID." = '".$cate_id."' ;";
    	echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
    	$i = 0;
    	$rec = countrows($sql,$conn);
    	for($i; $i<$rec; $i++){
    		if($i%2 == 0){
    			$bcolor = '#efefef';
    		}else{
    		   $bcolor = '#ffffff';
    		}
    		echo "<tr bgcolor=\"$bcolor\">";
    				
    				$rows = 0; //image
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo "<td style=\"padding:2px 2px 2px 2px;\"><img src=\"http://www.tlcthai.com/webboard/$rs[$i]\" border=\"0\" width=\"50\" hight=\"50\"></td>";
    		
    				$rows++;//2
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//3
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//4
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//4
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//5
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//6
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';
    				
    				$rows++;//7
    				$prepare[$rows] = $conn->prepare($sql);
    				$prepare[$rows]->execute();
    				$rs = $prepare[$rows]->fetchAll(PDO::FETCH_COLUMN,$rows);
    				echo '<td style="padding:2px 2px 2px 2px;">'.$rs[$i].'</td>';								
    				
    		echo '</tr>';
    	}
    	echo '<table>';
    	$conn  = NULL;
    ?>
    

    Date : 2009-11-06 17:49:43 By : mrjidjad
     


     

    No. 122



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    อ้าวแล้วส่วน นี่ class curl ง่ายๆ พอทำความเข้าใจได้
    Code (PHP)
      # @ class curlv :: Curl Libraly	
    class curl{
    			public static $srtcurl;
    		
    			public  function __construct()
    			{
    				return $this->srtcurl=curl_init();
    			}
    			public function curlopt($url,$port,$dr,$data)
    			{		
    				$opt =array(CURLOPT_URL=>"$url:$port/$dr?$data",
    									CURLOPT_HEADER=>0,
    									CURLOPT_RETURNTRANSFER=>0,
    									CURLOPT_BINARYTRANSFER=>1);
    				return curl_setopt_array($this->srtcurl,$opt);
    			}
    			public function curlex()
    			{
    				return curl_exec($this->srtcurl);
    			}
    			public function curlclose()
    			{
    				return curl_close($this->srtcurl);
    			}
    		}
    		class curlexec extends curl
    		{
    			public function curlexecn($url,$port=80,$dr="index.php",$data=NULL)
    			{
    				curl::curlopt($url,$port,$dr,$data);
    				curl::curlex();
    				return curl::curlclose();
    			}
    		}
      # @ class curlv2 :: Curl Libraly
    
    	class curlv2{
    		public $curlv2var;
    		public function var2curlhttp()
    		{
    		 	return $this->curlv2var= curl_init();
    		 }
    		public function arroptcurl($url,$port,$dr)
    		{
    			$opt=array(CURLOPT_URL=>"$url:$port/$dr",
    									CURLOPT_HEADER=>0,
    									CURLOPT_RETURNTRANSFER=>0,
    									CURLOPT_BINARYTRANSFER=>1);
    				return curl_setopt_array($this->curlv2var,$opt);
    		}
    		public function curlexecute()
    		{
    				return curl_exec($this->curlv2var);
    		}
    		public function curlclosehttp()
    		{
    				return curl_close($this->curlv2var);
    		}
    		public function usecurlhttp($url,$port=80,$dr="index.php")
    		{
    			curlv2::var2curlhttp(); //array
    			curlv2::arroptcurl($url,$port,$dr);
    			curlv2::curlexecute();
    			return curlv2::curlclosehttp();
    		}
    	}
    

    Date : 2009-11-06 17:59:06 By : mrjidjad
     


     

    No. 123



    โพสกระทู้ ( 11,835 )
    บทความ ( 10 )

    สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

    สถานะออฟไลน์


    มาแอบอ่าน
    ไม่ใช่ผู้ใหญ่นะครับ ผมแค่ผู้ช่วยผู้ใหญ่บ้าน
    อยากปึ๊กกับ oop เหมือนกัน แต่คงต้องไปอาศัย java ดีกว่า กำลังจะโดดไปรื้อฟื้น java ที่เคยเรียนมาและไม่ตั้งใจเรียน อิอิ
    Date : 2009-11-08 01:16:47 By : plakrim
     


     

    No. 124



    โพสกระทู้ ( 16 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากเขียนได้อย่างนี้บ้างจัง
    Date : 2009-11-09 10:07:00 By : onenueng
     


     

    No. 125



    โพสกระทู้ ( 21 )
    บทความ ( 0 )



    สถานะออฟไลน์


    *o*
    Date : 2009-11-10 11:01:12 By : glazie
     


     

    No. 126



    โพสกระทู้ ( 1,439 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    มาดูวิธีเขียน OOP javascript กัน (กำลังฝึกเขียนเชิง oop javascript อยู่ครับ )
    อัลบั้มรูปสไตล์ภาพจาง

    ตัวอย่างรูป
    imageslide
    โค้ด
    Code (PHP)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html xmlns="www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title> อัลบั้มรูปสไตล์ Opacity   By xbeginner01</title>
    <style>
    *{
    	padding:0;
    	margin:0;
    }
    #tbSlide{
    border-collapse:collapse;
    border:none;
    }
    #tbSlide td{
    	padding:0 3px;
    }
    #tbSlide #bb{
    	position:relative;
    	width:210px;    /* ความกว้างของภาพที่จะแสดง  +10px(border) */
    	height:210px;   /*ความยาวของภาพที่จะแสดง  +10px(border)*/
    	text-align:center;
    	border:solid 1px #D8D8D8;
    	overflow:hidden;
    }
    
    #tbSlide #bb #showPic img{	
    	position:absolute;
    	left:0;
    	top:0;
    	right:0;
    	border:solid 4px #FFFFFF;
    }
    #tbSlide #Pic a  img{
    	margin:1px 0;
    	border:none;
    }
    </style>
    <script>
    
    function slideStyleOpacity(){
    	var list =3; // แสดงจำนวนรายการรูปทางด้านซ้าย
    	var waitTime =1000 // หยุดแสดงภาพ 1  หน่วย  us
    	var opaTime = 100  //ความเร็วต่อเฟรม ทำให้ภาพจาง หน่วย  us
    	var  opaMulti = 10 // ตัวคูณ เพิ่มค่า opacity (ภาพจาง) ขึ้นอีก ไม่ควรเกิน 100 และเท่ากับ 0 ประมาณ 5-20 กำลังดี
    	var imgArr = new Array();
    	var opa= 0;
    	var wait =false;
    	var  im =0;
    	var startList=0;
    	this.addImage =  function(imgs,thumnail){
    		imgArr[imgArr.length] ={imgs:imgs,thumnail:thumnail}
    		ss.showImage(imgArr[0].imgs);
    		ss.toList();
    	}
    	this.toList =function(){
    		var  pic=document.getElementById('Pic');
    		pic.innerHTML="";
    		for(var i=0; i < list ; i++){
    			try{
    				var  pic=document.getElementById('Pic');
    				var a =document.createElement('a');
    				a.setAttribute('href',"javascript:ss.showImage('"+imgArr[startList+i].imgs+"')");
    				var tagImg = document.createElement('img');
    				tagImg.setAttribute('src',imgArr[startList+i].thumnail);
    				tagImg.setAttribute('alt',imgArr[startList+i].thumnail);
    				a.appendChild(tagImg);
    				pic.appendChild(a);
    				var br= document.createElement('br');
    				pic.appendChild(br);
    			}catch(e){}
    		}
    		if(imgArr.length>list && imgArr.length>(startList+list) ) document.getElementById('downList').disabled=false;
    		else  document.getElementById('downList').disabled=true;
    		if(startList>0)document.getElementById('upList').disabled=false;
    		else   document.getElementById('upList').disabled=true;
    	
    	}
    	this.upList =function(){
    		 startList--;
    		 ss.toList();
    	}
    	this.downList=function(){
    		startList++;
    		ss.toList();
    	}
    	this.showImage=function(img1){
    		var show=document.getElementById('showPic');
    		show.innerHTML="<img src="+img1+" id=img1>";
    		setOpacity(100,'img1');
    		var len =imgArr.length;
    		var j=0;
    		while(j <len){	
    				if(imgArr[j].imgs ==img1){
    				show.innerHTML+="<img src="+imgArr[(j+1)%len].imgs+" id=img2 >";
    				break;
    			}
    			j++;
    		}
    		setOpacity(0,'img2');
    		opa=0;
    		wait=true;
    		im=j;
    	}	
    	
    	this.slideImage=function(){
    			if(wait){
    				setTimeout("ss.slideImage()" ,waitTime);
    				wait=false;
    			}else{
    				setTimeout("ss.slideImage()" ,opaTime);
    				opa++;
    				setOpacity(100-opa*opaMulti,'img1');
    				setOpacity(opa*opaMulti,'img2');
    				if(opa*opaMulti >99 ){				
    					var  next = imgArr[(im+1)%imgArr.length].imgs;
    					im++;
    					ss.showImage(next);								
    				}
    			}		
    	}
    	function setOpacity(setOpacity, objectId){
    		var object = document.getElementById(objectId).style;	
    		object.opacity = (setOpacity / 100);
    		object.MozOpacity = (setOpacity / 100);
    		object.KhtmlOpacity = (setOpacity / 100);
    		object.filter = "alpha(opacity=" + setOpacity + ")";
    		
    	}
    
    }
    
    var ss = new slideStyleOpacity;
    window.onload =function(){
    /*เพิ่มภาพลงในสไลด์ โดยใส่ชื่อภาพจริง  (iimg1.jpg)  และ ภาพย่อส่วน (thumnail_img.jpg) ด้วยฟังก์ขัน ss.addImage()  ดูตย.ด้านล่าง*/
    /*####################  เพิ่มรูปทีละชุด  ####################  */
    	/**/	
    	ss.addImage('img1.jpg','thumnail_img1.jpg');
    	ss.addImage('img2.jpg','thumnail_img2.jpg');
    	ss.addImage('img3.jpg','thumnail_img3.jpg');
    	ss.addImage('img4.jpg','thumnail_img4.jpg');
    	ss.slideImage(0);
    	/**/
    /*############################### ####################  */
    
    /*#################  เพิ่มรูปด้วยวิธีวนรูป  ##################  */
    	/*	
    	for(var i=4 ; i<9 ; i++){
     		ss.addImage('img'+i+'.jpg','thumnail_img'+i+'.jpg');
    	}
    	ss.slideImage(0);
    	/
    /*############################### ####################  */
    
    }
    </script>
    </head>
    <body>
    <center>
    <b>สไลด์รูปสไตล์ opacity    </b><br/><br/>
    <table  id="tbSlide" >
    <tr >
    	<th rowspan="3" >
    	<div id="bb"><div id="showPic" ></div></div>
    	</th>
    	<td align="center"><input type="button" id="upList"  value="UP" onclick="ss.upList()" disabled="disabled" style="width:50px"></td>
    </tr>
    <tr>
    	<td>
    	<div id="Pic"></div>
    	</td>
    </tr>
    <tr>
    	<td align="center"><input type="button"  value="DOWN"  id="downList" onclick="ss.downList()" disabled="disabled" style="width:50px"></td>
    </tr>
    </table><!--tbSlide-->
    </center>
    </body>
    </html>
    <?php 
    /*######  เพิ่มรูปจากฐานข้อมูล (ควรไว้หลัง </html> หรือ </table><!--tbSlide--> ) ####  */
    /*
    echo "<script>\n";
    require ("config.inc");
    $sql =mysql_query("select * from tblxxx ") or die(mysql_error());
    while($rs =mysql_fetch_array($sql)){
    	echo "ss.addImage('".$rs[imgs]."','".$rs[thumnail]."');\n");
     }
     echo "ss.slideImage(0);\n";
     echo "</script>\n";
     */
     /*###############################################################  */
    ?>
    

    Date : 2009-11-12 14:38:57 By : xbeginner01
     


     

    No. 127



    โพสกระทู้ ( 8 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนนะครับ

    มันน่าจะเขียนง่าย

    ผมกำลังจะเรียนครับ

    ถ้าเป็นoop คงจะง่ายกว่า
    Date : 2009-11-15 11:28:56 By : นฤคม
     


     

    No. 128



    โพสกระทู้ ( 53 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    ผมต้องลองศึกษาบ้างแล้วดีกว่า

    ท่าจะง่ายดีคับ
    Date : 2009-11-16 01:06:49 By : lovetummy
     


     

    No. 129



    โพสกระทู้ ( 9 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากกลับไปใช้ PHP จัง แต่หลงมาในดง C# ASP.net ไปซะแล้ว
    Date : 2009-11-20 17:46:20 By : ธนชล
     


     

    No. 130



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ถ้าเป็นไปได้ก็ดีสิ
    Date : 2009-11-21 12:06:57 By : sueboonkiat
     


     

    No. 131



    โพสกระทู้ ( 9 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เพิ่งจะลองศึกษา คงต้องมีคำถามมาให้ชาวthaicreateช่วยกันตอบหน่อยนะคะ
    Date : 2009-11-24 10:54:34 By : dek-dee
     


     

    No. 132



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    PHP-Design-Patterns
    เทคนิคการออกแบบโปรแกรมครับ
    Date : 2009-11-25 22:53:54 By : num
     


     

    No. 133



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    พวก pattern ต่างๆนี่ดีนะคับ จริงๆแล้วผมก็ยังไม่ได้ศึกษาอะไรเลย ชอบมั่วเอาเอง

    ข้อดีของ pattern ก็คือ (GOF)
    1. เป็นรูปแบบมาตรฐานที่สามารถเข้าใจได้ง่าย ถ้าหากได้เรียน GOF pattern เดียวกัน ก็มองโค้ดได้เร็วเข้าใจว่ามันพิมพลีเมนต์และเรียกใช้งานอย่างไร(คือแก้ปัญหาโดยเขียนรูปแบบเองอาจเข้าใจคนเดียว)

    2. เป็นรูปแบบที่ทำให้แก้ปัญหาซึ่งอาจจะเขียนยาวหรือยากหรือซับซ็อน ได้ง่าย รียูสง่าย ขึ้นอยู่กับสถานะการ โปรแกรม OOP ขนาดใหญ่ซับซ้อน คิดว่าต้องเรียนให้แม่นก่อนเอามาใช้งาน เพราะมันมีบางแพทเทอร์นคล้ายกัน แต่เป้าหมายมันต่างกันนิด

    3. เหมาะสำหรับสร้างเครื่องมือที่อายุยืนนา สามารถเพิ่มเติมต่อได้ในภายหลัง เครื่องมือที่แจก แต่พวกนี้มักมีเอกสารกำกับ แถมด้วย บางทีถ้าหากผมได้เรียน pattern ก็อาจจะรู้ว่าส่วนใหนใช้ pattern ไหน



    ทั้งนี้คาดว่า ถ้าทำเว็บเกมจริงๆ คงต้องศึกษา GOF pattern ก่อน
    แต่ตอนนี้ประสบการณ์ไม่ถึง ขอถึกๆไปก่อน จะได้รู้ว่าเค้าคิดแพทเทอร์นมาทำไม
    Date : 2009-11-28 16:57:12 By : pjgunner
     


     

    No. 134



    โพสกระทู้ ( 1,439 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook


    ผมชอบลิงค์พี่หนุ่มจัง มีสิ่งที่ผมกำลังหาอยู่พอดี การแสดงเวลาทั้งหมดการแสดงผล >.<
    ผมก็อยากรู้เหมือนกัน เวลาผมเขียนโค้ดมันทำงานเร็วขนาดไหน
    จริงๆผมก็อยากได้ลิงค์ที่เขาเปรียบเทียบความเร็วของฟังก์ชันต่างๆอีกเหมือนกัน พี่หนุ่มพอมีลิงค์อีกเปล่าครับ

    http://www.fluffycat.com/PHP-Design-Patterns/PHP-Performance-Tuning-if-VS-switch/
    ผมลองทดสอบของผมแหล่ะ มันไม่แน่นอนอ่ะ แต่โดยเฉลี่ยแล้ว if-else เร็วกว่า (แต่ก่อนนึกว่า switch เร็วกว่า)
    Date : 2009-11-28 22:34:36 By : xbeginner01
     


     

    No. 135



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    ลองเทสดูครับ
    http://cakephp.jitwitya.com/post/php-benchmark
    http://www.phpbench.com/
    Date : 2009-11-29 14:50:51 By : num
     


     

    No. 136



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    Simple calculator : http://www.4shared-remove-by-admin.com/file/166756420/a390a2a4/calculator.html
    Create table: http://www.4shared-remove-by-admin.com/file/165883123/33a2ad3e/create_table.html
    Date : 2009-12-07 00:16:47 By : DownsTream
     


     

    No. 137



    โพสกระทู้ ( 615 )
    บทความ ( 4 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ม่ายรุจะเริ่มยางงานก่อน.....ต้องดู พวกพี่ๆ เค้าทำไปแล้วค่อยตาม อิๆๆ
    Date : 2009-12-09 15:20:21 By : t-monroe
     


     

    No. 138



    โพสกระทู้ ( 47 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    แล้วเวลาที่ reuse code จะทำยังไงหรอคะ
    Date : 2009-12-22 18:56:52 By : ree48012
     


     

    No. 139

    Guest


    การ reuse ที่เห็นกันทั่วๆ ไปแบ่งเป็น 3 ส่วนครับ ได้แก่ M,V,C

    ======================================================
    M ตรงนี้จะเกี่ยวข้องกับการดึงข้อมูลมาใช้งานและบันทึกครับเช่น
    เมื่อเราเขียนโปรแกรมไปนานๆ จะพบโค้ดซ้ำๆ เช่น $query="SELECT * FROM tb WHERE id='1'" เป็นแบบนี้บ่อยมากๆ
    เราก็อาจจะเขียน

    Code (PHP)
    <?php
    //...
    function record($table, $col, $id){
     $id = mysql_real_escape_string($id);
     $r = mysql_query("SELECT * FROM $table WHERE $col='$id'");
     if (mysql_num_rows($r) == 0){
      return false;
     }else{
       return mysql_fetch_assoc($r);
     }
    }
    


    เวลาใช้งานก็

    Code (PHP)
    <?php
    $row = record('products', 'id', $_GET['id']);
    if ($row === false){
      echo 'not found';
    } else{
      echo $row['name'], ', ', $row['price'];
    }
    


    ======================================================
    V ส่วนแสดงผล html ครับ ดูจากส่วน M จะเห็นว่าเราจะได้ข้อมูลมาเป็น array
    เราก็อาจจะสร้างไฟล์ template ขึ้นเช่น ซึ่งไฟล์นี้สามารถแก้ไขใน dream ได้ (reuse ฝั่ง designer)
    <div class="product-view">
    <span class="name">name</span> {name}
    <span class="price">price</span> {price}
    </div>

    เวลาใช้งานก็
    <?php
    //...
    $row = record('products','id',$_GET['id']);
    $template = file_get_contents('product-template.php');
    echo str_replace(array('{name}','{price}'),array($row['name'],$row['price']),$template);
    //ปลมีเทคนิคที่จะทำให้โค้ดสั้นกว่านี้ลองไปสร้าง function ประยุกต์ดูนะครับ

    ======================================================
    C ส่วนควบคุม อันนี้เป็นโปรแกรมจริงๆ เป็นส่วนเรียก M และ V มาใช้งานอีกที
    การ reuse ก็เป็น function หรือ class คล้ายๆ กับ M แต่โดยปกติจะเป็นอิสระไม่เกี่ยวข้องกับข้อมูล
    ส่วน C นี้อาจจะเป็นรูปแบบ if then else ธรรมดาๆ ก็ได้เช่นกัน ซึ่งจะนำไปใช้งานซ้ำๆ ได้หลายครั้ง
    ตัวอย่างเช่น ไฟล์ test-login.php

    Code (PHP)
    <?php
    @session_start();
    if (empty($_SESSION['login'])){
      header('location:login.php'); //ย้ายไปหน้า login.php
      exit;
    }
    


    เวลาใช้งานก็
    <?php require 'test-login.php';?>
    Date : 2009-12-22 19:51:58 By : num
     


     

    No. 140



    โพสกระทู้ ( 768 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผมก็พยายามศึกษาอยู่เหมียนกัน อิๆ ยังงงอยู่เลย แต่เท่าที่อ่านมาเริ่มรู้สึกชอบแล้ว เพราะปัจจุบันโค้ดการคิวรีและอื่นๆ มันปนกันอยู่ทุกหน้าเลยครับพี้น้อง ถ้าเขียนแบบ OOP น่าจะดูง่ายเป็นระเบียบขึ้น และอยากรู้ว่าระหว่างเราเขียนแบบฟังก์แล้วแยกไฟล์เหมือน คห.139 กะเขียนเป็นคลาส แบบ OOP เต็มตัวมันจะมีข้อดีข้อเสียต่างกันอย่างไรหนอ ขอความเห็นหน่อย
    Date : 2009-12-26 10:48:21 By : naskw
     


     

    No. 141



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    การเขียนโปรแกรมแบบ class ประโยชน์ที่สำคัญๆ ได้แก่
    ไม่จำเป็นต้องใช้ตัวแปร global ระหว่าง function ที่เกี่ยวข้องกันครับ

    แบบ function
    function a(){
    global $share_var;
    $share_var = 10;
    }
    function b(){
    global $share_var
    echo $share_var;
    }
    a();
    b();
    ซึ่งการใช้ตัวแปร global มากๆ ไม่ดีเพราะจะทำให้ตรวจสอบโปรแกรมยากครับ
    ตัวอย่างนี้ไม่มีปัญหาอะไร แต่ถ้ามี function ที่เรียกใช้ชื่อตัวแปรเดียวกันหลายกลุ่ม
    เมื่อนำ function หลายๆ กลุ่มมาใช้ร่วมกัน โปรแกรมจะเสียหายทั้งหมดครับ
    หรือ
    function a(){
    $share_var = 10;
    return $share_var;
    }
    function b($share_var){
    echo $share_var;
    }
    $share_var = a();
    b($share_var);
    ไม่มีปัญหาเรื่องตัวแปร global แต่ใช้การส่ง parameter
    ไปมาโค้ดปัญหาน้อยกว่าแต่โค้ดจะเขียนและอ่านยากมากครับ

    ถ้าเขียนเป็น class
    จะไม่ต้องใช้ตัวแปร global
    class C{
    var $share_var;
    function a(){
    $this->share_var = 10;
    }
    function b(){
    echo $this->share_var;
    }
    }
    $c = new C;
    $c->a();
    $c->b();
    ดูเหมือนจะเขียนโค้ดยาวกว่าแต่ในระยะยาวแล้วเป็นการแบ่งกลุ่มตัวแปรและ function
    ทำให้มีปัญหาน้อยกว่าและถ้าเขียนแบบรัดกุมดีๆ สามารถนำไปใช้ในโปรเจคใหม่ๆ ได้เลยโดยไม่ต้องแก้ไข
    เพราะ class มีคุณสมบัติห่อหุ้มกลุ่มของ function และตัวแปรอยู่แล้ว ถ้าไม่ใช้ตัวแปร global ใน class
    ปกติจะสามารถนำไปใช้งานได้ทันทีไม่ต้องกังวลกับชื่อตัวแปรครับ

    สำหรับ อะไรที่ค่อนข้างซับซ้อนและมีหลายหน้าที่ ควรจะเขียนเป็น class ครับ เพื่อจะได้แบ่งหน้าที่ของ function ใน class และจัดกลุ่มตัวแปรที่สัมพันธ์กันไว้ที่เดียวกัน
    แต่อะไรที่หน่วยย่อยหน่วยเดียวเช่นการแปลงค่า แสดงผลค่าแบบง่ายๆ ควรจะเขียนเป็น function เพื่อสะดวกในการใช้งานครับ

    ข้อเสียของการใช้ตัวแปร global ใน function
    Date : 2009-12-26 11:17:01 By : num
     


     

    No. 142



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    Create table and Search
    Date : 2010-01-05 16:36:09 By : DownsTream
     


     

    No. 143



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    pager นี่แหละครับเป็นที่ต้องการของกระทู้แถวนี้จริง ^^
    พอเขียนเป็น class แล้วเราก็สามารถ reuse เอาไปใช้กะหน้าอื่นๆ ได้อีกโดยไม่ต้องเขียน code เพิ่ม

    และต่อไปก็สามารถประยุกต์ pager ตัวนี้ให้ใช้ ajax แทนการ refresh หน้าได้
    เผื่อมีใครฟิตก็เอาโคดมาแชร์กันได้อีกนะครับ

    โดยส่วนตัวผมอ่ะมีโคดพวกนี้อยู่แล้วแต่ขี้เกียจเขียน comment อธิบายคับแหะๆ

    Date : 2010-01-06 09:59:42 By : nut_t02
     


     

    No. 144

    Guest


    พอจะมีที่ไหนสอน เขียน php แบบ oop ตั้งแต่เบื้องต้นมาเลยบ้างคะ
    พอดีอยากเปลี่ยนแนวแล้วอะค่ะ

    รบกวนแนะนำด้วยนะคะ
    Date : 2010-01-06 13:17:31 By : billinus
     


     

    No. 145



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    pager ที่เป็น ajax ผมก็ใช้อยู่ครับแต่ ว่าไม่อยากเอามา แจก เพราะคิดว่าถ้าเข้าใจ pager ตัว ที่ผมเอามาโพสไว้แบบ refresh page
    และ ajax จริงๆ ก็น่าจะประยุกต์ใช้งานเองได้แล้วครับ ไม่ยากช่วยทุกอย่างเด่วจะทำเองกันไม่เป็น เอิ๊กๆ ๆ ๆ
    Date : 2010-01-06 13:18:57 By : DownsTream
     


     

    No. 146



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    กำลังพยายามอยู่ครับบบบบบบบบ
    Date : 2010-01-06 16:56:22 By : hatori
     


     

    No. 147



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    พื้นฐาน OOP

    OOP tutorial 1
    Date : 2010-01-07 12:29:17 By : num
     


     

    No. 148



    โพสกระทู้ ( 6 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    กำลังลองหัดทำอยู่ค่ะ
    Date : 2010-01-07 16:11:09 By : billinus
     


     

    No. 149



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มานจะเร็วกว่ามั้ยครับ อยากลองเหมือนกันครับ
    Date : 2010-01-12 12:39:58 By : kifri
     


     

    No. 150



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ใจจ้า
    Date : 2010-01-13 01:13:08 By : bombsara
     


     

    No. 151



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    ยังไง เมื่อหัดเขียน OO กันไปซะพัก ก็อยากทำความเข้าใจกับ design pattern และหลัก MVC กันดูครับ
    ในโลกการทำงานของโปรแกรมเมอร์ ในภาษา PHP จริงๆ แล้วเราก็ไม่จำเป็นเขียน class หรือ สร้าง Library เองหรอกครับ แต่อาจเรียนรู้ การเขียนเพื่อนำไปเรียกใช้ดีกว่า
    ผมเป็นโปรแกรมเมอร์ คนนึง ที่เขียน PHP มาได้ 1 ปีกว่า ด้วยเหตุการณ์ความเร่งรีบบังคับ จึงต้องเปลี่ยนวิธีการเขียนโปรแกรมที่บ้าพลัง มาอาศัย PHP tools ต่างๆ ช่วย เพื่อความรวดเร็วในการพัฒนา app. ให้ทันเวลา ผมว่าหลายๆ คนที่นี่ ก็คงเคยเจออย่างผม จิงมั๊ยครับ ยังไงซ่ะ Library ที่ได้มาตรฐาน ตลาดแรงงานส่วนใหญ่ใช้กัน ก็วางใจด้วยส่วนหนึ่ง น่ะครับ
    ตัวอย่างการใช้งาน ADDOB Library for PHP
    Code (PHP)
    include('adodb/adodb.inc.php'); 
    function db_connected($db_conn=$your_database){
        $db = ADONewConnection("mysql"); 
        //$db->debug = true;
        $db->Connect($your_server, $your_user, $your_password, $your_database); 
        return $db;
    }
    //
    db_connected($db_conn=$your_database);
    

    และตัวอย่างการใช้งาน Smarty - the compiling PHP template engine
    //installation
    class Template extends Smarty { 
    
       function __construct() 
       { 
            $this->Smarty(); 
            $this->template_dir = '/templates/'; 
            $this->compile_dir  = '/templates_c/'; 
            $this->config_dir   = '/configs/'; 
            $this->cache_dir    = '/cache/'; 
    
            $this->caching = true; 
            $this->assign('app_name', 'template'); 
       } 
    
    } 
    $template=&new Template;
    $template->assign_by_ref("greeting","Hello World");
    


    2 ตัวนี้ผมใช้ในการทำงาน จริงๆ ครับซึ่งก็คงจะตรงกับหลายๆ คนจริงมั๊ยครับ และในความเป็นจริงอีกเช่นกัน ที่เราคงต้องใน Libraly อีกหลายต่อหลายตัวในการทำงาน(ถ้ามีเวลาพอที่จะศึกษาอย่าง PEAR,Zend, Prado ฯลฯ)
    http://adodb.sourceforge.net/
    http://www.smarty.net/
    Date : 2010-01-19 13:29:11 By : mrjidjad
     


     

    No. 152



    โพสกระทู้ ( 27 )
    บทความ ( 0 )



    สถานะออฟไลน์


    แทใจให้หมดเลยครับ...ผมเขียนอยู่พอดีครับ...

    ผมว่าดีนะครับ.....ให้ไป 1 คะแนน ขอบคุณครับ..
    Date : 2010-02-01 01:33:23 By : tuanau
     


     

    No. 153



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ถ้าเขียนอยู่ก็มาร่วมแชร์ประสบการณ์ หรือเทคนิคการเขียนกันได้ครับ
    หรือถ้ามีวิธีอธิบาย concept ให้คนที่ยังไม่เคยเขียน สามารถที่เข้าใจได้ง่าย
    ว่าเขียนแบบธรรมดา กับเขียนแบบ OOP ต่างกันยังไง มีข้อดีหรือเสียยังไง
    ก็สามารถอธิบายได้ตรงนี้เลยครับ

    ปล. กระทู้นี้ยังไม่ค่อยเห็นคนโพสถามเกี่ยวกับ OOP กันเลย มีแต่คนบอกว่าสนใจๆ
    ถ้ามีอะไรสงสัยถามมาได้เลยครับไม่ต้องกลัว ผมและคนอื่นๆ ที่มีประสบการณ์ยินดี
    ช่วยอธิบายให้อย่างละเอียดครับ (แต่ไม่ได้ทำให้นะ เดี๋ยวจะทำไม่เป็น หุหุ)

    ช่วยๆ กัน เราจะได้ก้าวหน้าไปพร้อมๆ กันครับ
    Date : 2010-02-01 23:31:53 By : nut_t02
     


     

    No. 154

    Guest


    มีเรื่องถามหน่อยนะครับคุณเจ้าของกระทู้

    ืคือผมอยากอ่านข้อมูลไฟล์ csv แล้วต้องเอาไปเก็บลง DB แต่ข้อมูลที่เป็น ภาษาไทยมีปัญหาคือเป็นค่าว่างๆหรือไม่ก็เป็นตัวต่างดาว จะพอมีวิธีการปัญหานี้ไม่ครับ

    ผมลองใช้วิธี

    Code
    $str = mb_convert_encoding($str, "TIS-620","UTF-8");


    แต่ดันมี Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unknown encoding "TIS-620"

    เลยพอมีวิธีแก้ไขปัญหานี้บ้างมัยครับ
    Date : 2010-02-02 14:52:50 By : คนใกล้ตัว
     


     

    No. 155



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    Class thai date format v2.0.0 คลอดแล้วครับ เวอร์ชันแรกเขียนแบบ มั่วๆ ไปหน่อย ลองเอาเวอร์ชั่นใหม่ไปทดสอบดูนะครับ

    ผมได้เอา format ของ excel มาเขียนเป็น class php

    formate ที่ผมได้จัดทำไว้ภายใน class

    :: Excel format date time::
    1 ->> 30/6/27
    2 ->> 30/6/2527
    3 ->> 30/6/2527 13:30 น.
    4 ->> 30/6/2527 1:30 PM
    5 ->> ๓๐/๐๖/๒๗
    6 ->> ๓๐/๐๖/๒๕๒๗
    7 ->> ๓๐/๐๖/๒๕๒๗ ๑๓:๓๐ น.
    8 ->> 30 มิ.ย. 2527
    9 ->> 30 มิถุนายน 2527
    10 ->> ๓๐ มิ.ย. ๒๕๒๗
    11 ->> ๓๐ มิถุนายน ๒๕๒๗
    12 ->> 30 May 27
    13 ->> 30 May 2527

    :: DS_Ohm format date time::
    1 ->> วันเสาร์ ที่ 30 เดือนมิถุนายน พ.ศ. 2527
    2 ->> วันเสาร์ ที่ 30 เดือนมิถุนายน พ.ศ. 2527 เวลา 13:30 น.

    Code

    Download

    ตัวเก่ามันไม่ค่อยเวิร์ค เลยเปลี่ยนเป็นตัวนี้ไปเลยละกันครับ
    Date : 2010-02-04 15:57:06 By : DownsTream
     


     

    No. 156



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    Quote:
    มีเรื่องถามหน่อยนะครับคุณเจ้าของกระทู้

    ืคือผมอยากอ่านข้อมูลไฟล์ csv แล้วต้องเอาไปเก็บลง DB แต่ข้อมูลที่เป็น ภาษาไทยมีปัญหาคือเป็นค่าว่างๆหรือไม่ก็เป็นตัวต่างดาว จะพอมีวิธีการปัญหานี้ไม่ครับ

    ผมลองใช้วิธี

    Code
    $str = mb_convert_encoding($str, "TIS-620","UTF-8");


    แต่ดันมี Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unknown encoding "TIS-620"

    เลยพอมีวิธีแก้ไขปัญหานี้บ้างมัยครับ


    มันต้องเป็น TIS620 กะ UTF8 หรือเปล่าครับ
    ผมไม่แน่ใจ ถ้ายังไม่ใช่คงต้อง รอผู้รู้ท่านอื่นมาช่วยอีกทีนะครับ (แหะๆ)
    แต่ว่ามาถูกทางแล้วครับ เพราะใน .csv หรือ .xls(Excel 97-2003 Workbook) มันไม่ได้เก็บเป็น UTF8 ครับ
    Date : 2010-02-06 07:51:51 By : nut_t02
     


     

    No. 157



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    Quote:
    Class thai date format v2.0.0 คลอดแล้วครับ เวอร์ชันแรกเขียนแบบ มั่วๆ ไปหน่อย ลองเอาเวอร์ชั่นใหม่ไปทดสอบดูนะครับ

    ผมได้เอา format ของ excel มาเขียนเป็น class php

    formate ที่ผมได้จัดทำไว้ภายใน class

    :: Excel format date time::
    1 ->> 30/6/27
    2 ->> 30/6/2527
    3 ->> 30/6/2527 13:30 น.
    4 ->> 30/6/2527 1:30 PM
    5 ->> ๓๐/๐๖/๒๗
    6 ->> ๓๐/๐๖/๒๕๒๗
    7 ->> ๓๐/๐๖/๒๕๒๗ ๑๓:๓๐ น.
    8 ->> 30 มิ.ย. 2527
    9 ->> 30 มิถุนายน 2527
    10 ->> ๓๐ มิ.ย. ๒๕๒๗
    11 ->> ๓๐ มิถุนายน ๒๕๒๗
    12 ->> 30 May 27
    13 ->> 30 May 2527

    :: DS_Ohm format date time::
    1 ->> วันเสาร์ ที่ 30 เดือนมิถุนายน พ.ศ. 2527
    2 ->> วันเสาร์ ที่ 30 เดือนมิถุนายน พ.ศ. 2527 เวลา 13:30 น.

    Code

    Download

    ตัวเก่ามันไม่ค่อยเวิร์ค เลยเปลี่ยนเป็นตัวนี้ไปเลยละกันครับ


    ขอบคุณครับเป็นแนวคิดที่ดีครับ แนวคิดที่ดีที่ว่าคือ
    เราควรจะพยายามเขียน common โปรแกรมให้เหมือนหรือเกือบคล้ายโปรแกรมอื่นๆ ที่ใช้อยู่ในชีวิตประจำวันได้ยิ่งดี
    ดูแล้วมันแบบว่า เออมันมาตรฐานเดียวกัน เพราะโปรแกรมสำเร็จรูปใหญ่ๆ ทั่วไป เค้ามีการวิจัยพัฒนามาแล้ว
    ว่ารูปแบบนี้คนส่วนใหญ่จะต้องใช้ หรือต้องการให้มี feature นี่ นั่น

    มองว่าเราลอกเลียนแบบความคิดเค้าก็ได้ครับ แล้วเอามาพัฒนาต่อยอด
    สำหรับคนที่มี common function มากมายที่ เวบนี้ เค้าเอามาแชร์กันครับ
    บางคน download จากนี่ไปก็ใช้ได้เลยครับไม่ต้องเขียนเอง
    ลองๆดู ครับ

    เด๋วบ่ายๆ จะแวบเข้ามาลอง Class thai date format v2.0.0 ครับ หุหุ
    ไปทำงานก่อนครับ เฟี้ยววววว
    Date : 2010-02-06 08:03:36 By : nut_t02
     


     

    No. 158



    โพสกระทู้ ( 22 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อืม ดีครับ
    Date : 2010-02-14 15:47:58 By : comboat
     


     

    No. 159



    โพสกระทู้ ( 9 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เขียนแบบ OOP ก็ดีนะคะ
    แต่ว่า php มันไม่ได้เป็น oop มาแต่แรกหนะสิคะ อย่างเช่นระบบตัวแปรปกติ ก็ไม่ใช่ oop
    ซึ่งต่างจาก JavaScript ซึ่งประกาศตัวแปรปุ๊บก็ออกมาเป็น oop ปั้บเลย
    เข้าใจถูกไหมหว่า?
    Date : 2010-02-15 16:01:08 By : pla
     


     

    No. 160



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    ผมได้รวบรวม class ที่เขียนไว้ในเว็บนี้นะครับ มี demo แล้วก็ download โค้ดไปศึกษาต่อได้ครับ

    ถ้าท่านใดศึกษาแล้วคิดว่า class ผมควรปรับปรุงตรงไหน ก็ add msn มาคุยกันได้นะครับ

    ผมก็เพิ่มหัดเขียนเป็น object ไม่รู้ว่าที่ทำไว้ดีแค่ไหน ขอความกรุณาท่านที่มีประสบการณ์

    และมีความรู้ให้คำชี้แนะด้วยนะครับ

    DS_Ohm site
    Date : 2010-02-18 00:48:02 By : DownsTream
     


     

    No. 161



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผมอยากทราบวิธีการรับค่าจาก textbox แล้วสืบทอดไปใช้งาน
    เช่น class A ให้คูณ
    class B ให้บวก
    class C ให้ลบกัน
    ครับ ขอตัวอย่างโคว์ด้วยครับ
    จะไม่ลืมพระคุณครับ
    (OOP)
    Date : 2010-02-19 02:05:25 By : werayut_com
     


     

    No. 162



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนใจมากเลยครับ
    Date : 2010-03-05 20:47:57 By : boyo25
     


     

    No. 163



    โพสกระทู้ ( 18 )
    บทความ ( 0 )



    สถานะออฟไลน์



    Date : 2010-03-07 12:44:14 By : sirsnake_knight
     


     

    No. 164



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณครับ -D:
    Date : 2010-03-27 21:09:22 By : babycorn
     


     

    No. 165



    โพสกระทู้ ( 545 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ฝึกทำอยู่ครับ เอามา ทำ โปรเจคคับ ใช่แนะนำด้วยนะครับ
    Date : 2010-03-31 15:43:27 By : tangsupap
     


     

    No. 166



    โพสกระทู้ ( 42 )
    บทความ ( 0 )



    สถานะออฟไลน์



    Date : 2010-04-07 14:49:23 By : lukchang
     


     

    No. 167



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    Quote:
    ผมอยากทราบวิธีการรับค่าจาก textbox แล้วสืบทอดไปใช้งาน
    เช่น class A ให้คูณ
    class B ให้บวก
    class C ให้ลบกัน
    ครับ ขอตัวอย่างโคว์ด้วยครับ
    จะไม่ลืมพระคุณครับ
    (OOP)

    ple No.161


    ก่อนอื่นคุณต้องแยกแยะก่อนว่า อะไรควรจะเป็น class อะไรควรจะเป็น method
    ถ้าผมยกตัวอย่างว่า

    ผมมีตะกร้า 1 ใบเอาไว้ใส่อะไรก็ได้

    จะมองเป็น OOP ได้ว่า
    Code (PHP)
    <?php
    
    class ตะกร้า {
        public function ใส่ (ของที่จะใส่ตะกร้า){
            ...
        }
    }
    
    $ตะกร้าของฉัน = new ตะกร้า();
    $ตะกร้าของฉัน->ใส่(ส้ม);
    $ตะกร้าของฉัน->ใส่(กล้วย);
    
    ?>
    


    ทีนี้จากตัวอย่างเรื่องการคำนวณของคุณจะแยกเป็น class บวก ลบ คูณ หาร ก็คงจะไม่เหมาะนะครับ
    แต่ถ้าทำเป็นแบบนี้จะดีกว่า แต่ก็มีแบบอื่นๆ อีกนะครับ
    Code (PHP)
    <?php
    
    class calculate {
    	public function cal($operator, $num1, $num2){
    		print number_format($this->$operator($num1, $num2), 2, ".", ",")."<br />";
    	}
    	
    	private function plus($num1, $num2){
    		return $num1 + $num2;
    	}
    	
    	private function minus($num1, $num2){
    		return $num1 - $num2;
    	}
    	
    	private function mutiply($num1, $num2){
    		return $num1 * $num2;
    	}
    	
    	private function div($num1, $num2){
    		return $num1 / $num2;
    	}
    }
    
    $cal = new calculate();
    $cal->cal("plus", 1000.0, 4.0);
    $cal->cal("minus", 1000.0, 4.0);
    $cal->cal("mutiply", 1000.0, 4.0);
    $cal->cal("div", 1000.00, 4.0);
    
    ?>
    

    Date : 2010-04-11 09:17:56 By : nut_t02
     


     

    No. 168



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    Quote:
    เขียนแบบ OOP ก็ดีนะคะ
    แต่ว่า php มันไม่ได้เป็น oop มาแต่แรกหนะสิคะ อย่างเช่นระบบตัวแปรปกติ ก็ไม่ใช่ oop
    ซึ่งต่างจาก JavaScript ซึ่งประกาศตัวแปรปุ๊บก็ออกมาเป็น oop ปั้บเลย
    เข้าใจถูกไหมหว่า?

    pla No.159


    ผมว่าคุณเข้าใจผิดนะครับ
    ผมว่าจะดูเป็นไม่เป็น OOP ต้องดูโคดของโปรแกรมโดยรวมทั้งหมด
    ว่าเขียนลักษณะยังไง เพราะจะเขียนให้เป็น หรือ ไม่เป็น OOP ก็สามารถเขียนได้ทั้งนั้นครับ
    Date : 2010-04-11 09:26:25 By : nut_t02
     


     

    No. 169



    โพสกระทู้ ( 4 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    เยี่ยมเลยครับ
    Date : 2010-04-22 10:21:54 By : heart100
     


     

    No. 170



    โพสกระทู้ ( 581 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    จาก No. 132 PHP-Design-Patterns มีความสำคัญกับการ พัฒนา โปรแกรม อย่างไรครับ ช่วย เพิ่มรอยหยักในสมองให้ผม ด้วยครับ...(ไม่ได้เรียนมานะครับ)
    Date : 2010-04-22 16:50:56 By : nilas
     


     

    No. 171



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    ยังไงถ้าอยากเรียน PHP OO ให้เก่งอยากให้ศึกษา หรือทบทวนการภาษา java ให้มากๆครับ และอ่าน php manual จาก php.net ประกอบ จะเพิ่มพูนความรู้มากขึ้น นะแล

    ตัวอย่างการเขียน PHP OO โดยไม่ได้เขียนจาก Biult-In PHP ครับ แต่เขียนจาก adodb จาก โปรเจค จริงครับ
    <?php
    	
    	ini_set('error_reporting', E_ALL);
    	ini_set('display_errors' ,0);
    	ini_set('log_errors', 1);
    	
    	require_once 'blog_config.php';
    	require_once LIBARIES.'/Smarty2.1.1/Smarty.class.php';
    	require_once LIBARIES.'/adodb5/adodb.inc.php';
    	require_once LIBARIES.'/PEAR/File.php';
    
    	class Template extends Smarty{
    		function __construct(){
    			$this->Smarty();
    			$this->template_dir = TEMPLATE.'/templates';
    			$this->compile_dir = TEMPLATE.'/templates_c';
    			$this->config_dir = TEMPLATE.'/configs';
    			$this->cache_dir = TEMPLATE.'/cache';		
    			$this->assign('app_name', 'template');
    
    		}
    	}// end Template
    	
    	class Utilities{
    		public function displayDate($x){
    			$i = 0;
    			$date_m = array(
    				
    				' มกราคม ',' กุมภาพันธ์ ',' มีนาคม ',' เมษายน ',' พฤษภาคม ',' มิถุนายน ',
    				' กรกฎาคม ',' สิงหาคม ',' กันยายน ',' ตุลาคม ',' พฤศจิกายน ',' ธันวาคม '
    			);
    			$date_array = explode('-', $x);
    			$y = $date_array[$i];
    			$m = $date_array[$i+1]-1;
    			$d = $date_array[$i+2];
    			$m = $date_m[$m];
    			$displayDate = "";
    			$displayDate .= $d;
    			$displayDate .= ' '.$m;
    			$displayDate .= ' '.(int)$y + 543;
    
    			return $displayDate;
    		}
    	}// end Utilities
    
    	class BlogAdmin extends Utilities{
    
    	//	private $db = NULL;
    	protected $db = NULL;
    
    	// connect Db
    	public function __construct(){
    			$this->db = &ADONewConnection("mysql");
    			$this->db->debug=false;
    			$this->db->SetFetchMode="ADODB_FETCH_ACCOC";
    			$this->db->Connect(PREHOST,PREUSR,PREPWD,DB);
    			$this->db->Execute('SET NAMES tis620');
    			return $this->db;
    		}
    	// เพิ่ม Blog ใหม
    	public function countBlogs($date_today){
    				$preStatment = $this->db->Prepare(
    							"SELECT * FROM ".PREFIX."_blog ".
    							"WHERE date_blog = ? ".
    				" ");
    				return $this->db->Execute($preStatment, array($date_today))->RecordCount();
    		}
    
    	public function insertNewBlogToDb($title, $detail, $date_today, $time_today){
    				$preStatment = $this->db->Prepare(
    							"INSERT INTO ". PREFIX."_blog ".
    							"VALUES('', ?, ?, ?, ?) ".
    				" ");
    				return $this->db->Execute($preStatment, array($title, $detail, $date_today, $time_today));
    		}
    	//แก้ไข Blog
    	public function updateBlogFormDb($title_edit, $detail_edit, $id_blog){
    		
    				$preStatment = $this->db->Prepare(
    							"UPDATE ".PREFIX."_blog ".
    							"SET title_blog= ?, detail_blog= ? ".
    							"WHERE id_blog = ?".
    				" ");
    				return $this->db->Execute($preStatment, array($title_edit, $detail_edit, $id_blog));
    		}
    
    	public function queryFormDb($id_blog){
    		
    			$i = 0;
    			$list_arr = array();
    			$preStatment = $this->db->Prepare(
    							"SELECT * FROM ".PREFIX."_blog ".
    							"WHERE id_blog = ? ".
    			" ");
    
    			$rs = $this->db->Execute($preStatment, array($id_blog));
    			while($field=$rs->FetchRow()){
    				$list_arr[$i]['id_blog'] = $field['id_blog'];
    				$list_arr[$i]['title_blog'] = $field['title_blog'];
    				$list_arr[$i]['detail_blog'] = $field['detail_blog'];
    				$list_arr[$i]['date_blog'] = $this->displayDate($field['date_blog']);
    				$list_arr[$i]['time_blog'] = $field['time_blog'];
    			++$i;
    			}
    
    			return $list_arr;
    		}
    	// ลบ blog
    	public function delBlogById($id_blog){
    		
    			$preStatement = $this->db->Prepare(
    							"DELETE FROM ".PREFIX."_blog ".
    							"WHERE id_blog= ?".
    			" ");
    			return $this->db->Execute($preStatement, array($id_blog));
    		}
    
    	// แสดง blog ทั้งหมด
    	public function displayAllBlogs(){
    
    			$i =0;
    			$list_arr = array();
    			$preStatment = $this->db->Prepare(
    							"SELECT * FROM ".PREFIX."_blog ".
    							"ORDER BY id_blog desc ".
    			" ");
    			$rs = $this->db->SelectLimit($preStatment,20,0);
    			while($field=$rs->FetchRow()){
    				$list_arr[$i]['id_blog'] = $field['id_blog'];
    				$list_arr[$i]['title_blog'] = $field['title_blog'];
    				$list_arr[$i]['detail_blog'] = $field['detail_blog'];
    				$list_arr[$i]['date_blog'] = $this->displayDate($field['date_blog']);
    				$list_arr[$i]['time_blog'] = $field['time_blog'];
    			++$i;
    			}
    
    			return $list_arr;
    		}
    	// show replace word
    
    	public function display_replace_word(){
    			
    			$return_replace_word = ' ';
    			$i = 1;
    			$File = new File();
    			$word_replace = $File->read(ROST_CK_REPLACE, filesize(ROST_CK_REPLACE));
    			$rudeword_replace = explode("\n", trim($word_replace));
    			$data = $File->read(RPE_CK_RUDES, filesize(RPE_CK_RUDES));
    			$rudeword = explode("\n", trim($data));
    
    			while($i < sizeof($rudeword_replace)+1){
    				if($i % 5 == 0 /* && $i != 0 */){
    					$replace_line = " \n<br> ";
    					// $replace_line = " \n<br /> ";
    				}else{
    					$replace_line = " ";
    				}
    				$return_replace_word .= " ".$rudeword[$i]." ".$rudeword_replace[$i]." ".$replace_line;
    
    				++$i;
    			}
    
    			return $return_replace_word;
    		}
    	} // end BlogAdmin
    
     class IndexBlog extends BlogAdmin{
    
    		public function queryForIndex($id_blog = NULL){
    
    			$i = 0;
    			$list_arr = array();
    			
    			if(isset($id_blog) && $id_blog != ''){
    
    				$pre_stmt = $this->db->Prepare(
    							"SELECT * FROM ".PREFIX."_blog ".
    							"WHERE id_blog = ?".
    				" ");
    				$rs = $this->db->Execute($pre_stmt, array($id_blog));
    
    			}else{
    
    				$pre_stmt = $this->db->Prepare(
    							"SELECT * FROM ".PREFIX."_blog ".
    						    "ORDER BY id_blog DESC ".
    				" ");
    				$rs = $this->db->SelectLimit($pre_stmt, 10 ,0);
    			}
    
    			while($field = $rs->FetchRow()){
    				
    				$list_arr[$i]['id_blog'] = $field['id_blog'];
    				$list_arr[$i]['title_blog'] = $field['title_blog'];
    				$list_arr[$i]['detail_blog'] = $field['detail_blog'];
    				$list_arr[$i]['date_blog'] = $this->displayDate($field['date_blog']);
    				$list_arr[$i]['time_blog'] = $field['time_blog'];
    
    		//count comment
    				$pre_stmt = $this->db->Prepare(
    								"SELECT * FROM ".PREFIX."_comment ".
    								 "WHERE ref_id_blog = ? ".
    				" ");
    				$list_arr[$i]['comments'] = $this->db->Execute($pre_stmt, array($field['id_blog']))->RecordCount();
    
    				if($id_blog){
    					
    					$list_arr[$i]['title_page'] = $list_arr[$i]['title_blog'];
    				}
    
    			++$i;
    
    			}
    
    			return $list_arr;
    		}
    // เพิ่ม/query comments
    		public function addComment($name, $detail, $id_blog){
    
    			$date_today = date("Y-m-d");
    			$time_today = date("H:i:s");
    			$pre_stmt = $this->db->Prepare(
    							  "INSERT INTO ".PREFIX."_comment".
    							  " VALUES('', ?, ?, ?, ?, ?)".
    			" ");
    			return $this->db->Execute($pre_stmt, array($name, $detail, $date_today, $time_today, $id_blog));
    		}
    
    		public function queryAllComment($id_blog){
    			
    			$i = 0;
    			$list_arr = array();
    			$pre_stmt = $this->db->Prepare(
    								  "SELECT * FROM ".PREFIX."_comment ".
    								  "WHERE ref_id_blog = ? ".
    								  "ORDER BY id_comment DESC ".
    			" ");
    			$rs = $this->db->SelectLimit($pre_stmt, 20, 0, array($id_blog));
    			while($field = $rs->FetchRow()){
    				
    				$list_arr[$i]['id_comment'] = $field['id_comment'];
    				$list_arr[$i]['name_comment'] = $field['name_comment'];
    				$list_arr[$i]['detail_comment'] = $field['detail_comment'];
    				$list_arr[$i]['date_comment'] = $this->displayDate($field['date_comment']);
    				$list_arr[$i]['time_comment'] = $field['time_comment'];
    				$list_arr[$i]['ref_id_blog'] = $field['ref_id_blog'];
    			++$i;
    
    			}
    			
    			return $list_arr;
    		}
    
    // ลบ comment
    
    		public function delComment($id_comment){
    		
    			$pre_stmt = $this->db->Prepare(
    						"DELETE FROM ".PREFIX."_comment ".
    						"WHERE id_comment = ? ".
    			" ");
    			return $this->db->Execute($pre_stmt, array($id_comment));		
    		}
    	} // end IndexBlog
    ?>
    

    Date : 2010-04-30 22:29:43 By : mrjidjad
     


     

    No. 172



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    ตัวอย่างการใช้งาน M(Model) อ่อมันก็คือ Class ครับ ส่วนตัวที่จะนำเสนอต่อก็ คือ C (Controller) ครับ
    <?php
    	
    	header('Content-type: text/html; charset: tis620');
    	require_once 'blog_function.php';
    	session_start();
    
    	$page_admin = true;
    	$form1_hide = false;
    	$date_today = date("Y-m-d");
    	$time_today = date("H:i:s");
    	$error = array();
    	$success = array();
    	$blog =  new BlogAdmin();
    	$utilities = new Utilities();
    	$template = new Template();
    
    	$template->assign('page_admin', $page_admin);
    	
    // login โดย admin
    	if($_POST){
    		if(isset($_POST['user_login']) && isset($_POST['pass_login'])){
    
    			$user_login = $_POST['user_login'];
    			$pass_login = $_POST['pass_login'];
    
    			if($user_login == 'admin' && $pass_login == 1234){	
    				
    				$_SESSION['sess_userid'] = session_id();
    			}else{	
    				
    				$error[]= ' ชื่อ หรือรหัสผ่านไม่ถูกต้อง ! ! ';			
    			}
    		}
    	}
    
    // เพิ่ม Blog ใหม่้
    	if($_GET['do'] == 'add_blog' && $_SESSION['sess_userid'] == session_id()){
    
    		$thai_date = $utilities->displayDate($date_today);
    
    		if(isset($_POST['title']) && $_POST['title'] != ''){
    			
    			$title = $_POST['title'];			
    			$detail = checkRude2($_POST['detail']);
    			// $detail = $_POST['detail'];
    			$countRows = $blog->countBlogs($date_today);
    
    			if($countRows > 10){ //กำหนดไว้ 10 blogs
    			
    				$error[] = ' ไม่อนุญาติให้เพิ่ม Blog ! ! ';
    			}else{
    
    				$rs = $blog->insertNewBlogToDb($title, $detail, $date_today, $time_today);
    				if(!$rs){
    					
    					$error[] = " ไม่สามารถเพิ่มข้อมูลได้ ! ! ";
    				}else{
    					
    					$success[] = " เพิ่มข้อมูลเรียบร้อยแล้ว ! !  ";
    				}
    			}
    		}
    		$date_today = $utilities->displayDate($date_today);	
    		$template->assign('add_blog',true);	
    		$template->assign('date_today',$thai_date);
    		$template->assign('time_today',$time_today);
    	}
    
    //แก้ไข Blog
    	if($_GET['do'] == 'edit' && isset($_GET['id_blog'])){
    
    		$id_blog = $_GET['id_blog'];
    		$list_arr = array();
    	
    		if(isset($_POST['title_edit']) && $_POST['title_edit'] != ''){
    
    			$title_edit = $_POST['title_edit'];
    			$detail_edit = checkRude2($_POST['detail_edit']);
    			$rs = $blog->updateBlogFormDb($title_edit, $detail_edit, $id_blog);
    			if(!$rs){
    					
    				$error[] = " ไม่สามารถแก้ไขข้อมูลได้ ! ! ";
    			}else{
    					
    				$success[] = " แก้ไขข้อมูลเรียบร้อยแล้ว ! !  ";
    			}
    		}
    	
    		$list_arr = $blog->queryFormDb($id_blog);
    		$template->assign("edit_blog", true);
    		$template->assign('list_arr2', $list_arr);
    	}
    
    // ลบ blog
    	if($_GET['do'] == 'del' && isset($_GET['id_blog'])){
    
    		$id_blog = $_GET['id_blog'];
    		$rs = $blog->delBlogById($id_blog);
    		if(!$rs){
    
    			$error[] = " ไม่สามารถลบข้อมูลได้ ! ! ";
    		}else{
    		
    			$success[] = " ลบข้อมูลเรียบร้อยแล้ว ! !  ";
    		}
    	}
    
    // แสดง blog ทั้งหมด
    	if($_SESSION['sess_userid'] == session_id()){
    
    		$list_arr = array();
    		$list_arr = $blog->displayAllBlogs();
    		$template->assign('display_blog', true);
    		$template->assign('list_arr', $list_arr);	
    	}
    
    // ตรวจสอบ session
    	if($_SESSION['sess_userid'] != session_id()){
    
    		$error[] = ' คุณยังไม่ได้ล๊อกอิน ! ! ';
    	}else{
    	
    		$form1_hide = true;
    	}
    
    	if(sizeof($error) != 0){
    
    		$template->assign('error', $error);		
    	}else{
    
    		$template->assign('success', $success);
    	}
    
    	// show replace word
    if($_GET['do'] == 'replace_word'){
    	$return_replace_word = $blog->display_replace_word();
    	$template->assign('return_replace_word',$return_replace_word);
    }
    
    
    	$template->assign("form1_hide" ,$form1_hide);
    	$template->assign('title', TITLE);
    	$template->assign('header_tag', HEADER_TAG);
    	$template->assign('libs', LIBARIES);
    	$template->display('admin.tpl', 'template'); 
    
    	// end code
    ?>
    


    และนี่คือส่วน V(View) ครับ
     {include file="header.tpl"}
    
    		<div id="alert">
    			{if $error neq ''}
    				{foreach key=key item=item from=$error}
    
    					{$item}
    				{/foreach}
    
    			{/if}
    
    			{if $success neq ''}
    				{foreach key=key item=item from=$success}
    
    					{$item}
    				{/foreach}
    
    			{/if}
    		</div>
    
    		<h3>{$header_tag}</h3>
    
    		[<a href="?do=add_blog">เพิ่ม blog ใหม่</a>]
    		[<a href="?do=replace_word"> บล๊อกคำ </a>]
    		[<a href="blog_logoff.php?logoff=yes">ออกจากระบบ</a> ]
    
                    <br>
    
    		{if $display_blog}
    		<!-- แสดง blog -->
    		<div id="display_blog">
    		
    			<div id="content">
    				<div>วันที่เขียน</div>
    				<div>หัวข้อ</div>
    				<div> แก้ไข </div>
    				<div> ลบ </div>
    			</div>
    			<br clear="left">
    
    			<div id="content">
    			{foreach key=key item=item from=$list_arr}
    				<div> {$item.date_blog} </div>
    				<div> <a href="index.php?id_blog={$item.id_blog}" target="_blank">{$item.title_blog}</a></div>
    				<div>[<a href="?do=edit&id_blog={$item.id_blog}" target="_parent">แก้ไข</a>]</div>
    				<div>[<a href="?do=del&id_blog={$item.id_blog}" onClick="return confirm(' คุณต้องการลบ Blog นีเหรือไม่ ');" target="_parent">ลบ</a>]</div><br>
    			{/foreach}
    			</div>
    			
    		</div>
    		
    		{/if}
    		<br clear="left">
    		<div id="form1">
    
    			<br clear="left">
    			<!-- login -->
    			
    			<form action="" method="post">
    				ลงชื่อ<input type="text" name="user_login" > <br>
    				รหัสผ่าน <input type="password" name="pass_login"><br>
    
    				<input type="submit" value="ส่ง">
    				<input type="reset" value=" เริ่มใหม่">
    			</form>
    		</div>
    		<br clear="all">
    
    		{if $add_blog}
    		<!-- เพิ่ม Blog -->
    			<div id="form2">
    			<h3> เพิ่ม Blog ใหม่ </h3>
    			
    				<form id="fm" action="" method="post">
    					หัวข้อ <input id="name" type="text" name="title"><br>			
    					เนื้อหา<textarea id="detail" name="detail" cols="55"></textarea><br>
    					วันที่ {$date_today} {$time_today}<br>
    					<input id="fs" type="button" value=" เพิ่ม ">
    					<input type="reset" value="เริ่มใหม่">
    				</form>
    			</div>
    		{/if}
    
    		{if $edit_blog}
    		<!-- แก้ไข Blog -->
    			<div id="form2">
    			<h3> แก้ไข Blog ใหม่ </h3>
    				{foreach key=key item=item from=$list_arr2}
    					<form id="fm" action="" method="post">
    						หัวข้อ <input id="name" type="text" name="title_edit" value="{$item.title_blog}"><br>
    						เนื้อหา<textarea id="detail" name="detail_edit" cols="55">{$item.detail_blog}</textarea><br>
    						วันที่ {$item.date_blog} {$item.time_blog}<br>
    						<input id="fs" type="button" value=" แก้ไข ">
    						<input type="reset" value="เริ่มใหม่">
    					</form>
    				{/foreach}
    			</div>
    		{/if}
    
    		{if $return_replace_word}
    		<!-- word replace -->
    			<h3> คำหยาบที่ค้นหาเจอ </h3>
    			<ol>
    				{foreach key=key item=item from=$return_replace_word}
    					<li>{$item}</li>
    				{/foreach}
    			</ol>
    		{/if}
    
    		{if $form1_hide}
    
    			{literal}
    			<script type="text/javascript">
    				(function($){
    					$(document).ready(function(){
    						
    						$("#form1").hide();
    
    
    						$("input:button#fs").click(function(){
    						
    							var title = $("#name").val();
    							var detail = $("#detail").val();
    							if(title.length == 0 || detail.length == 0){
    							
    								alert( ' กรุณาใส่ข้อหัวข้อด้วยค่ะ ' );
    								$("#name").focus().select();
    							}else{
    							
    								return $("#fm").submit();
    							}
    						});
    					});
    				})(jQuery);
    			</script>
    			{/literal}
    		{/if}
    
    {include file="footer.tpl"}
    


    ยังไงถ้าอยากเขียน PHP OO ก็อยากฝากให้ศึกษาเรื่องของ MVC ครับ สำหรับ PHP Programmer เก่งๆ ทุกท่าน
    Date : 2010-04-30 23:01:18 By : mrjidjad
     


     

    No. 173



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์


    55+ ยากจังแฮ่ะ แต่ต้องรู้เรื่องให้ได้
    Date : 2010-05-01 01:09:45 By : t1u2m3
     


     

    No. 174



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    ขอบคุณความรู้จากเหล่าเทพนะครับ กำลังศึกษาแนวคิดและทดลองทำอยู่เลย
    Date : 2010-05-14 14:03:09 By : hatori
     


     

    No. 175

    Guest


    คับๆๆๆ สู้เค้านะ
    Date : 2010-05-20 00:09:19 By : นิส
     


     

    No. 176



    โพสกระทู้ ( 15 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณความรู้จากเหล่าเทพนะครับ กำลังศึกษาแนวคิดและทดลองทำอยู่เลย
    Date : 2010-05-21 17:22:21 By : superhack
     


     

    No. 177



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณพี่ๆทั้ง หลายที่ได้แบ่งปัน ความรู้
    Date : 2010-05-24 16:19:49 By : boonp
     


     

    No. 178



    โพสกระทู้ ( 708 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    กระทู้ดี +1 ไปเลยคับท่าน
    Date : 2010-06-02 06:21:50 By : kerb
     


     

    No. 179



    โพสกระทู้ ( 3,144 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    แวะมาดู oop ก็มันดีเนอะ
    Date : 2010-06-14 09:50:30 By : tungman
     


     

    No. 180



    โพสกระทู้ ( 1,603 )
    บทความ ( 1 )



    สถานะออฟไลน์


    แง่ว ยิ่งมาดู OOP ของ PHP ยิ่ง แอนตี้ PHP เข้าไปใหญ่ อันนี้ความเห็นส่วนตัวค่ะ
    คือถ้าจะเขียน OOP ให้เต็มประสิทธิภาพกันจริงๆ programmer ควรโดนบังคับโดยปริยาย
    ให้เขียนแบบ OOP เท่านั้น และควรมี FRAMEWORK ที่เป็น OOP
    และครอบคลุม CODE ในการใช้งานจริงในทุกส่วน
    อันนี้อ้างมาจาก JAVA กับ .NET ค่ะ

    ก็ยังมีความรุสึกว่าเป็น OOP แบบกระต่ายสามขาอะค่ะ
    จะโดนรุมประชาทัณฑ์มะนี้ แต่คิดว่าอย่างนั้นจริงๆค่ะ ยิ่งกับภาษาที่ไม่ Strong type
    เวลาคิดกรอบความคิดจะเป็นอีกแบบ มั้งคะ

    คืออยากจะบอกว่า ถ้าอยากจะฝึกเขียน OOP ไปเขียนกะ JAVA ไม่ก็ .NET
    จะดีกว่าปะคะเพราะ DESIGN มาเพื่อ OOP อยู่แล้ว
    แต่คุณ PHP นี่งอกส่วนนี้ออกมา แบบไม่รุดิคะ เป็น OOP ที่ขัดๆมากเลย

    ปากเสียอีกแระเรา ^^
    ถ้าทำให้พี่ๆเพื่อนๆเคือง ก็ขออภัยมา ณ ที่นี้ด้วยค่ะ

    สาเหตุที่ ANTI PHP
    1. ตัวแปรไม่ strong type
    2. code มักจะปนกันไป คือมีทั้ง UI ,BUSINESS LOGIC ทั้ง DATA ACCESS LAYER
    ครบเลยใน form เดียวและมักจะเป็นอย่างนั้นเสมอๆ
    คือโดนฝึกมาให้มองสามส่วนนี้ให้ออกและแยกให้เด็ดขาด
    พออ่าน code php ทีรัย จะอื้ออีกแระ แต่เข้าใจว่าข้อดีคือพัฒนาง่ายและเร็วค่ะ
    อันนี้ก็ความเห็นส่วนตัวล้วนๆ ยินดีรับทุกคำวิจารณ์ค่ะ
    Date : 2010-06-20 15:08:18 By : blurEyes
     


     

    No. 181

    Guest


    ลองดูโค้ด java กับ .net โดยไม่ใช้ editor ตัวช่วยดูครับ จะรู้ว่าทำไม php ถึงเป็นที่รักของเว็บโปรแกรมเมอร์ทั่วโลก
    ข้อเสียของ php อย่างนึงก็คือไม่ค่อย autocomplete ชัดเจน อันนี้เป็นข้อเสียของ weak type อาจจะเป็นข้อด้อยที่ทำให้ใช้งานไม่สะดวกอยู่บ้าง

    แต่ถ้าจะมองในอีกแง่หนึ่งแล้ว weak type จะมีความสามารถสูงกว่า strong type อยู่มาก ทำให้การโปรแกรมมิ่งเป็นในเชิงตรรกกะมากกว่า มากกว่าพวก java หรือ .net ซึ่ง strong type โปรแกรมเมอร์จะเสียเวลาในการเขียนโครงสร้างภาษา เสียเวลาแก้ปัญหาในส่วนที่ไร้ประโยชน์จำนวนมาก อย่างจะส่งตัวแปรชนิดอะไรกันแน่ไปในอีกตัวแปรหนึ่ง และการสร้าง array สักตัวนึงต้องผ่านการ include lib การแทรกโครงสร้างของภาษานับ 10 บรรทัด แต่ถ้าเป็น php ใช้แค่บรรทัดเดียว

    พลังของ php คือโค้ดสั้นอ่านเข้าใจง่ายถ้าใช้ framework ที่ดีและออกแบบคำสั่งดีแล้วจะเขียนได้เร็วกว่าพวก java .net นับสิบเท่าครับ แต่เครื่องมือที่ดีอย่าง php ความง่ายเกินไปจะทำให้มีคนหลายประเภทมาใช้ครับ ต่างกับภาษา java ซึ่งคนที่เขียนได้ก็เป็น advance programmer ในระดับนึงแล้ว จึงค่อนข้างเขียนเป็นระเบียบ
    แต่ถ้าคนระดับเขียน java มาเขียน php แล้วจะรู้ว่า java กับ .net มันยังมีหลายๆ อย่างเทียบ php ไม่ได้ (ไม่รวม editor นะ) อิๆ
    Date : 2010-06-20 19:20:52 By : num
     


     

    No. 182



    โพสกระทู้ ( 1,603 )
    บทความ ( 1 )



    สถานะออฟไลน์


    Quote:
    ลองดูโค้ด java กับ .net โดยไม่ใช้ editor ตัวช่วยดูครับ จะรู้ว่าทำไม php ถึงเป็นที่รักของเว็บโปรแกรมเมอร์ทั่วโลก

    อันนี้เคยเขียนแล้วค่ะ โดนบังคับเลยไม่ได้ยากอะไร ใช้ notepad++ ที่ syntax Highlight ธรรมดานี่แหละค่ะ
    ทุกวันนี้อาจารย์ที่สอน ท่านก้อเขียน ASP.NET ด้วย Notepad++ อยุ่ framework 1.1 ด้วย
    แต่ในเมื่อมีของดีๆให้ใช้ อย่าง Visual studio ก้อใช้ดิคะ อันนี้ไม่น่าเกี่ยวขึ้นกับความเคยชินมากกว่าค่ะ

    Quote:
    โปรแกรมเมอร์จะเสียเวลาในการเขียนโครงสร้างภาษา เสียเวลาแก้ปัญหาในส่วนที่ไร้ประโยชน์จำนวนมาก

    ก็ไม่ได้เสียอะไรนี่คะ เรามีโครงสร้างทุกแบบที่ใช้กันทั้งไม่ว่าจะซับซ้อนหรือยืดหยุ่นยังไง
    เช่น hashtable stack เรื่อยจนไปถึง auto optimize tree ให้ใช้ง่าย ๆ
    เรียกมาด้วย using นี่ก็บรรทัดเดียว ที่เสียเวลาคือคุณต้องไปเรียน
    และเข้าใจโครงสร้างข้อมูลว่าจะใช้แบบไหนเสียมากกว่าค่ะ
    ส่วนที่ไร้ประโยชน์ไม่ทราบสิคะ มันคือยังไงอันนี้ขึ้นกับทักษะของโปรแกรมเมอร์มากกว่ามังคะ

    Quote:
    และการสร้าง array สักตัวนึงต้องผ่านการ include lib การแทรกโครงสร้างของภาษานับ 10 บรรทัด

    แง่วตรงหนัยอะคะ นี่ก้อบรรทัดเดว
    Code (C#)
     int[] myArray = new int[] {1,2,3};
    

    Quote:
    พลังของ php คือโค้ดสั้นอ่านเข้าใจง่ายถ้าใช้ framework ที่ดีและออกแบบคำสั่งดีแล้วจะเขียนได้เร็วกว่าพวก java .net นับสิบเท่าครับ

    อันนี้ก้อเหมือนกันค่ะ เพียงแต่ไม่ได้เลือกที่จะเขียนให้สั้นสุดๆ ปกติจะเขียนให้คนด้วยกันอ่านง่ายๆ
    code ที่เขียนน่าจะยาวเท่าๆ กันค่ะ เรื่องความเร็วพราวว่าอยู่ที่ตัวโปรแกรมเมอร์มากกว่ามั้งคะไม่น่าเกี่ยว
    สมัยก้่อนอาจใช่ ASP.NET รันไม่เร็วเท่า CLIENT SIDE แต่ปัจุบันไม่หรอกมั้งคะ

    Quote:
    แต่ถ้าคนระดับเขียน java มาเขียน php แล้วจะรู้ว่า java กับ .net มันยังมีหลายๆ อย่างเทียบ php ไม่ได้ (ไม่รวม editor นะ) อิๆ

    อันนี้ก้อโดนบังคับเรียนมาทั้งสองภาษาแหละค่ะ php ก็โดนมาบังคับด้วยละ แล้วพี่หนุ่มละคะ ลองมาเขียน JAVA กะ .NET มั่งยัง



    ====================================================================
    ประเด็นคือการฝึก oop ด้วย php น่ะค่ะ
    คือ โดยตัวภาษาแล้ว feature ที่เอื้อให้เกิดกรอบความคิดแบบ object และใช้งาน oop
    ให้เปล่งประกายเสียมากกว่าค่ะ
    ที่เราจำเป็นต้องใช้ OOP ประเด็นเลย
    ถ้าเป็นโปรแกรม Hello world จะเขียนยังไงก้อได้มั้ง
    ที่ยกกันมาคือ app ระดับกลางไปจนถึง app ระดับซับซ้อน
    เพราะ พราวยังเข้าใจว่า programmer php จะใช้ code เอกลักษณ์แต่ละบุคคลมากกว่าที่จะไปพิจารณาเรื่อง
    Application pattern น่ะค่ะ อันนี้ยกมาก้อจนเอง เพราะยังไม่ได้ทำงาน ยังไม่ได้เจออะไรที่ซับซ้อนจัดๆ
    แต่ถ้าเรื่อง enterprize ยังคงแนใจว่า ทั้ง JAVA และ .NET จะทำได้ดีกว่าค่ะ

    และอีกอย่างขณะที่กำลังจะฝึกๆ OOP กันนี่ ภาวะแวดล้อมต้องบังคับเลย OOP เท่านั้น
    ตอนปฏิบัตจะดัดแปลงยังไงก็ทำไปถ้าเป็นแล้ว
    ด้วยสภาพแวดล้อมและการออกแบบ ที่ทำมารองรับ OOP
    หรือที่เรียกว่าเกิดมาเพื่อ OOP น่าจะทำให้เราเข้าใจได้ดีกว่ามั้งคะ
    อันนี้เดี๋ยวเพื่อให้เห็นชัด จะกลับไปรื้อฟื้น PHP แล้วจะเขียน OOP ด้วย PHP ดูค่ะ

    อีกอย่างเรื่อง commerce ware คงไม่ใช่ประเด็นหรอกค่ะ
    เพราะ VSS Express นี่ก้อฟรีแวร์ เพียงพอละถ้าจะใช้งานกันจิงๆ
    ส่วน จะ MySQL หรือ MSSQL ถ้าใช้กันระดับสูงแล้ว
    ก็ต้องซื้อ license ทั้งคู่ ถ้าระดับใช้งานปกติ MSSQL Express นี่ก้อฟรีค่ะ
    ถ้าจะบอก Cross platform ก้อมี mono framework ให้ มี plugin build เข้ามาใน VSS
    ถ้ามันเท่าๆกัน แต่อีกสายนึงเกิดมาเพื่อ OOP น่าจะลองๆมาฝึกทางนี้ไม่ดีกว่าหรอคะ
    Date : 2010-06-20 20:46:58 By : blurEyes
     


     

    No. 183



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    จะว่าไปภาษา ไดนามิค มันย่อมเขียนและเรียนได้ง่ายกว่าอยู่แล้วแต่ ไดนามิค ยังมีแยกเป็น strong type และ weak type ซึ่ง php มันเป็น weak type ซึ่งตัว php เอง ถ้าเอาไปเขียน desktop app มันก็คงไม่เหมาะเท่าไหร่ เพราะจริงๆ ผมคิดว่า desktop app มันมีจำนวนบรรทัดมาก เพราะต้องเขียน ด้าน gui อีกไม่น้อย ซึ่งผมคิดว่า strong type เหมาะกับการเขียน desktop app มากกว่าคับ

    โดยเฉพาะเครื่องมือ จะสังเกตว่า php มีแค่ array แต่ java มี Collection package ต้อง include เข้ามา บรรทัดมันก็ต้องมากกว่าอยู่แล้ว แต่ถ้าเป็น .net ผมไม่เคยเขียนนะ ide มันคงจะจัดการให้เอง

    และแน่นอนว่า ภาษา static โค้ดมันต้องเยอะกว่าภาษา dynamic อยู่แล้ว แต่ถ้าบอกว่า มันเทียบกันไม่ได้ผมว่า php มันยังเทียบกับ ภาษา java หรือ .net ไม่ได้หรอกคับ อย่างน้อยก็เพราะมัน เหมาะกับงานที่หลากหลายชนิดมากกว่าภาษา dynamic และ สามารถสร้างแอพพลิเคชั่นที่ใหญ่ได้ดีกว่า เพราะมันเป็น static type นั่นเอง
    Date : 2010-06-20 21:29:48 By : pjgunner
     


     

    No. 184

    Guest


    อันนี้เคยเขียนแล้วค่ะ โดนบังคับเลยไม่ได้ยากอะไร ใช้ notepad++ ที่ syntax Highlight ธรรมดานี่แหละค่ะ
    ทุกวันนี้อาจารย์ที่สอน ท่านก้อเขียน ASP.NET ด้วย Notepad++ อยุ่ framework 1.1 ด้วย
    แต่ในเมื่อมีของดีๆให้ใช้ อย่าง Visual studio ก้อใช้ดิคะ อันนี้ไม่น่าเกี่ยวขึ้นกับความเคยชินมากกว่าค่ะ

    ปริมาณความเป็นไปได้ในการผิดพลาดต่างกันเยอะครับ
    ภาษาที่เขียนยาวกว่าปริมาณการเขียนที่มากกว่า การผิดพลาดย่อมเยอะกว่าครับ
    ถ้าลองให้เขียนกันจริงๆ แล้วไม่มีทางเป็นไปได้ที่คนเขียนภาษาที่มีความยาวมากกว่า
    จะเขียน error น้อยกว่า และแก้โจทย์ปัญหาที่เข้ามาได้เร็วกว่า

    ==========

    ก็ไม่ได้เสียอะไรนี่คะ เรามีโครงสร้างทุกแบบที่ใช้กันทั้งไม่ว่าจะซับซ้อนหรือยืดหยุ่นยังไง
    เช่น hashtable stack เรื่อยจนไปถึง auto optimize tree ให้ใช้ง่าย ๆ
    เรียกมาด้วย using นี่ก็บรรทัดเดียว ที่เสียเวลาคือคุณต้องไปเรียน
    และเข้าใจโครงสร้างข้อมูลว่าจะใช้แบบไหนเสียมากกว่าค่ะ
    ส่วนที่ไร้ประโยชน์ไม่ทราบสิคะ มันคือยังไงอันนี้ขึ้นกับทักษะของโปรแกรมเมอร์มากกว่ามังคะ

    ถ้าจะพูดถึง function ที่นำกลับมาใช้ใหม่ ก็ยังต้องเสียเวลาศึกษามากกว่า php อยู่ดีครับ
    กว่าจะรู้ว่าต้องส่ง parameter ประเภทไหนยังไง ต้องเสียเวลาอ่านกี่รอบ
    ประกาศโครงสร้างชื่อตัวแปรไงครับ ระยะเวลาที่จะต้องเลือกประเภทตัวแปร
    การประกาศโครงสร้างต่างๆ ในรูปแบบที่ซับซ้อน นอกจากจะทำให้โปรแกรมอ่านยากขึ้น
    การที่มีคำสั่งจำนวนมากและโครงสร้างภาษามาก ถ้าเขียนโค้ดที่วางแผนมาไม่ดี
    อ่านและแก้ไขยากกว่าการเขียนแบบ php มาก บางครั้งที่โปรแกรมเมอร์ที่เพิ่งเริ่มต้นเขียน
    มาเขียนภาษา php ยังเขียนคำสั่งได้ดูดีกว่าพวกระดับเซียน ด้วยซ้ำ

    =========
    ตรง array ไม่เถียงครับว่าประกาศแค่นั้น แล้ว array นั้น dynamic หรือยังครับ
    แล้วถ้าจะเอา array มันมีหลายชั้นจะต้องเขียนวุ่นแค่ไหนครับ
    โครงสร้างที่คล้ายๆ array ที่มีหลายประเภท การนำมาใช้ร่วมกันจะต้องเขียนกี่บรรทัดครับ
    ==========

    อันนี้ก้อเหมือนกันค่ะ เพียงแต่ไม่ได้เลือกที่จะเขียนให้สั้นสุดๆ ปกติจะเขียนให้คนด้วยกันอ่านง่ายๆ
    code ที่เขียนน่าจะยาวเท่าๆ กันค่ะ เรื่องความเร็วพราวว่าอยู่ที่ตัวโปรแกรมเมอร์มากกว่ามั้งคะไม่น่าเกี่ยว
    สมัยก่อนอาจใช่ ASP.NET รันไม่เร็วเท่า CLIENT SIDE แต่ปัจุบันไม่หรอกมั้งคะ


    คำสั่งจะยาวเท่ากันได้ไงครับ ถ้าต้องแทรกคำสั่งประกาศประเภทตัวแปรแทบทุกบรรทัด
    ========

    อันนี้ก้อโดนบังคับเรียนมาทั้งสองภาษาแหละค่ะ php ก็โดนมาบังคับด้วยละ แล้วพี่หนุ่มละคะ ลองมาเขียน JAVA กะ .NET มั่งยัง

    ผมไม่เคยเรียน php, java แล้วก็ .net ครับ
    เคยเรียนแต่ pascal กับ c
    แต่ผมเขียนได้หมดครับ ยกเว้น java เขียนได้แค่ระดับ jsp ไม่ได้ไปยุ่งกับ servlet ซักเท่าไหร่ เอา servlet มาทำแค่พวก filter สำหรับระบบ authentication
    ===========

    ในเรื่องการคำนวนและการทำงานบางที่ต้องประมวลผลสูงพวก .net หรือ java จะแม่นและเร็วกว่า php อยู่ครับ
    แต่เรื่องความเร็วและโครงสร้างที่ยืดหยุ่นและสะดวกในการแก้ปัญหาแล้ว php เหมาะที่สุดครับ
    แต่ผมก็คิดว่าพวกงาน enterprise ถ้าใช้ php ที่ออกแบบโครงสร้างมาดีแล้ว
    จะเร็วได้เกือบเทียบเท่า platform เหล่านี้ และคำสั่งโอกาสข้อผิดพลาดต่ำกว่าไม่รู้กี่เท่าครับ

    ============
    OOP ที่ไม่มี pattern ก็คือโค้ดที่สร้างปัญหาให้กับโปรแกรมเมอร์มากกว่าตอบโจทย์การแก้ปัญหาครับ
    คำสั่งที่ซับซ้อนเกินไป จะเป็นการสร้างปัญหาใหม่ๆ ขึ้นมามากกว่าครับ
    =============

    พี่รักภาษาที่ทำให้ปัญหาน้อยครับ แฮ่ๆ
    Date : 2010-06-20 21:42:35 By : num
     


     

    No. 185



    โพสกระทู้ ( 1,603 )
    บทความ ( 1 )



    สถานะออฟไลน์


    มันไม่ได้เขียนยาวขึ้นเลยค่ะ ตัวแปรก้อเท่ากัน
    ถ้าจะ array เราก้อมี jagged array ที่ dynamic แบบเดียวกะของ php

    code ไม่ได้ยาวอะไรเลยค่ะถ้าเขียนคล่องๆ ถามว่าเสียเวลาปล่าวในการเลือกใช้โครงสร้าง
    ไม่ได้เอามา cross กันนี้คะ อยากใช้ก็ new เรียกค่าออกมาก้อ assign
    ถ้าจำเป็นต้องใช้ ก้อยังต้องใช้เหมือน พราวว่า php ตังหาก
    ที่ทำเรื่อง data structure ได้แย่กว่าอะค่ะ ที่ว่าซับซ้อนเราไม่ได้เขียนเองนี่คะ
    เราเอามาแค่ใช้งาน บางที สามบรรทัดก้อจบละ

    ส่วนเรื่องการวางแผนนี่แหละที่พราวว่าประเด็นหลักใหญ่เลย
    เพราะถูกบังคับให้อยู่กรอบ oop การวางแผนจะเป็นขั้นเป็นตอนกว่าค่ะ
    ตอนเขียนดูเหมือนจะยุ่งเพราะทำตามลำดับขั้น ต้องใช้ตัวแปรให้ถูกที่ถูกทาง
    แต่นี่คือระบบระเบียบ ฝึกให้คิดมีระบบค่ะ ถ้าทำงานระยะทางยิ่งไกล
    ความเร็วจะเพิ่มขึ้นๆ

    อีกอย่างเรื่อง OOP Pattern นี่โดนบีบอยู่แล้วค่ะ
    ยิ่ง version สุงขึ้นทั้ง .NET ทั้ง JAVA จับเรื่อง DESIGN PATTERN
    มาใส่เต็ม ๆ โดยการแยก 3 LAYER ที่บอกตอนแรก เด็ดขาดออกจากกันแล้ว
    ที่เรียนๆตอนนี้เป็นช่วงเปลี่ยนค่ะ ถ้า .NET4 มาเต็มที่ ส่วน JAVA มีมานานแล้ว
    เพียงแต่จะรับรู้กันหรือเปล่า
    มันเป็นการดันจากตัวภาษาเองโดยที่โปรแกรมเมอร์ไม่รุตัวค่ะ

    Quote:
    พี่รักภาษาที่ทำให้ปัญหาน้อยครับ แฮ่ๆ

    ก้อมีปัญหาเหมือนกันหมดแหละค่ะ มากน้อยอยู่ที่การ handle ของ Programmer มากกว่า
    คุณภาพทางความคิดเป็นเรื่องใหญ่กว่าค่ะ ถ้าฝึกให้คิดมีระบบโดยไว
    และมี guide จากผู้เชี่ยวชาญ (คนออกแบบ ทั้ง JAVA ทั้ง .NET
    ล้วนแต่คณาจารย์ผู้ทรงคุณวุฒิที่ทำงานประสานกัน อย่างเป็นระบบ อีกแหละค่ะ )
    น่าจะเป็นสภาพแวดล้อมที่เอื้อให้เพาะบ่มความคิดที่เป็นระบบได้มากกว่าค่ะ

    Date : 2010-06-20 22:46:56 By : blurEyes
     


     

    No. 186

    Guest


    jagged array ก็ยังไม่ใช่ array ที่เทียบเท่า array ของ php ครับ
    ถ้า hash จะใกล้เคียงมากกว่าแต่กว่าจะประกาศ hash และการจะสร้าง hash multi level
    ของภาษาอย่าง java ขึ้นมามันไม่ได้เขียนสบายๆ ครับ

    ที่พี่ว่ามันเสียเวลาในสิ่งที่ไม่จำเป็นก็คือ การนำตัวแปรประเภทต่างๆ มาใช้เพื่อประสานเพื่อแก้ปัญหา
    ถ้า php โดยปกติก็จะใช้พลังของ array ที่ว่าเพียงอย่างเดียว แต่ถ้าภาษา strong type การจะรวบรวมเอาหลายๆ อย่าง มารวบรวมเข้าด้วยกัน ซึ่งโค้ดแบบ strong type มันไม่ใช่โค้ดที่เราจะมองเป็น logic ล้วนๆ แต่มันเป็นโค้ดแบบ spaghetti รูปแบบหนึ่ง ที่พยายามจะเอาตัวแปรประเภทต่างๆ มาใช้ร่วมกัน ซึ่งโค้ดแบบ strong type ต้องเสียเวลาในการใช้ความพยายามแบบนี้มากกว่าแบบ weak type มาก และแทบจะทุกๆ ครั้ง เมื่อต้องการโครงสร้างข้อมูลที่ค่อนข้างซับซ้อนกว่าแบบ linear

    pattern ในการสร้างเว็บไซท์ของ asp.net มีหลายอย่างที่ช่วยให้สามารถสร้างโค้ดได้เร็วขึ้น
    แต่การนำโครงสร้างแบบ xml มาสร้างเป็นส่วนประกอบในโปรแกรม ทำให้คุณสมบัติในการแก้ไขออกแบบได้ยากขึ้น

    ในการทำงานของโปรแกรมแปลภาษาเองแล้วโอกาสที่จะเจอ error ของ strongtype มากกว่าครับ เพียงแค่ใส่ตัวแปรผิดประเภทก็ error ทันทีทั้งที่จริงๆ สามารถอนุโลมได้อย่างเช่น "1" กับ 1 หรือ 0 กับ false
    การเขียนโปรแกรมจะต้องเจอปัญหาประเภทนี้บ่อยๆ ไม่ใช่เรื่องน่าสนุกครับ
    Date : 2010-06-20 23:56:37 By : num
     


     

    No. 187

    Guest


    สำหรับประเด็นเรื่อง oop พี่คิดว่าการที่ php ไม่บังคับเรื่อง oop เพราะเค้าต้องการสร้างภาษาที่เหมาะสมกับการเขียนเว็บน่ะครับ และเป็นภาษาสำหรับทุกคน ถ้าให้ oop เป็นหลักเลยจะทำให้เป็นเว็บโปรแกรมเมอร์เก่งๆ ที่ไม่ได้เรียนเรื่อง oop มาไม่ได้เปิดตัวออกมาก็ได้ครับ :)
    Date : 2010-06-21 00:09:48 By : num
     


     

    No. 188



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    แหมๆ ชอบจังครับ ท่านที่ชอบแบ่งปัน มีน้ำใจจริงๆ

    ผมเพิ่งเข้าสู่วงการน่ะครับ มีเรื่องอยากรู้เต็มไปหมด

    แต่ในความคิดผม ผมคิดเขียนแบบ Function ดีกว่านะครับ

    เพราะว่ามันเขียนโค๊ดเยอะดี เขียนยาวพรืดๆๆๆ หน้าเดียวกันไปเลย

    เอ๊ะมันดีตรงไหนหว่า (มุขครับแก้เครียด) ต้องแบบ OOP สิ่

    เห็นๆกันอยู่ใช่ไหมครับ ยังไงก็ขอรบกวนผู้รู้แบ่งปันด้วยนะครับ ^^
    Date : 2010-06-21 14:02:26 By : hikari42
     


     

    No. 189



    โพสกระทู้ ( 1,603 )
    บทความ ( 1 )



    สถานะออฟไลน์


    ก้อพราววถึงบอกนี่งาย ถ้าเรียน oop ไปเรียนกะอย่างอื่นดีกว่าแล้วค่อยมา อะไรยังไงกะ php
    ตอนที่ php เกิดมา oop ยังเป็นวุ้นอยู่เลยมั้งคะ

    ยังไม่ยอมอะ
    multiple array หรอคะ ก้อมีอะ tree กะ node อยากแอด ก้อแอดเลยเหมือนกัน อ้างแบบ dictionary ได้อีก
    ไม่ได้อ้างด้วย index อย่างดียวค่ะ มันเกิดมาทีหลัง อะไรที่ของดีๆของชาวบ้านเค้าก้อเอามาใส่หมดแหละพี่หนุ่ม
    ไม่ได้เป็น spaghetti หรอกค่ะ

    อันนี้พราวไม่รุน้า แต่เรื่องของเรื่อง vb 6 ที่เป็น weak type คล้ายกะ php ก็ obsolete ไปแล้ว
    ภาษาที่ยังไม่ strong type เหลือแต่พวก script ยังไงสะ oop ก็คงยังไปได้ไกล
    วันนึง php นี่อาจจะถูกยำใหญ่เหมือนกะ vb.net มั้งคะ
    Date : 2010-06-22 10:21:02 By : blurEyes
     


     

    No. 190



    โพสกระทู้ ( 1,542 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    พี่ว่าอย่าเถียงกันเลยเพราะการที่จะเขียน oop กับภาษาอะไรก็แล้วแต่ ขึ้นอยู่กับความต้องการของคนเขียน

    โปรแกรมทุกภาษามีทั้งข้อดี และข้อเสียในตัวของมันเอง ขึ้นอยู่กับทักษะของโปรแกรมเมอร์มากกว่าว่าถนัดทางด้านไหน

    และสามารถนำมาประยุกต์ใช้ให้เหมาะสมกับระบบงานของตัวให้เกิดประโยชน์สูงสุดด้วยภาษาอะไรค่ะ

    เพราะเถียงกันไปก็อเหมือนไก่กับไข่อะไรเกิดก่อนกัน ปัญหาโลกแตกค่ะ...พี่อ่านแล้วอึดอัด
    Date : 2010-06-22 10:38:14 By : Gumme
     


     

    No. 191

    Guest


    oop เกิดมาก่อนช่วง php ไม่รู้กี่สิบปีละครับ
    tree จะแทรกข้อมูลง่ายกว่า array ของ php ได้ไงครับ อิๆ
    php ไม่ได้เป็นอริกับ oop นะครับ แต่เป็นยืดหยุ่นทำได้หลายอย่าง
    ทั้งแบบง่ายและแบบ oop แนวโน้มของ php6 จะ fix ข้อเสียของ php รุ่นก่อนๆ เกือบทั้งหมดแล้วครับ
    และตอนนี้ก็พัฒนาให้ใช้ anonymous function ได้อย่าง javascript แล้ว มีแต่คนจะใช้เยอะขึ้นครับ
    และ php มีแนวโน้มจะ fix ปัญหาที่ด้อยกว่า strongtype อยู่เรื่อยๆ ดังนั้น
    ภาษาที่ยุ่งยากกว่าแต่ให้ผลลัพธ์เท่ากัน คนก็ต้องเลือกใช้ที่ง่ายกว่าอยู่แล้วครับ
    Date : 2010-06-22 10:59:07 By : num
     


     

    No. 192



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    ผมว่าการเขียน php6 นั้นต่างกับ php5 ไม่น้อย และคิดว่า server น่าจะแยกกันเลยแหละ รันตัวเก่า กับตัวใหม่ เพราะคงมีหลายตัวที่รันไม่ได้ (ต้องแก้ เช่น ไม่ได้ escape string ให้อัติโนมัติ อันนี้ +1)

    อีกอย่าง ผมว่า ฟีเจอร์บางอย่างของ php6 คิดว่าทำให้โค้ดอ่านยากไปอีกแบบนึง อย่าง anonymous มันก็ดีไม่ต้องเสียชื่อฟังชั่นไปอีก แต่ยังมี goto นี่สิผมงงๆ และยังจะมี lambda คล้าย ruby แต่ผมก็ไม่เข้าใจหรอก
    Date : 2010-06-22 14:12:19 By : pjgunner
     


     

    No. 193



    โพสกระทู้ ( 1,603 )
    บทความ ( 1 )



    สถานะออฟไลน์


    มะมีรัยพี่มี่ เบื่อเจ๋ยๆ พวก request login ทำ table ยังไงอะค่ะ
    พี่วินก้อสอนแล้ว tutorial ก็ทำแล้ว ถามมาตอบไปเป็นสิบเป็นร้อยครั้งละ
    ถามซ้ำๆย้ำๆกันนั่นอะ แค่รุจักค้นค้า search เอาจาก board นี่ก็ไม่ทำ

    เลยชวนๆ ถก กันทะนั้นเองค่าพี่มีี่

    ได้โปรดอย่าอึดอัดยิ้มค่ะยิ้มปายเรื่อยๆ อารมดีแจ่มใสค่ะ ^^
    Date : 2010-06-22 22:55:17 By : blurEyes
     


     

    No. 194



    โพสกระทู้ ( 11,835 )
    บทความ ( 10 )

    สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

    สถานะออฟไลน์


    คุยภาษาเทพ อ่านสามรอบยังไม่รู้เรื่องเลย ถกอะไรกัน
    Date : 2010-06-22 23:41:28 By : plakrim
     


     

    No. 195



    โพสกระทู้ ( 66 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    เห็นด้วยกับกับคุณ Stupid gal ครับกับการที่เราควรเรียนรู้ OO กับ .NET และ JAVA เพราะลำพังตัวผมเองก็เริ่มตั้นจากตรงนั้นเหมือนกัน ด้วยที่ว่า ผมเป็นโปรแกรมเมอร์ ที่ไม่ได้จบคอมพิวเตอร์โดยตรง ก็อาศัยศึกษาด้วยตัวเองกับศึกษาจากโปรแกรมเมอร์ รุ่นพี่เอา เหตุที่ผมต้องมาศึกษา OO เพราะต้องใช้ Framework ในการทำงาน(เพราะใครๆ ก็ใช้กัน) ตอนแรกก็ ศึกษาจาก www.php.net โดยตรงแต่ไม่เข้าใจพอผมเลยมาศึกษาจาก JAVA แทนซึ่งเข้าใจโดยหลักการมากกว่าทำให้มาประยุกต์กับ OO PHP ได้มาก OO ของ PHP v5.3/v6 -> แนวโน้มจะเอาข้อดี OO ของทั้ง JAVA, .NET มายำผสมกัน (ถ้าไม่เชื่อก็ลองอ่าน www.php.net ครับเทียบกับ JAVA และ .NET) แต่อย่างไร ผมก็เขียน OO PHP แบบ v4 ซึ่งง่ายและ classic ดีดูเป็นตัวของ PHP มากกว่า 555++ ตรงนี้ไม่ควรเอาเป็นแบบอย่างครับควรตามเทคโนโลยีดีกว่า
    ยิ้มไว้ครับสไตล์ ใครสไตล์มัน
    <?php
    	// share path ADOdb database Library
    	include 'common.php'; // share
    	// 
    	class ADOdb{
    
    		var $_db = NULL;
    		var $_sql = ' ';
    
    		function ADOdb($_conn = NULL){
    			$this->_db = ADONewConnection($_conn['_driver']);
    			$this->_db->Connect($_conn['_server'],
    								$_conn['_user'],
    								$_conn['_password'], 
    								$_conn['_db']
    			);
    			$this->_db->debug = false; // debug false
    			return $_db;
    		}
    		// Execute
    		function executeSqlGetArr(){
    			return($this->_db->Execute($this->_sql)->GetAssoc());
    		}
    		function executeSql(){
    			$_rs = $this->_db->Execute($this->_sql);
    			$_i = 0; $_array = array();
    			while($_fl = $_rs->fetchRow()){
    				$_array[$_i]['id'] =$_fl['id'];
    				$_array[$_i]['date_created'] =$_fl['date_created'];
    				$_array[$_i]['date_updated'] =$_fl['date_updated'];
    				++$_i;
    			}
    			return $_array;
    		}
    		// sizeOfRecord
    		function sizeOfRecord(){
    		
    			return($this->_db->Execute($this->_sql)->RecordCount());
    		}
    		// utiities
    		function closeADOdb(){
    		
    			return($this->_db->Close());
    		}
    	}
    	// Class caller
    	$_adodb = new ADOdb($_conn); if(!$_adodb) die(' disconnected to database ! ! ');
    	$_adodb->_sql = 'select * from places order by id asc';
    	$_rs_arr = $_adodb->executeSqlGetArr();  // Execute() & GetAssoc();
    	$_rs_arr_ = $_adodb->executeSql();
    	$_rc = $_adodb->sizeOfRecord(); // RecordCount();
    	print ' <pre> ';
    	// print_r();
    	print_r($_rs_arr);
    	print_r($_rs_arr_);
    
    	print '</pre>';
    	// close
    	$_adodb->closeADOdb();
    ?>
    

    Date : 2010-06-28 23:36:29 By : mrjidjad
     


     

    No. 196



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนใจครับ
    Date : 2010-06-29 11:52:01 By : sonnalin
     


     

    No. 197

    Guest


    เห็นด้วยกับกับคุณ Stupid gal ครับกับการที่เราควรเรียนรู้ OO กับ .NET และ JAVA เพราะลำพังตัวผมเองก็เริ่มตั้นจากตรงนั้นเหมือนกัน ด้วยที่ว่า ผมเป็นโปรแกรมเมอร์ ที่ไม่ได้จบคอมพิวเตอร์โดยตรง ก็อาศัยศึกษาด้วยตัวเองกับศึกษาจากโปรแกรมเมอร์ รุ่นพี่เอา เหตุที่ผมต้องมาศึกษา OO เพราะต้องใช้ Framework ในการทำงาน(เพราะใครๆ ก็ใช้กัน) ตอนแรกก็ ศึกษาจาก www.php.net โดยตรงแต่ไม่เข้าใจพอผมเลยมาศึกษาจาก JAVA แทนซึ่งเข้าใจโดยหลักการมากกว่าทำให้มาประยุกต์กับ OO PHP ได้มาก OO ของ PHP v5.3/v6 -> แนวโน้มจะเอาข้อดี OO ของทั้ง JAVA, .NET มายำผสมกัน (ถ้าไม่เชื่อก็ลองอ่าน www.php.net ครับเทียบกับ JAVA และ .NET) แต่อย่างไร ผมก็เขียน OO PHP แบบ v4 ซึ่งง่ายและ classic ดีดูเป็นตัวของ PHP มากกว่า 555++ ตรงนี้ไม่ควรเอาเป็นแบบอย่างครับควรตามเทคโนโลยีดีกว่า
    ยิ้มไว้ครับสไตล์ ใครสไตล์มัน

    ไม่จำเป็นต้องเริ่มต้นจาก java หรือ .net ครับ เพราะคนที่เรียน java หรือ .net เริ่มจากทฤษฎีพื้นฐานก่อนเหมือนกัน
    และไม่มีการเขียนโปรแกรมที่มีความเป็น oop ได้โดยไม่รู้จักพื้นฐานมาก่อน
    และที่บอกว่า php เอาข้อดีของ java หรือ .net ก็เป็นเรื่องจริงครับ แต่ไม่ได้เอาแค่ java หรือ .net มายังเอามาจากภาษาอื่นๆ อีกด้วย และถ้าสังเกตดู java หรือ .net ก็พยายามเอาข้อดีของภาษา script เข้าไปแทรกอยู่มากขึ้นเรื่อยๆ ครับ
    ดูอย่างที่ https://scripting.dev.java.net/
    Date : 2010-06-29 17:00:07 By : 2123
     


     

    No. 198



    โพสกระทู้ ( 450 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Blogger

    กำลังเริ่มศึกษา งงกับเจ้าตัว
    this -> จริงๆว่าเวลาไหนเราควรใช้แล้วทำเพื่ออะไร พอจะอธิบายให้กระจ่างเลยได้ไหมคะ
    กับ return อีกตัวว่าเวลาไหนเราจะใช้
    Date : 2010-07-07 16:10:32 By : SG14
     


     

    No. 199



    โพสกระทู้ ( 3,144 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    555+ ก็เพิ่งรู้ว่าเทพ php ก็องุ่นเปรี้ยวเป็นเหมือนกัน

    พูดซะยังกับว่าคนอื่นไม่รู้จักว่า php เป็นยังไง

    ลองเปิดใจสิครับ แล้วจะลืม oop แบบ php ไปเลย

    ส่วนตัวผมพอดีว่าเริ่มต้นด้วย dotnet จะลองมาจับ php ก็ทำใจไม่ได้เหมือนกัน

    เพราะเหตุผลเหมือนอย่างข้างบนนั่นแหละ แต่ใช่ว่าจะไม่เป็นนะ ก็พออ่านโค้ด php

    ได้บ้าง แต่ถ้าให้เขียนก็เขียนไม่ออกเหมือนกัน เพราะจำ syntax ไม่ได้ อิอิ
    Date : 2010-07-07 18:34:03 By : tungman
     


     

    No. 200



    โพสกระทู้ ( 450 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Blogger

    มึนสุดๆ ส่วนตัวเขียนphp แบบปกติว่าจะเอา oop ติดตัวไปบ้างพยายามศึกษาอยู่แต่ก็ติดบ้างตัวที่โพสไว้นะคะ
    Date : 2010-07-07 18:44:33 By : SG14
     


     

    No. 201

    Guest


    Quote:
    555+ ก็เพิ่งรู้ว่าเทพ php ก็องุ่นเปรี้ยวเป็นเหมือนกัน
    พูดซะยังกับว่าคนอื่นไม่รู้จักว่า php เป็นยังไง
    ลองเปิดใจสิครับ แล้วจะลืม oop แบบ php ไปเลย
    ส่วนตัวผมพอดีว่าเริ่มต้นด้วย dotnet จะลองมาจับ php ก็ทำใจไม่ได้เหมือนกัน
    เพราะเหตุผลเหมือนอย่างข้างบนนั่นแหละ แต่ใช่ว่าจะไม่เป็นนะ ก็พออ่านโค้ด php
    ได้บ้าง แต่ถ้าให้เขียนก็เขียนไม่ออกเหมือนกัน เพราะจำ syntax ไม่ได้ อิอิ


    ผมไม่ไ้ด้พูดถึงข้อดีของ oop ใน php เลยนะ เพราะ oop ของ php ผมก็ได้แค่ประมาณ 60-70% ไม่ได้ฝึกฝนจำชำนาญมากนัก
    แต่พูดถึงความไม่ดีของภาษาพวก strongtype
    โดยเฉพาะ asp.net มีข้อดีเยอะก็จริง แต่ออกแบบไม่รัดกุม พยายาม fix ข้อเสียของ php ของ asp รุ่นก่อน
    แต่ดันไปออกแบบโปรแกรมเขียนเว็บเป็นของเล่นให้คนที่ยึดติดกับภาษา windows desktop application เล่น
    ออกแบบเป็น event driven โดยจำนวน event จุกจิกมากเกินไป ซึ่งไม่เหมาะกับการทำเว็บเข้าไปใหญ่ ทำให้การแทรกคำสั่งหรืออะไรง่ายๆ ใ้ห้กับขั้นตอนที่มัน sequencial ธรรมดา กลับต้องมาเสียเวลาค้นหา event ที่เหมาะสมต้องทำเหมือนเป็นเรื่องใหญ่โต ต้องมานั่งลำดับ event

    แค่การแทรก text เพิ่มเติมไปที่ grid ก็ต้องมานั่งเขียนโปรแกรมค้นหาอีก object อีก
    ทำให้การพัฒนาโปรแกรมที่ควรจะง่ายขึ้นกลับยากขึ้นกว่า asp ซะอีก
    ความที่ ms พยายามทำให้โปรแกรมดูอัตโนมัติสวยงามรวดเร็ว ทำให้ดูเหมือนใครๆ ก็ทำได้
    เป็นตัวหลอกให้เข้าใจว่า asp.net เขียนแล้วน่าเชื่อถือ
    แต่ในความจริงแล้วต้องระวังมากยิ่งกว่าเขียน php ธรรมดาที่เรารู้ทุกขั้นตอนของโปรแกรม
    เนื่องด้วยตัว gen formview จากตาราง (ผมใช้ vs2008) ทำเหมือนจะช่วย encode html ใน textfield ให้
    แต่ label น่าจะ encode html ใ้ห้ก็ดันไม่ทำ -*-
    Date : 2010-07-07 20:55:57 By : num
     


     

    No. 202

    Guest


    Quote:
    555+ ก็เพิ่งรู้ว่าเทพ php ก็องุ่นเปรี้ยวเป็นเหมือนกัน

    พูดซะยังกับว่าคนอื่นไม่รู้จักว่า php เป็นยังไง

    ลองเปิดใจสิครับ แล้วจะลืม oop แบบ php ไปเลย

    ส่วนตัวผมพอดีว่าเริ่มต้นด้วย dotnet จะลองมาจับ php ก็ทำใจไม่ได้เหมือนกัน

    เพราะเหตุผลเหมือนอย่างข้างบนนั่นแหละ แต่ใช่ว่าจะไม่เป็นนะ ก็พออ่านโค้ด php

    ได้บ้าง แต่ถ้าให้เขียนก็เขียนไม่ออกเหมือนกัน เพราะจำ syntax ไม่ได้ อิอิ


    อ่านแล้วมีความรู้สึกว่าแรงนิ อ่านไม่เข้าใจแล้วตีความหมายเอง แถมว่าคนอื่น อนิจจังสังคมเริ่มไม่น่าอยู่
    Date : 2010-07-07 21:57:00 By : แว่ะมาเจอ
     


     

    No. 203



    โพสกระทู้ ( 1,542 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    เอ ... คุณมาผิดกระทู้รึเปล่าค่ะคุณ tungman เพราะเท่าที่เราอ่านกระทู้นี้เค้า

    Quote:
    กระทู้รณรงค์ ตอน "มาเขียน php แบบ OOP กันเถอะ"


    ไม่ใช่กระทู้เขียนโปรแกรมอารายแบบไหนดีกว่ากัน จริงๆ ตัวคุณเองก็น่าจารู้ตัวเองบ้างว่าทำอะไรลงไป

    ไม่อยากพูดเย่อะ เดี๋ยวจากลายเปงบาดหมางกันเปล่าๆ แต่ตัวมี่อ่านข้อความคุณแล้วรู้สึกว่าแรงๆ นะค่ะ

    จริงๆ น่าจะตั้งกระทู้ใหม่ไปเลย เพราะกระทู้นี้เค้ารณรงค์เรื่อง OOP ของ PHP ค่ะ หวังว่าคงเข้าใจนะค่ะ
    Date : 2010-07-07 22:17:10 By : Gumme
     


     

    No. 204



    โพสกระทู้ ( 3,144 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ผมก็ว่าแรงนะ แต่ผมไม่ได้โกรธแค้นใคร ด่าแล้วผมก็จบ

    ใครจะโกรธอย่างไรไม่ถือหรอกครับ แค่พูดที่ตัวเองรู้สึกจริงๆ

    และยินดีโดนด่ากลับครับ
    Date : 2010-07-07 22:26:51 By : tungman
     


     

    No. 205



    โพสกระทู้ ( 1,542 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    คนเราเกิดมาต้องรู้จักกาละเทสะ เรื่องบางเรื่องต้องรู้ว่าสมควรพูดเวลาใด และพูดกับใคร เท่าที่รู้คุณก็ไม่ได้สนิทอารายกับหนุ่ม แล้วการที่คุณไปด่าเค้ามานถูกต้องแล้วเหร๋อ จริงๆ แค่คำว่าขอโทษมานพูดไม่ยากหัดพูดให้ติดปาก อย่ามั่นใจในตัวเองมากนัก คนเราทำผิดกันได้ และทุกคนเค้าให้อภัยถ้าเค้ารู้จักยอมรับเสียบ้าง ไม่ใช่ยืดอกยอมรับคำต่อว่าแล้วเฉยๆ ผิดหวังอย่างแรงเลย เพราะเห็นมาหลายกระทู้มาก แต่ไม่อยากพูด คิดเองก้อแล้วกันโตๆ กันแล้ว
    Date : 2010-07-07 22:38:23 By : Gumme
     


     

    No. 206



    โพสกระทู้ ( 3,144 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ขอโทษครับ คือผมเพิ่งรู้ว่าคำว่า องุ่นเปรี้ยวเป็นคำด่า

    แต่ถ้าทำให้ไม่สบายใจ ผมก็ขอถอนคำพูดขอรับ
    Date : 2010-07-08 08:26:04 By : tungman
     


     

    No. 207



    โพสกระทู้ ( 1,542 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    มันไม่ใช่แค่คำว่า "องุ่นเปรี้ยว" ค่ะ แต่มันเป็นคำพูดที่ว่า

    Quote:
    พูดซะยังกับว่าคนอื่นไม่รู้จักว่า php เป็นยังไง


    ความหมายมันเหมือนหนุ่มดูถูกคนอื่นว่าไม่รู้จัก PHP จริงๆ กลับไปอ่านเองก็น่าจะรู้ ว่าประโยคมันแรงมาก

    ที่หลังเวลาตอบกระทู้ก็คิดว่าใจเค้าใจเราสักนิดจะได้ไม่เกิดปัญหา หัดคิดถึงคนอ่านบ้าง ก็เท่านั้น
    Date : 2010-07-08 08:41:19 By : Gumme
     


     

    No. 208



    โพสกระทู้ ( 450 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Blogger

    เง้อๆ เข้าสู่ oop กันเถอะคะ สรุปที่เราถามมีผู้ใจดีขยายความให้ไหมคะ
    อ่านไปมา this-> มันคล้ายกับ this. ในจาวาปะคะ
    Date : 2010-07-08 10:13:59 By : SG14
     


     

    No. 209



    โพสกระทู้ ( 72 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    ขอบคุณมากครับจะพยายามศึกษาครับ
    Date : 2010-07-08 18:50:58 By : itzone
     


     

    No. 210

    Guest


    สรุปแล้วเขียนภาษาไหนก็ต้องเหนื่อยทั้งนั้น อิๆ
    Date : 2010-07-08 19:36:00 By : 2123
     


     

    No. 211



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    เอิ่ม ผมไม่ได้เข้ามาดูตั้งนาน กระทู้ความรู้กลายเป็นกระทู้ดรามาซะแล้ว
    ผมขอออกตัวก่อนนะครับว่าผมยังไม่ได้อ่านครบทุกความเห็น อ่านคร่าวๆ แค่บางความเห็น

    ผมว่าทุกภาษามีข้อดีและข้อเสียปะปนกันไปทุกภาษา เท่าที่ผมทราบมา java เป็นภาษา OO ในยุคแรกๆ เลย
    หลังจากนั้นก็มีภาษาอื่นๆ เกิดขึ้นตามมามากมาย โดยมีการเอาข้อดีของภาษาที่เกิดก่อนมาเป็นพื้นฐานของภาษาใหม่
    เรียกง่ายๆ ว่ามีการประยุกต์ปรับปรุงและก็พัฒนาต่อยอดกันมาเรื่อยๆ นี่แหละครับเรียกว่าภาษามีการพัฒนาและมีวิวัฒนาการของมัน เพราะฉะนั้นไม่มีภาษาไหนดีและไม่ดีหรอกครับ มันขึ้นอยู่กับสภาพแวดล้อมในการประยุกต์ใช้งานมากกว่า

    การเลือกภาษาในการใช้งานมีหลายปัจจัยเข้ามาเกี่ยวข้อง โดยเฉพาะเรื่องลิขสิทธิ์
    บางความเห็นก็บอกว่า MSSQL & VSS มี version ที่เป็น express version ที่เป็นฟรี
    แต่ MSSQL ยังคงต้องลงบนเครื่องที่เป็น windows อยู่ซึ่งตรงนี้ถือว่ามี cost ของ software เกิดขึ้น ซึ่ง PHP สามารถลงบน platform ระบบต่างๆ ได้ทั้งฟรีและไม่ฟรี นี่นับว่าเป็นข้อดี PHP
    นักพัฒนาอิสระสามารถหารายได้โดยการ implement ระบบใหญ่ๆ ให้บริษัทใหญ่ๆ ที่ serious เรื่องลิขสิทธิ์ได้
    ด้วยภาษาที่มี cost น้อยที่สุด ซึ่งก็น่าจะเป็นที่ต้องการของตลาดอยู่ ณ ตอนนี้

    เช่นเดียวกับ tool ในการเขียนโปรแกรมต่างๆ ก็มีการพัฒนาตามภาษามาเรื่อยๆ เหมือนกัน
    โดย tool สมัยหลังๆ มานี้ก็เน้นเรื่อง ประสิทธิภาพของการเขียนโปรแกรม ช่วยเพิ่มความสะดวกให้กับโปรแกรมเมอร์ทั้งหลาย ภาษาทุกภาษามีความยืดหยุ่นไม่เท่ากัน เช่นเดียวกับ tool tool ของภาษาเดียวกันยังมีความสามารถได้ไม่เท่ากันเลยครับ

    ผมว่าอย่าเอาประเด็นเรื่องภาษามาเถียงกันเลยดีกว่าครับ
    เอาเป็นว่าคนที่สนใจ OO ของ PHP เราก็มาถามตอบกันต่อแล้วกันนะครับ

    นี่ถ้ามีคนมาถามผมข้างนอกที่ไม่ใช่ในเวบผมจะยินดีอธิบายเกี่ยวกับ OO มากๆ เลย
    เพราะสิ่งสำคัญของ OO ไม่ใช่ตัวภาษา แต่เป็นแนวคิดและความเป็นระบบระเบียบของ programmer เองล้วนๆ ครับ
    จะเขียนให้ทุกอย่างรวมกันหมด หรือให้ทุกอย่างแยกกันหมดก็ย่อมได้

    Date : 2010-07-10 23:48:50 By : nut_t02
     


     

    No. 212

    Guest


    java ไม่ใช่ oop ในยุคแรกๆ แน่นอนครับ
    turbo pascal ผมยังเห็น class & object แล้ว อิๆ
    Date : 2010-07-11 01:59:15 By : 2123
     


     

    No. 213

    Guest


    แวะผ่านมาครับ เห็นคุยกับเรื่อง PHP OOP เป็นสิ่งที่น่าสนใจนะครับ แล้วก็ไม่ใช่สิ่งใหม่อะไร เพราะว่าปัจจุบันนี้ตัว PHP เองก็
    มี framework หลาย ๆ ตัวมาสนับสนุน แล้วก็ส่วนใหญ่จะเน้นเรื่อง OOP ซะด้วย ซึ่งจากที่เคยได้ใช้ framework มาบ้าง ประโยชน์ที่เป็นได้ชัดเลยก็เป็นเรื่องของคุณสมบัติของ OOP นี่แหล่ะ

    framework แนะนำก็เป็น symfony ครับ เป็น framework ที่ดีตัวหนึ่ง มีคนใช้เยอะ พร้อมทั้งคู่มือเอกสารต่าง ๆ ก็เยอะแล้วก็ค่อยข้างละเอียดเลยล่ะครับ แล้วก็อีกตัวหนึ่งก็เป็น Propel ORM อันนี้เป็นเรื่องของ Object Relational Mapping ใช้สำหรับการดึงข้อมูลให้ออกมาเป็น Object แทนที่จะเป็น Recordset หรือว่า Rowset ยังไงก็ลองหาอ่านดูนะครับ โลกนี้มีอะไรให้ศึกษาอีกไม่สิ้นสุด

    อ้อ อีกเรื่องหนึ่งครับ ถ้ารักที่จะเขียน OOP ด้วย php ควรหาเครื่องมือที่สนับสนุนครับ เพราะว่ามันจะช่วยในเรื่องของ auto completing ในการเรียก property และ method ของ object ได้ ซึ่งผมเีลือกใช้ eclipse pdt ครับ
    Date : 2010-07-14 19:06:06 By : Ti
     


     

    No. 214



    โพสกระทู้ ( 118 )
    บทความ ( 3 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    กำลังหัดเขียน แบบ oop ตัวอย่างนี้ดีมากเลยคับ
    Date : 2010-07-29 15:49:45 By : noomthapla
     


     

    No. 215



    โพสกระทู้ ( 22 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    .... โอ้สุดยอดเลยครับพี่น้อง เห็นเหล่าอัศวินและเทพทั้งหลายแลกเปลี่ยนความรู้กันแล้วรู้สึกทึ่งมากๆ ทำให้ผมพลอยได้รับประโยชน์ไปด้วย


    ขอบคุณมากๆ ครับ
    Date : 2010-07-31 15:16:08 By : mrsitti
     


     

    No. 216



    โพสกระทู้ ( 15 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    เพิ่งจะได้เข้ามาศึกษา php ฝากเนื้อฝากตัวด้วยนะครับ
    Date : 2010-07-31 15:27:38 By : meduzaa
     


     

    No. 217



    โพสกระทู้ ( 39 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เดี๋ยวจะลองศึกษาดูครับ
    Date : 2010-07-31 19:04:54 By : smokietor
     


     

    No. 218



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ขอนำไปศึกษาหน่อยนะครับ
    Date : 2010-07-31 20:18:28 By : kitnaruk99
     


     

    No. 219



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากเก่งแบบ..เทพ..จัง..อยากเปนเทพอะครับ
    Date : 2010-07-31 22:06:55 By : kirita_a
     


     

    No. 220



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เด๋วจะไปลองใช้ดู
    Date : 2010-07-31 22:55:24 By : pound_3066
     


     

    No. 221



    โพสกระทู้ ( 182 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5 Blogger

    จะทำตามที่ท่าน........ต้องการ
    Date : 2010-07-31 23:55:20 By : mosaddzero
     


     

    No. 222



    โพสกระทู้ ( 14 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังศึกษาอยู่ครับ แต่ยังไม่ค่อยถนัดเท่าไร
    Date : 2010-08-01 06:51:17 By : bennadic
     


     

    No. 223



    โพสกระทู้ ( 12 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    กำลังสนใจพอดีคะ แต่ว่าไม่เก่งเลยยยยยยยยยย เห้อ
    Date : 2010-08-01 11:00:18 By : pondpond
     


     

    No. 224



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ยอดเยี่ยมมากเลยครับ
    ต้องศึกษาเพิ่มเติมอีกเยอะเลยผม
    Date : 2010-08-01 11:04:28 By : paitoons
     


     

    No. 225



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Hi5

    น่าลองเล่นดูจัง
    ขอบคุณที่แนะนำ สำหรับความรู้ต่างๆ
    Date : 2010-08-01 13:38:13 By : monsterb
     


     

    No. 226



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ยัง งง อยู่ว่า What's thaicreate.com?
    Date : 2010-08-01 13:57:40 By : joecnx
     


     

    No. 227



    โพสกระทู้ ( 61 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เดี๋ยวขอสอบกลางภาคเส็ดก่อนคับ เดี๋ยวจะมาฝึกการเขียนแบบ oop แบบจริงจัง
    เวลาไม่รอใคร จพยายามให้ถึงที่สุด ท่าทางจะยากใช่ย่อย
    หุหุ
    Date : 2010-08-01 14:44:30 By : pipop1150
     


     

    No. 228



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    get the point
    Date : 2010-08-01 15:46:33 By : nitic
     


     

    No. 229



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5 Blogger

    อืมขอบคุณ ไม่ได้มาเยี่ยมชุมนานมากมาย เปลี่ยนแปลงไปเยอะ
    Date : 2010-08-01 16:48:41 By : kaggyman
     


     

    No. 230



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    เห็นด้วยอย่างแรงครับ เพราะเหมาะแกการ reuse มากๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ
    Date : 2010-08-01 19:18:37 By : pongpon_eve
     


     

    No. 231



    โพสกระทู้ ( 31 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Blogger

    ผมอยากศึกษามานานแล้วครับ พอดีทำโปรเจคจบอยู่
    ท่าทางจะยาก แต่ก็ต้องลองดู
    อิอิ
    Date : 2010-08-01 19:30:28 By : cskaza
     


     

    No. 232



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผมเห็นด้วยอย่างยิ่งเลยครับ เขียนแบบ OOP นี่จะยุ่งยากตอนแรกๆ แต่พอเรียบร้อยก็จะทำให้โค๊ดเราดูง่าย แก้ไขง่าย
    Date : 2010-08-01 20:22:42 By : intrinity
     


     

    No. 233



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เยียมมากเลยครับ มีเวลาว่าแล้วจะลองศึกษาดูครับ
    Date : 2010-08-01 20:25:45 By : renovrtio
     


     

    No. 234



    โพสกระทู้ ( 15 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    เดี๋ยวว่าง ๆ จะมาศึกษาดูค่ะ อยากเขียนเป็นมั้ง
    Date : 2010-08-01 22:24:58 By : catty_hp
     


     

    No. 235



    โพสกระทู้ ( 13 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    อยากเขียนเป็นเหมือนกันอะ ไว้จะศึกษาดู ^^
    Date : 2010-08-01 22:44:04 By : mitscsu
     


     

    No. 236



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีมากคับ
    Date : 2010-08-02 01:22:14 By : buvanan
     


     

    No. 237



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนใจครับ
    Date : 2010-08-02 07:16:43 By : okazaa
     


     

    No. 238



    โพสกระทู้ ( 17 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ยอดเยี่ยมครับ กำลังจะศึกษา
    ได้แนวทางต่อยอดพอดี
    Date : 2010-08-02 08:32:56 By : yodfiin
     


     

    No. 239



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ก่อนอื่นก็ขอบคุณก่อนนะครับ สำหรับกระทู้ดีๆ อะไรที่ดีๆ ก็เก็บไว้ครับ คนเราเลือกได้
    Date : 2010-08-02 08:33:39 By : ton280176
     


     

    No. 240



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    *-*
    Date : 2010-08-02 08:43:31 By : reckadmcr
     


     

    No. 241



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ก้อดีนะ
    Date : 2010-08-02 08:44:53 By : reckadmcr
     


     

    No. 242



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณมากครับ สำหรับแนวทางดีดี แต่ผมเองคงต้อง เรียนรู้อีกเยอะ เลย

    +1 ครับ
    Date : 2010-08-02 09:49:34 By : rexchrono
     


     

    No. 243



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณครับ อยากได้อยู่พอดี มีประโยชน์มากครับ
    Date : 2010-08-02 09:49:35 By : sungwein
     


     

    No. 244



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีครับกระทู้นี้
    กำลังหัดเขียนแบบ OOP เลยครับ
    Date : 2010-08-02 10:07:02 By : konbin
     


     

    No. 245



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีครับ ผมก็เขียน แบบ OOP เหมือนกัน

    ดีครับ เห็นด้วย ช่วยกัน รณรงค์ๆ

    ตัวอย่าง เข้าใจง่ายดีครับ ขอชมนะครับ

    Date : 2010-08-02 10:33:20 By : supasit_vn
     


     

    No. 246



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    เยี่ยมครับ ช่วยรณรงค์ครับผม
    Date : 2010-08-02 12:14:54 By : dekkeng
     


     

    No. 247



    โพสกระทู้ ( 43 )
    บทความ ( 0 )



    สถานะออฟไลน์


    แบบ OOP เขียนไม่ยาก
    แล้วก็หาจุดที่ผิดง่ายขึ้นด้วยนะค่ะ
    Date : 2010-08-02 13:35:36 By : Kmay
     


     

    No. 248



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เห็นด้วย...การเขียนแบบ oop แก้ไขข้อผิดพลาดได้สะดวก
    ไม่ว่าจะด้วยภาษาใด...ลองหันมาเขียนแบบ oop ดูแล้วจะรู้สึกได้ถึงความแตกต่าง
    Date : 2010-08-02 13:43:56 By : chada_pr
     


     

    No. 249



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ที่ Thaicreate มีกูรูฝีมือดีคอยให้คำแนะนำอยู่
    ไม่ยากเลยถ้าจะลองเริ่มต้นกับการเขียนโปรแกรมแบบ oop
    Date : 2010-08-02 13:45:44 By : chada_pr
     


     

    No. 250



    โพสกระทู้ ( 49 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ขอบคุณครับคุณ Nut ผมอยากศึกษา เกี่ยวกับ OOP พอดีเลย ซึ่งกำลังฮิตสุดๆเลย
    Date : 2010-08-02 15:03:35 By : dragonjza
     


     

    No. 251



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณค่ะ กำลังเริ่มต้นศึกษาoop อยู่พอดีเลยค่ะ^^
    Date : 2010-08-02 17:05:44 By : sheik
     


     

    No. 252



    โพสกระทู้ ( 6 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    ดีครับ..อยากโค้ดเป็นบ้าง..

    มีประโยชน์มากๆ ครับ..ทันสมัยดี
    Date : 2010-08-02 17:38:15 By : aunmsu
     


     

    No. 253

    Guest


    เอ่อ ขอขอบพระคุณทุกๆท่านครับผมที่กรุณายกตัวอย่างบ้าง ให้คำแนะนำบ้าง (แต่บางทีก็มีตีกันบ้าง เหอๆๆ)ผมซื้อแต่หนังสือมาอ่นจนปวดตับแล้ว ยังไปไหนไม่รอดเลย(โง่ อยู่นั่น) จะรีบพยายาม อดหลับ อดนอน ให้มากกว่าเดิม เพื่อเสริมรอยหยักในสมองครับ ขอสัญญา ด้วยเกียรติ ของลูกเสือสำรอง ครับ หุหุหุ
    Date : 2010-08-02 18:48:46 By : farook
     


     

    No. 254



    โพสกระทู้ ( 464 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook Hi5

    ขอพูดรวมๆครับการกำหนดค่าและเข้าถึง property ไม่ควรเป็น getName หรือ setName ควรใช้ชื่อเดียวในการเข้าถึง
    จะดูเหมือนเป็น function ธรรมดา ไม่ใช่ property เช่นกำหนดค่าก็ใช้ $this->Name('dekku'); การอ่านค่าก็ควรเป็น this->Name();
    จะให้ความรู้สุกเป็น property มากกว่าน่ะครับ

    Code (PHP)
    <?
    class people
    {	
    	private static $name="";
    /*
    ถ้าเรียกใช้ function โดยมีตัวแปรในวงเล็บเป็นการอ่าน
    ถ้าเรียกใช้ function โดยไม่มีตัวแปรในวงเล็บเป็นการตั้งค่า
    */
    	public static function Name($in="")
    	{
    		if($in=="")
    			{
    				echo self::$name;
    			}		
    		else
    			{
    				self::$name=$in;
    			}	
    	}
    }
    $test=new people('weera');
    $test->Name('hacker');
    $test->Name();
    ?>
    



    ประวัติการแก้ไข
    2010-08-02 22:18:13
    Date : 2010-08-02 22:11:49 By : dekkuza
     


     

    No. 255



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณครับ
    กำลังลองผิดลองถูกกับการเขียน OOP อยู่เลยครับ
    Date : 2010-08-02 22:15:57 By : bubbleworm
     


     

    No. 256



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เ้ขียนเป็น class ดี ครับ เพราะเราสามารถนำกลับมาใช้ใหม่ได้ หรือปรับปรุง นิดเดียวก็สามารถใช้งานได้เลย ดีครับ
    Date : 2010-08-03 09:20:29 By : kruanet_7
     


     

    No. 257



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อาจจะเป็นการทำงานที่ช้าในช่วงแรกๆแต่ สบาย ที่หลังเนอะ
    Date : 2010-08-03 10:57:11 By : sorapolt
     


     

    No. 258



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    อยากให้มีหัวข้อ เกี่ยวกับพื้นฐานของ OOP เพิ่มเติมครับ
    Date : 2010-08-03 10:58:28 By : kensawa
     


     

    No. 259



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    เดินหน้ากันต่อไป
    Date : 2010-08-03 17:07:03 By : kokko
     


     

    No. 260



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Blogger

    เก่งๆกันทั้งนั้นเลย
    Date : 2010-08-03 17:55:32 By : kaisoft
     


     

    No. 261



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากเขียนเป็นมั่งจังครับ
    Date : 2010-08-03 18:52:26 By : mameenoy
     


     

    No. 262



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    โชคดี ที่ได้เริ่มเขียนโปรแกรมแบบ OOP เลย
    ส่วนตัวแล้ว เริ่มจาก JAVA แล้วค่อยมาเขียน PHP ฉะนั้นเขียน OOP เลยไม่ยากเท่าไรนัก
    ไม่ยากนะค่ะ ถ้าเข้าใจ
    Date : 2010-08-03 19:46:43 By : mammiez
     


     

    No. 263



    โพสกระทู้ ( 10 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    อย่างงี้ต้องลองครับ
    Date : 2010-08-03 20:07:54 By : kakarot
     


     

    No. 264



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังศึกษาการเขียน PHP แบบ OOP กับ การใช้ PHP Framework อยู่พอดีเลย

    ขอบคุณมากค่ะ ที่ให้ความรู้ ^^
    Date : 2010-08-03 20:20:35 By : MolToptaP
     


     

    No. 265



    โพสกระทู้ ( 6 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากเขียนโปรแกรมเก่งๆ มั่งจัง ข้าน้อยยังอ่อนด้อยนัก
    Date : 2010-08-03 21:22:22 By : bluebaarii
     


     

    No. 266



    โพสกระทู้ ( 9 )
    บทความ ( 0 )



    สถานะออฟไลน์


    สนใจอย่างแรง แต่ตอนนี้ยังเขียนได้แค่พื้นฐาน
    จะพยายามสู้ต่อไปครับ
    Date : 2010-08-04 02:28:35 By : Soda-Ice
     


     

    No. 267



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    พยายามต่อไปนะครับ
    Date : 2010-08-04 03:27:19 By : kinomini
     


     

    No. 268



    โพสกระทู้ ( 28 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เยี่ยมมากครับ กำลังศึกษาเหมือนกันครับ
    Date : 2010-08-04 05:07:57 By : parda012
     


     

    No. 269



    โพสกระทู้ ( 10 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากให้รวมทำเป็นหนังสือ เป็น pdf ให้โหลดอ่านกันได้หรือเปล่าครับ
    Date : 2010-08-04 08:46:37 By : sak5555
     


     

    No. 270



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    โดยส่วนตัวเขียนโค้ดเองไม่เป็นได้แต่เพียงศึกษาและใช้งานเครื่องมือต่างๆเท่านั้นซึ่งมันง่ายก็จริง แต่เราต้องมีในสิ่งที่คนอืนไม่มีเลยอยากลองเขียนเองดูบ้าง มันยากไหมครับ อยากลองดูจังเลยครับ แล้วจะเข้ามาศึกษาจากที่นี่บ่อยๆครับ
    Date : 2010-08-04 08:59:15 By : arther
     


     

    No. 271



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    สอนตัวอย่างเยอะๆ นะครับ
    จะได้เข้าใจได้ง่ายๆ หลายๆ แบบ
    Date : 2010-08-04 09:32:14 By : nonilsri
     


     

    No. 272



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มีประโยชน์ดีครับสอนคนไม่เป้นด้วยนะครับเพราะคนไม่เป็นอ่านไม่ค่อยออก ?><
    Date : 2010-08-04 10:23:15 By : mongames
     


     

    No. 273



    โพสกระทู้ ( 12 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ดีครับ ผมเห็นด้วย
    เอาเลย ๆ ว่าง ๆ จะเข้ามาช่วยด้วย
    เอาจากที่นี่ไปเยอะแหละ
    Date : 2010-08-04 10:30:56 By : didoman
     


     

    No. 274



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    อยากไ้ด้ เมลล์เทพ สักท่านจังครับ
    ไม่รู้เรื่องไรคงจะได้ความรู้มากขึ้น

    ปล.เพิ่งหัดเขียนครับแต่ไม่เก่งเรื่อง class ยังเริ่มต้นอยู่เลยครับ
    Date : 2010-08-04 15:21:56 By : narin_2205
     


     

    No. 275



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    สุดยอดเลยครับ ผมกำลังเริ่มศึกษาแนวคิด OO อยู่พอดีเลย จะได้มีที่แลกเปลี่ยนครับ
    Date : 2010-08-04 15:48:42 By : pakky999
     


     

    No. 276



    โพสกระทู้ ( 150 )
    บทความ ( 3 )



    สถานะออฟไลน์
    Twitter Facebook

    เห็นด้วยครับ เพราะมันแก้ง่ายกว่าแบบโครงสร้างเยอะเลย
    Date : 2010-08-04 15:49:50 By : pichitchaip
     


     

    No. 277



    โพสกระทู้ ( 183 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    เว็บนี้ดีจริงๆ นึกอะไรไม่ออกก็มาที่นี่ได้คำตอบทุกที
    Date : 2010-08-04 17:34:08 By : melodyApinan
     


     

    No. 278



    โพสกระทู้ ( 36 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ++ ;
    ให้ไปเลย
    Date : 2010-08-04 18:26:33 By : omeezyo
     


     

    No. 279



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ก็อย่างที่เจ้าของกระทู้แนะนำค่ะ น่าจะเปลี่ยนวิธีการเขียนมาเป็นแบบ OOP ยังไงจะลองเปลี่ยนมาเขียนแบบนี้ดีกว่า
    Date : 2010-08-05 09:26:30 By : isumi_jang
     


     

    No. 280



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เคยลองเขียนอยู่ครับ จะยากตอนแรก ๆ แต่พอทำไว้เหมดแล้ว เวลาอยากได้อะไรใหม่

    ทำได้เร็วมากเพราะเราทำเป็น Function ไว้หมดแล้ว
    Date : 2010-08-05 09:41:22 By : hunter_cis
     


     

    No. 281



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากลองเขียนแบบOOP
    บ้างอะคับ
    งัยก็จะเข้ามาติดตามผลงานเรื่อยๆคัย
    Date : 2010-08-05 10:55:33 By : singtocs
     


     

    No. 282



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากเขียนเป็นมั่งจัง แต่แค่พื้นฐานก็ยัง งงๆ
    Date : 2010-08-05 11:12:26 By : cs_thammakan
     


     

    No. 283



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    เพิ่งเริ่มหัดเขียน php แนว oo แต่ไม่รู้ว่าจะได้เริ่มมั๊ย ขอบคุณมากเลยนะคะที่มีบทความแบบนี้มาให้ศึกษา
    Date : 2010-08-05 14:21:01 By : aey43
     


     

    No. 284



    โพสกระทู้ ( 44 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    อยากลองเต็มๆบ้างจัง
    Date : 2010-08-05 16:19:38 By : iheerman
     


     

    No. 285



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากลองเขียนบ้าง..
    Date : 2010-08-05 20:10:20 By : dragon_ryu
     


     

    No. 286



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ต้องลองแน่ๆ
    Date : 2010-08-05 21:58:24 By : pirwun
     


     

    No. 287



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ต้อง ลองศึกษา ดูแล้ว ขอบคุณครับ ที่นำเสอนสิ่งดีมาให้ศึกษาครับ
    Date : 2010-08-06 12:14:26 By : ufirst
     


     

    No. 288



    โพสกระทู้ ( 8 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณมากๆครับกำลังหาอยู่พอ
    Date : 2010-08-06 12:16:02 By : lajlwm
     


     

    No. 289



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ได้ความรู้อื้อเลย Thank U
    Date : 2010-08-06 14:37:20 By : lidter
     


     

    No. 290



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Hi5

    ผมค่อนข้างจะงงๆๆ เพราะว่า ผมมือไหม่อยู่ อิอิ
    Date : 2010-08-06 16:14:10 By : fishopat
     


     

    No. 291



    โพสกระทู้ ( 9 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังจะเริ่มเขียนใหม่เหมือนกันค่ะ
    Date : 2010-08-06 18:15:27 By : sirilak999
     


     

    No. 292



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ได้ความรู้มากมายเลยครับ.......เป็นแนวทางในการพัฒนาต่อไป..........
    Date : 2010-08-07 10:51:36 By : The_Thank
     


     

    No. 293

    Guest


    สนับสนุน ได้ความรู้เยอะมากครับ
    Date : 2010-08-08 17:40:57 By : mixer
     


     

    No. 294



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    สุดยอดครับ
    Date : 2010-08-08 21:42:53 By : minimum
     


     

    No. 295



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณครับ สำหรับบทความดีดี
    Date : 2010-08-08 22:48:51 By : haguhagu200
     


     

    No. 296



    โพสกระทู้ ( 48 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    ผมมีขอสงสัย ว่า

    การเขียนระหว่าง oop กับ php framework ต่าง ๆ เช่น cakephp , ci , zend และอื่น ๆ มีข้อแตกต่างกัน อย่างไร

    คัยก็ได้ช่วยแนะนำที ว่า ผมควรจะใช้ framework ตัวไหน เพราะสาเหตุ ไร

    ตอนนี้ผมใช้ ado อยู่

    ขอบคุณครับ
    Date : 2010-08-08 23:14:41 By : nopaket_kong
     


     

    No. 297



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณกับสิ่งดีๆที่มีให้กันตลอดมา
    Date : 2010-08-09 08:54:49 By : ronman
     


     

    No. 298



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีมากเลยครับ ง่ายและฟรีน่าสนใจมาก
    Date : 2010-08-09 09:01:34 By : DATEDATE
     


     

    No. 299



    โพสกระทู้ ( 293 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    สนใจครับ กำลังศึกษา เดี๋ยวจะมาให้ปรึกษา นะครับ
    Date : 2010-08-09 12:37:59 By : pumin99
     


     

    No. 300



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เป็นความคิดเห็นที่ดีครับ
    Date : 2010-08-09 13:27:19 By : spanishtt
     


     

    No. 301

    Guest


    ระบบใหญ่ลอง yii ครับ เร็วและเขียนอย่างละเอียดรอบคอบดีมากครับ
    Date : 2010-08-09 13:30:33 By : num
     


     

    No. 302



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    มือใหม่
    Date : 2010-08-09 22:36:04 By : birdman29
     


     

    No. 303



    โพสกระทู้ ( 4 )
    บทความ ( 2 )



    สถานะออฟไลน์
    Twitter

    Thanks mak mak

    ผมเขียนไม่เก่งอ่ะ
    Date : 2010-08-11 10:44:30 By : supaman
     


     

    No. 304



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มือใหม่อ่านแล้วปวดหัวเลย เขียนธรรมดาก็งงมากมาย ถ้าเขียนแบบOOPอีกหละก้อหัวละเบิดแน่ๆเลย -"- แต่ก็สนับสนุนครับเพราะยังไงก็เขียนJavaอยู่แล้ว หุหุ
    Date : 2010-08-11 23:22:55 By : yakuzaoooo
     


     

    No. 305



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์


    โอ พระเจ้า
    ทำให้มันยากขึ้นไปอีกรึเปล่าเนี่ย แต่ก็เพิ่งรุ้ว่ามันเขียนแบบ OOP ได้แฮะ
    Date : 2010-08-13 11:54:27 By : noppamas
     


     

    No. 306



    โพสกระทู้ ( 25 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผม หลอน กับ oop พอสมควรครับ หลอนเพราะว่า ผม แพ้ JAVA ด้วยมั้ง -_- แต่ ใจ นึง ชอบนะjava ภาษา บ้าอะไรไม่รู้ เขียนยาวดี 55
    Date : 2010-08-13 20:35:32 By : muay5157
     


     

    No. 307



    โพสกระทู้ ( 13 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    อือครับ

    แต่ตอนนี้ผมก็กำลังเรียน จาวาอยู่พอดีครับ

    ถ้าเอามาปรับใช้กับ php ได้ก็เยี่ยมเลยครับ

    ++
    Date : 2010-08-14 16:58:30 By : noomsci
     


     

    No. 308



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    สุดยอด OOP หรือ ไม่ คงต้องเป็นเรื่องของผู้ใช้แล้วครับ
    Date : 2010-08-14 21:27:49 By : apichat_L
     


     

    No. 309



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    oop เทอมที่แล้วเจอไปเต็มๆเลยครับ เหอะๆ ยาวได้ใจกันไป
    Date : 2010-08-15 01:06:16 By : dearcs
     


     

    No. 310



    โพสกระทู้ ( 39 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ยังมองภาพตัวอย่างไม่ออกเลยครับ มือใหม่
    Date : 2010-08-17 08:12:50 By : smokietor
     


     

    No. 311



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังพยายาม
    แต่ชินกับ function อยู่
    Date : 2010-08-20 14:03:45 By : watcharaha
     


     

    No. 312



    โพสกระทู้ ( 599 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ตอนนี้ผมทำโปรเจ็คทุกครั้งผมจะพยายามใช้แต่นึกไม่ออกว่าควรจะเริ่มที่อะไรยังไง

    คือมีความเข้าใจบ้างแต่ไม่รู้จะประยุกต์อย่างไร แล้วเวลาที่เราทำคลาสหนึ่งแล้วอีกคลาสหนึ่งที่ใช้พร้อมกันในหน้าเดียวกัน อะไรทำนองเนี้ยครับ

    งง

    สุดท้ายมาตายที่เขียนแบบ function ธรรมดาตลอด


    ปล. อยากทราบแนวคิดนะครับเวลาที่คนจะเขียน oop เขาจะคิดเรื่องการแบ่งคลาสอย่างไร สมมติว่าเป็นระบบง่ายๆเช่น ระบบหลังบ้าน แบบจัดการแค่ member อย่างเดียวลืมเพิ่มแก้ไขได้ ทำนองเนี้ยครับ
    Date : 2010-08-24 09:51:34 By : oxygenyoyo
     


     

    No. 313



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    ระบบหลังบ้าน แบบจัดการแค่ member อย่างเดียวลืมเพิ่มแก้ไขได้ ทำนองเนี้ยครับ

    ปกติถ้าเป็นระบบหลังบ้านผมจะมอง ออกเป็นสองส่วน

    1. การสร้าง form
    การสร้าง form ก็จะได้มา class นึงคือ class Form เวลาเราใช้งานก็แค่ประกาศ object แล้วส่ง พวก input ต่างๆ เข้าไปผมเรียกมันว่า configuration ละกันครับ
    2. การแสดงผล การแสดงผล
    - การแสดงผลก็อยู่ในรูปแบบของตาราง ได้ class นึงคือ Table
    - ถ้าต้องการแบ่งหน้าแสดงผล ก็จะได้มาอีก class นึง คือ Pager

    ลองเขียน 3 class นี่ด้วยตัวเอง ถ้าคุณเขียนได้แล้วคุณจะมองเห็นถึงประโยชน์ของมัน

    ที่สำคัญผมคิดว่า โค้ดเราจะเป็นระเบียบดูง่าย ซึ่งจะง่ายต่อการหา bug

    นี่ class ที่ผมเขียนไว้

    มีดดาบที่ไม่ได้ลับ ย่อมจะหมดความคมฉันใด ความรู้ที่ไม่ได้ใช้ก็ย่อมจะลืมไปฉันนั้น
    Date : 2010-08-24 13:25:20 By : DS_Ohm
     


     

    No. 314



    โพสกระทู้ ( 1,242 )
    บทความ ( 13 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    Quote:
    สุดยอด OOP หรือ ไม่ คงต้องเป็นเรื่องของผู้ใช้แล้วครับ


    ของแย้งความเห็นนี้นิดนึงครับ

    ผมว่ามันเป็นเรื่องของโปรแกรมเมอร์มากกว่านะครับ ผู้ใช้ไม่สนใจหรอกว่าระบบจะเขียนยังไง ขอให้หน้าตาสวยงาม ทำงานได้ตามความต้องการเท่านั้นเอง
    Date : 2010-08-24 13:28:00 By : DS_Ohm
     


     

    No. 315



    โพสกระทู้ ( 294 )
    บทความ ( 0 )



    สถานะออฟไลน์


    คือผมกำลังจะเขียน php เชิง oop อยู่เหมือนกันครับแต่ concept ผมยังไม่ได้เลยครับ

    ไม่รู็หลักการว่าทำงานยังไง พี่ๆที่มีน้ำใจสนับสนุน รบกวนกวนช่วยส่ง โค้ด php เชิง oop พร้อมคำอธิบาย
    จะเป็นพระคุณมากครับ เมล์ [email protected]
    Date : 2010-08-26 12:26:24 By : sleepington
     


     

    No. 316

    Guest


    ดูว่าพอสร้าง class แล้วเขียนเว็บง่ายขึ้นหรือยากขึ้นก็เป็นคำตอบว่าเขียน oop แบบที่ดีหรือเปล่า..
    Date : 2010-08-26 17:55:54 By : ...
     


     

    No. 317



    โพสกระทู้ ( 10 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุงง้าบบบบบบบบบบบบ
    Date : 2010-08-26 22:02:33 By : Sirichut
     


     

    No. 318



    โพสกระทู้ ( 599 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    Quote:
    ระบบหลังบ้าน แบบจัดการแค่ member อย่างเดียวลืมเพิ่มแก้ไขได้ ทำนองเนี้ยครับ

    ปกติถ้าเป็นระบบหลังบ้านผมจะมอง ออกเป็นสองส่วน

    1. การสร้าง form
    การสร้าง form ก็จะได้มา class นึงคือ class Form เวลาเราใช้งานก็แค่ประกาศ object แล้วส่ง พวก input ต่างๆ เข้าไปผมเรียกมันว่า configuration ละกันครับ
    2. การแสดงผล การแสดงผล
    - การแสดงผลก็อยู่ในรูปแบบของตาราง ได้ class นึงคือ Table
    - ถ้าต้องการแบ่งหน้าแสดงผล ก็จะได้มาอีก class นึง คือ Pager

    ลองเขียน 3 class นี่ด้วยตัวเอง ถ้าคุณเขียนได้แล้วคุณจะมองเห็นถึงประโยชน์ของมัน

    ที่สำคัญผมคิดว่า โค้ดเราจะเป็นระเบียบดูง่าย ซึ่งจะง่ายต่อการหา bug

    นี่ class ที่ผมเขียนไว้

    มีดดาบที่ไม่ได้ลับ ย่อมจะหมดความคมฉันใด ความรู้ที่ไม่ได้ใช้ก็ย่อมจะลืมไปฉันนั้น


    ผมจะลองดูนะครับแล้วจะทำมาให้ดูครับผม
    Date : 2010-08-27 12:33:56 By : oxygenyoyo
     


     

    No. 319



    โพสกระทู้ ( 8 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มันต่างกันอย่างไรครับ อยากลองทำเหมือนกันครับ
    Date : 2010-08-31 11:01:56 By : jakratam
     


     

    No. 320



    โพสกระทู้ ( 41 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าเขียนครับ แต่ต้องศึกษาก่อนนะ
    Date : 2010-08-31 12:30:39 By : yUmzA
     


     

    No. 321



    โพสกระทู้ ( 48 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีจังเลยค่ะพึ่งหัดเขียน
    Date : 2010-10-07 14:19:07 By : ueng
     


     

    No. 322



    โพสกระทู้ ( 30 )
    บทความ ( 0 )



    สถานะออฟไลน์


    รบกวนขอความรู้ OOP in PHP หน่อยครับ ผมคิดจะเขียน แต่ไม่รู้จะเขียนอย่างไงดี ผมยัง งงๆ กับ OOP in PHP อยู่เลยครับ
    Date : 2010-10-11 14:55:32 By : 2m2n
     


     

    No. 323



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5

    คล้าย c++ เลย
    ดูไม่น่ายากนะคะ ถ้ามีปัญหาอะไรคงต้องขอปรึกษาหน่อยแล้วล่ะค่ะ ^^
    Date : 2010-10-11 20:26:00 By : princezpunch
     


     

    No. 324



    โพสกระทู้ ( 1,751 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ลงนามใช้ oop ด้วยคนครับ อิอิอิอิอิอิ ผมได้ทดลองเขียน บน joomla ดูแล้ว ครับ เห็นถึงความสะดวกและเป็นระเบียบเลยชอบครับ
    Date : 2010-10-12 13:09:03 By : SOUL
     


     

    No. 325



    โพสกระทู้ ( 150 )
    บทความ ( 3 )



    สถานะออฟไลน์
    Twitter Facebook

    ยังไงช่วยแก้โจทย์นี้ให้ผมที ผมเพิ่งหัดเล่นครับ


    https://www.thaicreate.com/php/forum/050116.html
    Date : 2010-10-12 21:49:31 By : pichitchaip
     


     

    No. 326



    โพสกระทู้ ( 6 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เยี่ยมมากเลยครับ กระทู้นี้มีประโยชน์อย่างมากกับการพัฒนาโปรแกรมครับ
    Date : 2010-10-15 21:35:43 By : hanami99
     


     

    No. 327



    โพสกระทู้ ( 106 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอถามหน่อยนะครับสมมุติว่าผมเขียน class จัดการตาราง ดึงข้อมูลมาโชว์ ผมจะสร้าง new object ใหม่แล้วให้มันโชว์ข้อมูลเป็นแถวเป็นคอรัม
    ยังไงครับ


    <?php
    class book {
         var $book_id;
         var $au_id;
         var $isnb_no;
         var $book_name;
         var $str_massage;
    
    function book() {
        $this->book_id = "";
        $this->au_id = "";
        $this->isnb_no = "";
        $this->book_name = "";
        $this->str_massage = "";
    }
    
    function select_tbl_book($page){
    						$db_connet = new db_connect();
    						$util = new utility();
    						$rowPerPage = $util->getRowPerPage();
    						$dataList = array();
    						
    						$select_sql = "SELECT "
    									." tbl_book.book_id"
    									.",tbl_book.au_id"
    									.",tbl_book.isnb_no"
    									.",tbl_book.book_name"
    									." FROM tbl_book"
    									." WHERE tbl_book.book_id <> 0";
    						$select_sql .= " ORDER BY tbl_book.book_id ";
    						
    						$select_rst = mysql_query($select_sql);
    						$numRec = mysql_num_rows($select_rst);
    
    						
    					
    						$maxPage = ceil($numRec/$rowPerPage);			
    						
    						if($page == NULL || $page == ""){
    								$page = 1;
    								$max = $rowPerPage;
    						}else{
    								$max = $page*$rowPerPage;
    						}	
    						
    						if($page==1){
    								$min = 0;
    						}else{
    								$min = $max - $rowPerPage;
    						}	
    						
    						$rec = $min;
    						$select_sql .= " LIMIT $min,$rowPerPage";
    						$select_rst = mysql_query($select_sql);
    						
    						$dataList[0] = $page;
    						$dataList[1] = $maxPage;
    						$dataList[2] = $numRec;
    						$i=3;
    					
    						
    						while($select_row=mysql_fetch_object($select_rst)){
    								$rec++;
    								$dataList[$i] = $rec;
    								$dataList[$i+1] = $select_row->book_id;
    								$dataList[$i+2] = $select_row->au_id;
    								$dataList[$i+3] = $select_row->isnb_no;
    								$dataList[$i+4] = $select_row->book_name;
    							
    								$i += 5;
    						}
    						return $dataList;
    				}
    }
    ?>
    

    Date : 2010-11-08 14:47:58 By : teekaiman
     


     

    No. 328

    Guest


    http://web-programming-bookmark.blogspot.com/search/label/oop
    Date : 2010-11-08 14:50:24 By : num
     


     

    No. 329



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เขียนแบบ oop ก็ดีนะคะ ขอตัวอย่างเยอะ ๆ หน่อยได้ไหมคะ เผื่อศึกษาหน่ะคะ ขอบคุณล่วงหน้านะคะ
    Date : 2010-11-08 15:31:05 By : auengfa
     


     

    No. 330

    Guest


    เขียน php แบบ oop ทำได้ถ้าเก่งแล้ว จริงๆนะ มันเป็นสัดส่วนดี
    แนะนำ ถ้าคนพึ่งเริมเขียนโปรแกรมแบบ oop ไปเริ่มกับอะำไรที่เป็น real oop ไม่ดีกว่าหรือครับ
    ให้เทพเค้า mix&math เองดีกว่า
    Date : 2010-11-19 10:48:12 By : kabarobace
     


     

    No. 331

    Guest


    oop คือการเขียนโปรแกรมแบบอ้างอิงเหมือนวัตถุไม่ใช่ภาษา ดังนั้นภาษาอะไรถ้าเข้าใจ oop ก็เขียน oop ได้
    Date : 2010-11-20 00:07:37 By : --
     


     

    No. 332

    Guest


    พี่ๆๆครับ ช่วยชี้แนวทางให้ผมหน่อยครับ
    พอดีผมเรียน vb.net อ.ท่านสั่งให้เขียนโปรแกรม แบบว่า มีฟอร์มอยู่ 5 ฟอร์ม โดยฟอร์มทั่งหมดจะต้องใช่โค้ดร่วมกัน
    ช่วยชี้แนวทางให้ด้วยนะครับ
    (มือใหม่หัดเขียน)
    ขอบคุณครับ
    Date : 2010-11-20 18:14:16 By : เด็มคอมศึกษา
     


     

    No. 333



    โพสกระทู้ ( 1,025 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    มีคำถามนิดหน่อยครับ คือแบบว่าสงสัย

    OOP ต่างกับ function อย่างไร เพราะโครงสร้างของ OOP เป็น
    Code (PHP)
    <?php
    class ... {
       function ....() {
         คำสั่งใน method()
       }
    
    }
    ?>
    



    ซึ่งจากที่ดู function จะถูก Encapsulation โดย class เวลาเรียก ต้องสร้าง Object ผ่าน class

    แต่ถ้าเราเขียนเป็นฟังก์ชั่นเลย ไม่ต้องประกาศ class ก็สามารถ เรียกชื่อฟังก์ชั่นมาใช้ได้เลย


    ผมเลยงงว่า มันต่างกันอย่างไร มีดี มีเสียอย่างไร อะไรที่ function ทำไม่ได้ แล้ว OOP ทำได้

    หรือผมอาจจะยัง ไม่ค่อยเข้าใจใน OOP ก็ไม่รู้อ่ะครับ


    ขอความกระจ่างด้วยนะครับ ขอบคุณครับ
    Date : 2010-11-21 17:41:56 By : adaaugusta
     


     

    No. 334



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    ตอบโพส 333

    โดยทั่วไปแล้วถ้าคุณได้ศึกษา หรือเข้าใจถึงจิตใจคนที่ออกแบบ หรือคิดวิธีการเขียนโปรแกรมเชิงอ๊อบเจกต์ คุณคงไม่ถามคำถามนี้เป็นแน่
    ต้องเริ่มเกริ่นไป เล็กน้อยซึ่งเป็นแนวคิดพื้นฐานในการออกแบบการพัฒนาโปรแกรมเชิงอ็อบเจกต์ (ผมอธิบายไม่เก่งนะคับ)

    โดยให้มองว่า ทุกสิ่งหรือบางสิ่งเป็น สิ่งของ หรือวัตถุ สิ่งมีชีวิต <-- สำคัญมากสำหรับการเข้าใจ OOP
    ซึ่งมันเป็นการเอาชีวิตจริงที่เราได้พบ มาใช้ประโยชน์ ในเชิง การพัฒนาโปรแกรม โดยเราพยายามมององค์ประกอบของโปรแกรมที่เราพัฒนาให้เป็นวัตถุ ที่อาจมีทั้งสถานะ(Attribute) และการทำงาน(Behavior) ซึ่งบางทีคนที่เคยเขียนแบบ functional หรือ imperative อาจทำให้สับสนและไม่สามารถลองคิดการทำงานของระบบให้เป็นเชิงวัตถุได้ ซึ่งชีวิตจริงกับการเขียนโปรแกรมนั้น มันไม่ได้เหมือนกันจริงๆ เพราะโปรแกรมนั้น ยังมีการทำงานหลายอย่างที่ส่วนมากเป็น logic

    แต่ว่า คนออกแบบเขาก็คงคิดให้มันใช้ประโยชน์ได้มากที่สุด

    Quote:
    ซึ่งจากที่ดู function จะถูก Encapsulation โดย class เวลาเรียก ต้องสร้าง Object ผ่าน class

    แต่ถ้าเราเขียนเป็นฟังก์ชั่นเลย ไม่ต้องประกาศ class ก็สามารถ เรียกชื่อฟังก์ชั่นมาใช้ได้เลย
    คับ ใช่คับ มันไม่มีความจำเป็นที่จะต้องทำอย่างนั้นในการเขียนโปรแกรมแบบทั่วๆ ไป

    Quote:
    ผมเลยงงว่า มันต่างกันอย่างไร มีดี มีเสียอย่างไร อะไรที่ function ทำไม่ได้ แล้ว OOP ทำได้

    หรือผมอาจจะยัง ไม่ค่อยเข้าใจใน OOP ก็ไม่รู้อ่ะครับ
    อธิบายก่อนนะครับ การเขียนแบบ OOP ทำให้เราสามารถมองเห็นส่วนประกอบของโปรแกรมของเราเป็นวัตถุ โดยช่วยให้เรามองภาพรวมได้ง่ายขึ้น เช่น เกมบางเกมมีตัวละคร เราให้ตัวละคร 1 เป็น object 1 ได้ อาวุธชิ้น 1 ก็ถือว่าเป็น 1 object และอื่นๆ ให้มองเป็น วัตถุ

    ซึ่งจากเหตุผลของการพัฒนาโปรแกรมที่ซ้ำซาก ต่อเนื่อง ถึงแม้เราจะเขียนฟังชั่น แต่ฟังชั่นมันไม่รู้เหตุผล ว่าฟังชั่นไหน ควรใช้กับอะไร ดังนั้นผู้ออกแบบ OOP ให้มีคุณสมบัติ Encapsulation เพื่อให้ ฟังชั่นการทำงาน มีการทำงานเฉพาะกับข้อมูลของมัน และในการใช้งานจริง ทำให้ง่ายในการเข้าใจคำสั่งด้วยเช่น

    $man = new Human;
    $man->die(); // Human::die(); ซึ่งชื่อมันก็บอกว่าคนตาย

    ซึ่งยัง OOP ยังมีคุณสมบัติอีกหลายอย่าง ทำให้การพัฒนา โปรแกรมนั้นสะดวกยิ่งขึ้น ลดความซ้ำซ้อนของคำสั่ง มองระบบได้ง่ายขึ้น(มองเป็นวัตถุ)

    ไม่รู้ว่าผมจะอธิบายให้เห็นภาพได้อย่าง ไร แต่ที่อธิบายไป มันยังไม่ครอบคลุม ดังนั้น ให้ดูตัวอย่างคุณสมบัติเพิ่มเติม นะครับ
    1. Inheritance ถ่ายทอดคุณสมบัติ ให้มองว่าเป็นสิ่งมีชีวิต ที่ มีการวิวัฒนาการ ทั้งคุณสมบัติ และความประพฤติ

    2. Scop visibility (private, protected, public) อันนี้ช่วยบอกว่า การกระทำหรือคุณสมบัติไหน ถูกเรียกได้จากที่ไหน (ทำให้ใช้ชื่อตัวแปรหรือเมธอดชื่อเดียวกันได้ด้วย โดยไม่ต้องกลัวซ้ำกับอันอื่น)

    3. Encapsulation ข้อมูลสามารถกระทำได้ ไม่ใช่แค่โปรแกรมกระทำกับข้อมูล (อย่างที่อธิบายไป)
    ตย.
    class X{
    private $abc = 55;
    function y()
    {
    $this->abc += 45;
    }

    public function __toString()
    {
    return (string) $this->abc;
    }
    }

    $x = new X;
    $x->y();
    echo $x;

    // none oop
    $x = 55;
    $x += 45;
    echo $x;


    อื่นๆ จำไม่ได้แล้วคับ
    ซึ่งคุณสมบัติหลายๆ อย่างของ OOP ทำให้เราสามารถสร้างรูปแบบ(pattern) การพัฒนาได้หลายรูปแบบ และทำให้เข้าใจการทำงานของระบบได้ง่ายขึ้น เมนเทน ง่ายขึ้น ครับ


    ปล. ไม่รู้จะอธิบายอย่างไร แต่ถ้าเข้าใจแล้ว ก็อาจอธิบายไม่ถูกเหมือนกัน ^^
    Date : 2010-11-21 19:40:37 By : pjgunner.com
     


     

    No. 335



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    oop vs procedural
    พูดถึงตัวแปร global ก่อนนะครับ
    ถ้าใช้ตัวแปร global แสดงว่าทุก function สามารถเข้าถึงตัวแปร global ได้หมด
    เวลาเกิด error ขึ้นในโปรแกรม โดยเฉพาะ error จาก logic เราจะไม่สามารถวิเคราะห์ได้ว่า
    ภายใน function ไหนที่เป็นตัวเข้าไปแก้ไขทำใ้ห้ตัวแปร global หรือโปรแกรมของเราทำงานผิดพลาด
    ดังนั้นภายในโปรแกรมควรจะจำกัดตัวแปร global ให้น้อยที่สุดครับ

    ถึงจะมีข้อแนะนำว่าไม่ควรใช้ตัวแปร global หรือใช้น้อยที่สุด
    แต่ว่าบางโปรแกรมที่จำเป็นต้องใช้ตัวแปรร่วมระหว่าง function ครับ
    f1($a); ต้องการตัวแปร $x ไปประมวลผล
    f2($a,$b); ต้องการตัวแปร $x ไปประมวลผล
    f2($c,$d); ต้องการตัวแปร $x ไปประมวลผล
    ซึ่งถ้าเราไม่ใช้ตัวแปร global เราก็ต้องเขียนแบบนี้ครับ
    f1($a,$x);
    f2($a,$b,$x);
    f2($c,$d,$x);
    แต่ว่าปัญหาเกิดครับ มีโค้ดซ้ำ ได้แก่ ,$x ซึ่งทำให้โปรแกรมเขียนและอ่านยากขึ้น
    และเราไม่สามารถบอกได้ว่า function f1,f2,f3 มีความสัมพันธ์ต่อเนื่องกันหรือไม่
    ซึ่งถ้าเขียนแบบ function ก็ทำได้ครับเช่น mysql_connect, mysql_query อันนี้เป็นการระบุความสัมพันธ์จาก คำหน้าหน้าชื่อ function

    สำหรับการเขียนแบบ class นะครับ
    เป็นการแก้โจทย์ปัญหาเกี่ยวกับตัวแปรร่วมที่ใช้ function ต่างๆ โดยไม่ต้องส่ง parameter ไปมา
    การสร้างเป็น class นั้น ตัวแปรที่เป็นตัวแปรร่วมจะเรียกว่า member ของ class
    ส่วน function จะเรียกว่าเป็น behavior ของ class (บรรทัดนี้และบรรทัดบนนี้ไม่รู้ถูกป่าวนะผมก็แค่ฟังๆผ่านๆจาก lecture ที่มหาวิทยาลัย)
    ประโยชน์อย่างหนึ่งก็คือจัดกลุ่มของ function ที่สัมพันธ์กันโดยไม่ต้องมี คำนำหน้าเดียวกัน และไว้ที่เดียวกัน
    ประโยชน์อีกอย่างคือ ตัวแปร member จะถูกแก้ไขโดย function และำคำสั่งภายใน class เท่านั้น
    ทำให้พอจะระบุตำแหน่งของ error ได้ง่ายขึ้น เพราะในการเขียนแบบ oop ไม่จำเป็นต้องใช้ตัวแปร global มากมายอย่างในแบบ procedural
    ประโยชน์อีกอย่างก็คือการจัดรูปแบบของ program จะมีลักษณะเป็นวัตถุกลุ่มก้อนมากขึ้น
    การมองการเขียนโปรแกรมในรูปแบบ oop จะต่างจาก function ซึ่งเพียงแต่จะเน้นเพียงวัตถุประสงค์ให้โปรแกรมทำงานสำเร็จลุล่วง
    แต่ จะมองว่าเป็นการพยายามทำให้วัตถุต่างๆ ในโปรแกรมสื่อสารโต้ตอบกัน ใน oop เรียกว่าส่ง message การทำแบบนี้จะทำให้โปรแกรมที่ค่อนข้างซับซ้อน สามารถนำกลับมาใช้ใหม่ได้สะดวกครับ แต่การเขียนแบบอิสระก็จะทำให้เกิดความไม่เป็นระเบียบได้เหมือนกันจึงมีผู้ ออกแบบ oop design pattern ที่ใช้กันบ่อยๆ ขึ้นมาครับ ซึ่งแม้ว่าการเขียนแบบ function ธรรมดาก็ทำได้เช่นเหมือนกัน แต่จะจัดระเบียบยุ่งยากกว่าแบบ class อยู่พอควรครับ


    ประวัติการแก้ไข
    2010-11-21 20:42:36
    Date : 2010-11-21 20:40:14 By : num
     


     

    No. 336



    โพสกระทู้ ( 3,468 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter

    คับพี่หนุ่มอธิบายได้ดีมากครับ ตรงข้ามกับผมลิบลับ

    ถ้าจะให้ลิส ว่าทำไม class method ถึงดี ก็น่าจะเป็น
    1. ทำให้ใส่ชื่อ เมธอดได้ง่าย
    ถ้าเราเขียนเป็นฟังชั่น บางทีฟังชั่นชื่อคล้ายๆ กัน เราต้องเสียเวลาคิดตั้งชื่อนานคับ เพราะฟังชั่นต่างๆ เป็น global visible หมด แถมถ้าเราพัฒนาไปเรื่อยๆ อาจต้องมีการ refactoring ชื่อฟังชั่นอีก (แต่ OOP ก็มีการรีแฟคเตอร์ชื่อมันบ่อยเหมือนกัน)



    แต่ปัจจุบันได้แต่เขียนเว็บ เลยไม่ได้คิดอะไรอีก ซักเท่าไร่(รู้สึกว่าโง่ลง) เพราะมันไม่ค่อยได้ใช้ OOP ซึ่งมันทำงานช้ากว่า จะไปเขียน Object member (admin, guest, member) แบบถ่ายทอดคุณสมบัติ มันก็กะไรอยู่ ทั้งที่เว็บ ไม่ได้ซับซ้อนอะไรมาก

    ส่วน MVC ก็ใช้แพทเทิร์น มันก็สบายเพียงพอละ
    Date : 2010-11-21 21:04:37 By : pjgunner.com
     


     

    No. 337



    โพสกระทู้ ( 22 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ไง ไม่ไงไม่รู้ แต่โปรเจ็คจบเราได้ เทพ แถวนี้ช่วยถึงเสร็จ และ เกรดเป็น A
    Date : 2010-11-23 13:35:06 By : Fursan
     


     

    No. 338



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    อาจจะยาก ในตอนเริ่มต้น แต่พอนานเข้า ท่านจะรู้สึกได้เลยว่า อะไร ๆ มันก็ง่ายไปหมดครับ ไม่ต้องมาทำมาเขียนอะไรให้ยาว ๆ ๆ จะหยิบ จะจับ จะดึงจะใช้อะไรก็ง่าย ๆ แสนงาน ยิ่ง เอาที่เขาเขียนไว้แล้ว เช่น framework ต่าง ๆ มันก็ยิ่งง่ายไปหมอครับ

    ยกตัวอย่างหน่อยแล้วกันเนาะ

    $ar=arrya(
     "id"=>$this->input->post("id"),
     "name"=>$this->input->post("name")
    );
    $rs = $this->db->insert("tb_order",$ar);
    


    save ได้ละ
    Date : 2010-11-27 08:06:59 By : kalamell
     


     

    No. 339



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    คลาสช่วยสร้า่งคำสั่ง insert update delete
    http://web-programming-bookmark.blogspot.com/2010/12/class-dbexpress.html

    ตัวอย่างการใช้งานครับ
    //ทำการ update ข้อมูลตาราง tbcontact เฉพาะ record ที่ฟิลด์ title='test' โดยใช้ข้อมูล $_POST
    DbExpress::Update('tbcontact','title','test')
    ->title
    ->name
    ->detail
    ->create_at
    ->Save();
    Date : 2010-12-05 16:47:56 By : num
     


     

    No. 340



    โพสกระทู้ ( 1,579 )
    บทความ ( 3 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ผมเองตอนนี้ก็ทำ Class ที่เกี่ยวกับ mysql พื้นฐาน ไว้ใช้งาน เพราะ class ง่ายๆสำหรับเิริ่มต้นศึกษา
    class นี้ผมทำแค่ connectdb,insert,select,update,delete แค่นี้ครับถ้าใช้อยากเริ่มศึกษาเอาตรงนี้เป็นตัวเริ่มเหมือนผมก้ได้ครับ
    พอหลังจากที่ผมได้ทำดูมันก็สนุกและเวลาแก้ไขนั้นง่ายมากแก้ไขแค่ไฟล์เดียว จบเลย 5555
    แต่ผมยัง งง อยู่กับเครื่องหมายพวกนี้ครับ
    _ อันเดียว กับ __ สองอัน ที่อยู่ด้านหน้าตัวแปรหรือชื่อ function ไม่รู้ว่าเรียกถูกหรือเปล่านะครับ แล้วก็ :: อันนี้เอาไว้ทำไรครับ

    มือใหม่หัดเดิน OOP นะ
    Date : 2010-12-09 08:52:42 By : somparn
     


     

    No. 341



    โพสกระทู้ ( 82 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ป๊ๅดด ตาลายเลย
    Date : 2010-12-26 14:03:18 By : CETA
     


     

    No. 342



    โพสกระทู้ ( 22 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    รักกระทู้นี้จริงๆ เลยพี่น้อง

    ....แม้จะเป็นเหล่าเทพคุยกันก็เหอะ แต่ผมก็พอถูๆ ไถ ไปได้ มันมีประโยชน์มากๆ เลย

    ขอบพระคุณทุกๆ ท่าน


    สุดยอดดดด
    Date : 2010-12-27 09:42:35 By : mrsitti
     


     

    No. 343

    Guest


    http://web-programming-bookmark.blogspot.com/2011/01/add-dynamic-method-to-object.html
    Date : 2011-01-15 22:58:36 By : num
     


     

    No. 344

    Guest


    คือๆ อ้าย กำลังลองอยู่เพราะ oo มันเป็นลำดับดี แยกสัดส่วนชัดเจน และก็ประกอบได้ง่ายด้วย การทำงานเป็นทีมถ้าเขียนแบบoo ยิ่งลื่นไหลจนหัวแตก ค้นหามาให้ศึกษาเยอะๆแน่เด้อครับ จะได้เก่งๆๆกัน ยิ่งๆขึ้ั้นไป
    Date : 2011-01-16 07:08:15 By : ruudshowห่วย
     


     

    No. 345



    โพสกระทู้ ( 49 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    OOP นี่ดีจังต้องศึกษาแล้ว
    Date : 2011-01-17 12:41:14 By : dragonjza
     


     

    No. 346



    โพสกระทู้ ( 44 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    ผมจะลองหัดเขียน PHP ดูครับ ปกติไปทาง VB
    Date : 2011-01-24 10:08:07 By : iheerman
     


     

    No. 347



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook Hi5 Blogger

    เอานี่ไปลองเลยครับ


    https://www.thaicreate.com/php/forum/056629.html
    Date : 2011-02-27 20:36:59 By : takamien
     


     

    No. 348



    โพสกระทู้ ( 56 )
    บทความ ( 0 )



    สถานะออฟไลน์



    Date : 2011-03-02 11:34:35 By : NAMDANGSODAZA
     


     

    No. 349



    โพสกระทู้ ( 182 )
    บทความ ( 0 )



    สถานะออฟไลน์


    PHP แบบ oop ต้องหัดมาจริงจังด้านนี้จริงๆจังๆบ้างละ
    Date : 2011-03-27 21:24:30 By : mzchewiize
     


     

    No. 350



    โพสกระทู้ ( 14 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    ใช้ oop นี่ก็ดีนะครับ แต่ถ้าเขียนแล้วไม่ได้คอนเซป oop ก็เสียเวลาเปล่า
    Date : 2011-04-08 13:08:37 By : cpuchare
     


     

    No. 351



    โพสกระทู้ ( 34 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มีประโยชน์ดีครับ
    Date : 2011-05-07 10:56:28 By : suchinee
     


     

    No. 352

    Guest


    สำหรับคนที่ใช้ .NET 2005,2008 มา

    อยากให้ลอง PDO แทนที่จะเขียนเองดูนะครับ
    (เขียนเองต้องนั่งคิดวิธีกัน SQL Injection เองด้วย -_-")

    เนื่องจาก PDO Function ต่างๆคล้ายกับ SqlCommand, SqlConnection มาก
    ทำให้เรียนรู้ได้รวดเร็วกว่ามาขึ้นโครงเองใหม่ทั้งหมดครับ
    Date : 2011-05-27 09:24:52 By : King
     


     

    No. 353



    โพสกระทู้ ( 2,249 )
    บทความ ( 5 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook Hi5 Blogger

    ศึกษา OOP แนะอีกนิดเราจะต้องผนวกเข้ากับสถาปัตยกรรมซอฟท์แวร์แบบ MVC ด้วยจะทำให้เรารู้และมองเห็นประโยชน์ของการเขียนโปรแกรมในรูปแบบเชิงวัตถุว่า มันคุ้มกับการที่ต้องเหนื่อยอย่างไร
    http://th.wikipedia.org/wiki/Model-view-controller
    Date : 2011-05-30 02:35:52 By : Manussawin
     


     

    No. 354

    Guest


    Code (PHP)
    <?php
    class mysql_config { 
        
      var $dbconfig = array(  
                              'hostname' => NULL ,  
                              'username' => NULL ,  
                              'password' => NULL ,  
                              'database' => NULL ,  
                              'collation_connection' => NULL ,  
                              'character_set' => NULL 
                                             ); 
                                 
        function mysql_config(){       
            $GLOBALS['global_mysql_querydb_timer'] = 0; 
            $GLOBALS['global_mysql_querydb_counter'] = 0;         
        } 
          
        function get_querydb_timer() { 
             
            global $static_query_timer;    
          
            if(isset($static_query_timer)) return $static_query_timer; 
            else return $GLOBALS['global_mysql_querydb_timer']; 
             
        } 
         
        function get_querydb_counter() {         
            global $static_querydb_count;   
           
            if(isset($static_querydb_count)) return $static_querydb_count; 
            else return $GLOBALS['global_mysql_querydb_counter']; 
        } 
         
        function set_querydb_timer($value) {         
            global $static_query_timer;         
     
            if(isset($static_query_timer)) $static_query_timer = $value; 
            else $GLOBALS['global_mysql_querydb_timer'] = $value;         
        } 
     
        function set_querydb_counter($value) {         
            global $static_querydb_count;         
     
            if(isset($static_querydb_count)) $static_querydb_count = $value; 
            else $GLOBALS['global_mysql_querydb_counter'] = $value; 
        }     
        
        function set_hostname($value) { 
       $this->dbconfig['hostname'] = $value; 
      } 
     
      function set_username($value) { 
       $this->dbconfig['username'] = $value; 
      } 
     
    
      function set_password($value) { 
       $this->dbconfig['password'] = $value; 
      } 
     
      function set_database($value) { 
       $this->dbconfig['database'] = $value; 
      } 
     
      function set_collation_connection($value) { 
       $this->dbconfig['collation_connection'] = $value; 
      } 
     
      function set_character_set($value) { 
       $this->dbconfig['character_set'] = $value; 
      } 
     
      function get_configdb() { 
       return $this->dbconfig; 
      } 
     
    } 
     
    class mysql_operator extends mysql_config { 
       
      var $link = NULL; 
     
      var $result = NULL; 
     
      var $mysql_version = NULL; 
       
      var $string_error = array(); 
     
      function set_configdb(&$array_dbconfig) { 
     
       $this->set_hostname($array_dbconfig['hostname']); 
       $this->set_username($array_dbconfig['username']); 
       $this->set_password($array_dbconfig['password']); 
       $this->set_database($array_dbconfig['database']); 
              $this->set_collation_connection(             
                        $array_dbconfig['collation_connection']  
                     ); 
             $this->set_character_set($array_dbconfig['character_set']); 
     
      } 
       
      function set_error_msg($string){         
          array_push($this->string_error, $string);       
      } 
       
      function get_error_msg(){         
          while (count($this->string_error) - 1)  
                 $string_output = '<b>MySQL Error : </b> '. 
                                  array_pop($this->string_error).'<br />';       
       return $string_output;    
      }   
     
      function mysql_operator(&$dbconfig) { 
             if(is_array($dbconfig)) $this->set_configdb($dbconfig); 
             else $this->set_configdb($dbconfig->get_configdb()); 
      } 
      function set_mysql_version($value) { 
       $this->mysql_version = $value; 
      } 
    
       
      function get_mysql_version() { 
       return $this->mysql_version; 
      } 
       
      function opendb($newlink = FALSE) { 
       $this->link = mysql_connect($this->dbconfig['hostname'],  
                                          $this->dbconfig['username'],  
                                          $this->dbconfig['password'],  
                                          $newlink);    
       if (!$this->link)  
                  $this->set_error_msg( 
                           mysql_errno($this->link).':'. 
                           mysql_error($this->link) 
                         ); 
       $this->set_mysql_version(mysql_get_server_info());    
       if (!mysql_select_db ($this->dbconfig['database']))  
              $this->set_error_msg( 
                      mysql_errno($this->link).':'. 
                      mysql_error($this->link) 
                    ); 
            if(!empty($this->dbconfig['character_set'])) { 
        $this->querydb("SET CHARACTER SET ". 
                              $this->dbconfig['character_set'].";" 
                           ); 
        $this->querydb_counter_decrement(); 
               } 
               if(!empty($this->dbconfig['collation_connection'])) { 
            $this->querydb("SET collation_connection = ". 
                              $this->dbconfig['collation_connection'].";"); 
        $this->querydb_counter_decrement(); 
            } 
      } 
     
      function closedb() {    
       if (!mysql_close($this->link))  
                     $this->set_error_msg(mysql_errno($this->link).':'. 
                                          mysql_error($this->link) 
                            ); 
      } 
     
      function querydb($string_query) { 
           
         $start_time = array_sum(explode(chr(32), microtime())); 
         $this->result = mysql_query ($string_query);    
         $end_time = array_sum(explode(chr(32), microtime())); 
     
            if (!$this->result)  
          $this->set_error_msg( 
                    mysql_errno($this->link).':'.mysql_error($this->link) 
                   ); 
             
            $this->set_querydb_timer( 
                    $this->get_querydb_timer() + ($end_time - $start_time) 
                   );         
            $this->querydb_counter_increment(); 
      } 
     
     
      function list_fields($table) { 
       $fields = mysql_list_fields( 
                           $this->dbconfig['database'], $table, $this->link 
                        ); 
    
       $columns = mysql_num_fields($fields); 
       for ($i = 0; $i < $columns; $i++) 
           $array_fields_in_table[$i] = mysql_field_name($fields, $i); 
     
       return $array_fields_in_table; 
      } 
       
      function querydb_counter_increment() { 
            $this->set_querydb_counter($this->get_querydb_counter()+1); 
      } 
     
      function querydb_counter_decrement() { 
            $this->set_querydb_counter($this->get_querydb_counter()-1); 
      } 
       
      function querydb_transac_begin() { 
       if($this->get_mysql_version() > 3) 
               $this->querydb("START TRANSACTION;"); 
      } 
     
      function querydb_transac_commit() { 
       if($this->get_mysql_version() > 3) $this->querydb("COMMIT;"); 
      } 
       
      function querydb_transac_rollback() { 
       if($this->get_mysql_version() > 3) $this->querydb("ROLLBACK;"); 
      } 
     
      function querydb_transac_set_autocommit_to_zero() { 
       if($this->get_mysql_version() > 3)  
              $this->querydb("SET AUTOCOMMIT=0;"); 
      } 
       
      function querydb_transac_check_for_rollback_or_commit() { 
       if(!($this->get_resultdb())$this->querydb_transac_rollback(); 
       else $this->querydb_transac_commit(); 
      } 
     
      function num_rows_in_table($table, $condition = NULL) { 
       $num_rows = new mysql_operator($this->get_configdb()); 
       $num_rows->opendb(); 
       $num_rows->querydb("SELECT COUNT(*) FROM $table $condition;"); 
       $num_rows->closedb(); 
       return mysql_result($num_rows->get_resultdb(), 0); 
      } 
     
      function has_data_in_table($table, $field, $value) { 
       $value = trim($value); 
     
       if(empty($field) or empty($value)) $sql_condtion = NULL; 
       else $sql_condtion = "WHERE ".$field."='".$value."'"; 
     
       if($this->num_rows_in_table($table, $sql_condtion) > 0)return TRUE; 
       else return FALSE; 
      } 
     
      function reset_querydb() { 
       $this->set_resultdb(NULL); 
      } 
       
      function set_resultdb($resource) { 
       $this->result = $resource; 
      } 
    
       
      function get_resultdb() { 
       return $this->result; 
      } 
     
      function get_resultdb_fetch_data() { 
       return mysql_fetch_array($this->get_resultdb()); 
      } 
     
      function get_resultdb_num_rows() { 
       return mysql_num_rows($this->get_resultdb()); 
      } 
       
      function get_resultdb_num_fields() { 
       return mysql_num_fields($this->get_resultdb()); 
      } 
       
      function get_last_insert_id(){       
          return mysql_insert_id();      
      } 
     
      function get_resultdb_atrow($row = 0) { 
       return mysql_result($this->get_resultdb(), $row); 
      } 
    } 
    ?>
    


    Code (PHP)
    <?php
    $obj_dbconfig = new mysql_config(); 
    $obj_dbconfig->set_hostname("localhost"); 
    $obj_dbconfig->set_username("root"); 
    $obj_dbconfig->set_password(""); 
    $obj_dbconfig->set_database("test"); 
    $obj_dbconfig->set_character_set("utf8"); 
    $obj_dbconfig->set_collation_connection("utf8_general_ci"); 
    $obj_db = new mysql_operator($obj_dbconfig->get_configdb()); 
    $obj_db->opendb(); 
    $obj_db->querydb("SELECT * FROM table;"); 
    $obj_db->closedb();    
    echo $obj_db->get_resultdb_num_rows(); 
    while ($row = $obj_db->get_resultdb_fetch_data()) { 
      echo $row[0]; 
    ?>
    

    Date : 2011-06-10 14:03:40 By : xyz
     


     

    No. 355

    Guest


    No. 167
    เขียน Class Calculate แบบนั้นได้ไงครับ มันไม่ต่างจากการเขียนแบบ function เลยนะครับ
    คุณ nut_t02 ครับ ไม่ทราบว่ามือตกไปหรือปล่าว ตั้งแต่ No.1 ดูเหมือนคุณรู้เรื่อง oop ดี แต่จาก class Calculate ที่คุณเขียน ผมว่าคุณสอบตกเรื่องการ เข้าใจ oop นะครับ

    จริงๆแล้วมันน่าจะเขียนแบบนี้ต่างหาก

    Code (PHP)
    class Calculate {
    
        private $value = 0;
    
        function __construct($value) {
            $this->value = $this->filterValue($value);
        }
    
        function filterValue($value) {
            if (is_numeric($value)) {
                return $value;
            }if ($value instanceof Calculate) {
                return $value->getValue();
            }
        }
    
        public function plus($value) {
            $this->value = $this->value + $this->filterValue($value);
            return $this;
        }
    
        public function minus($value) {
            $this->value = $this->value - $this->filterValue($value);
            return $this;
        }
    
        public function mutiply($value) {
            $this->value = $this->value * $this->filterValue($value);
            return $this;
        }
    
        public function div($value) {
            $this->value = $this->value / $this->filterValue($value);
            return $this;
        }
    
        public function pow($value) {
            $this->value = pow($this->value, $this->filterValue($value));
            return $this;
        }
    
        public function reset() {
            $this->value = 0;
            return $this;
        }
    
        public function getValue() {
            return $this->value;
        }
    
        public function __toString() {
            return number_format($this->getValue(), 2);
        }
    
    }
    
            $cal1 = new Calculate(3);
    
            $cal1->plus(3)->plus(5)->minus(1)->mutiply(2)->div(2)->pow(3);
            echo $cal1; //1,000.00
    
            $cal1->reset();
            $cal1->plus(3);
            $cal1->plus(3);
            $cal1->plus(5);
            $cal1->minus(1);
            $cal1->mutiply(2);
            $cal1->div(2);
            $cal1->pow(3);
            echo $cal1; //1,000.00
    
            $cal2 = new Calculate(5);//5
            $cal2->mutiply(2); //10
    
            $cal3 = new Calculate(5); //5
    
            $cal3->minus($cal2)->div(2);
            echo $cal3; //-2.50
    		
           $cal4=new Calculate($cal3);
           echo $cal4; //-2.50
    

    Date : 2011-06-11 16:02:42 By : VP9
     


     

    No. 356



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ถ้าเคยได้ลอง Java มาจะรู้ว่า ทำไม OOP ถึงมีประโยชน์อย่างมากครับ ถ้าจะลองหัด เขียน PHP แบบ OOP แล้วหล่ะก็ ลองไป เรียบ ๆ เคียง ๆ concept จาก Java ก่อนจะดี เพราะว่า เพราะจะได้รู้ครับ ว่า มันมีประโยชน์อย่างไรครับ ส่วนเรื่องของ syntax ก็ไม่ใช่ปัญหา ใช้เวลาไม่นานก็ทำได้แล้วหล่ะครับ
    Date : 2011-06-14 15:43:34 By : kalamell
     


     

    No. 357



    โพสกระทู้ ( 4 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ได้ความรู้เยอะเลยครับ เหอๆ
    Date : 2011-06-20 22:30:54 By : OoDie
     


     

    No. 358



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    มีแต่คนเทพๆ อะ ผมก็เข้ามาศึกษาบ่อยๆ
    Date : 2011-06-29 10:44:30 By : jakkathon
     


     

    No. 359



    โพสกระทู้ ( 3 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    คนเทพๆเยอะเลย ขอเก็บความรู้นี้ไปใช้ต่อนะครับ
    Date : 2011-06-29 10:45:52 By : jakkathon
     


     

    No. 360

    Guest


    มึนเลย พึ่งหัดเขียน php ครับ พี่ๆๆ นิ เทพ จังเลยอ่ะ
    Date : 2011-07-01 16:45:13 By : seree
     


     

    No. 361



    โพสกระทู้ ( 17 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ขอบคุณ ครับ
    Date : 2011-07-05 13:07:32 By : Dekbannok14
     


     

    No. 362



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนใจมากค่ะ เพราะตอนนี้ ก็ทำ OO แบบ MVC ค่ะ เด๋วจะเข้ามาติดตามบ่อยๆ และจะมาสอบถามบ่อยๆนะคะ
    Date : 2011-07-10 23:41:03 By : OracialPC
     


     

    No. 363



    โพสกระทู้ ( 106 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผมกำลังจะศึกษา สักวันต้องเก่งแบบพี่ๆบ้าง
    Date : 2011-07-13 16:09:36 By : arta
     


     

    No. 364

    Guest


    php นี่เวลา new ขึ้นมาใหม่แล้วต้องการทำลายทิ้งใช้คำสั่งอะไรเหรอครับ
    Date : 2011-07-18 16:16:20 By : Feista
     


     

    No. 365

    Guest


    ขอบคุณครับ
    Date : 2011-07-22 12:39:01 By : gujoe124
     


     

    No. 366



    โพสกระทู้ ( 86 )
    บทความ ( 0 )



    สถานะออฟไลน์


    มันยากอยู่น้าาาา แต่ก็จะพยายามละกันนะร่วมมือกัน
    Date : 2011-07-22 13:18:54 By : bkawngog
     


     

    No. 367



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ศึกษาจากเว็บนี้เลยครับ ตอบโจทย์ ได้เป็นอย่างดีเลย

    http://www.php.net/oop
    Date : 2011-07-25 13:09:34 By : kalamell
     


     

    No. 368



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ผมลองทำ VDO ขึ้นมา ลองชมดูนะครับ ไว้จะทยอยทำลงเรื่อย ๆ ครับผม


    ตอนที่ 1 Public http://www.youtube.com/watch?v=sAMM-nb273I
    ตอนที่ 2 Private http://www.youtube.com/watch?v=Bu9wF6hL4Eg
    ตอนที่ 3 Protected http://www.youtube.com/watch?v=LJ0KQs4KZXo
    ตอนที่ 4 Inheritance http://www.youtube.com/watch?v=1RD3s4xVexU
    ตอนที่ 5 Method แบบ รับค่า Parameter http://www.youtube.com/watch?v=lXlTd2UWXio







    กลุ่มช่องนี้ครับ http://www.youtube.com/playlist?list=PLBD7BFD9EAF2D8297


    ประวัติการแก้ไข
    2011-07-27 13:02:21
    2011-07-28 08:41:55
    2011-07-28 08:42:50
    2011-07-28 09:30:33
    2011-07-30 08:40:48
    2011-07-30 08:43:31
    Date : 2011-07-27 08:47:59 By : kalamell
     


     

    No. 369



    โพสกระทู้ ( 1,095 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    Quote:
    ผมลองทำ VDO ขึ้นมา ลองชมดูนะครับ ตอนนี้ มี 2 ตอน ไว้จะทยอยทำลงเรื่อย ๆ ครับผม


    http://www.youtube.com/watch?v=sAMM-nb273I


    แนะนำได้เข้าใจง่ายดีครับ พี่บัณฑิต ..
    Date : 2011-07-27 11:57:18 By : ไวยวิทย์
     


     

    No. 370



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter

    ผมเกิดมากับจาวาอ่ะคัฟ มันเป็น oop อยู่แล้ว เว็ปที่เคยทำมาตอนเรียนก็มีแต่ jsp แต่พอมาทำงานกลับได้งานที่เป็น php เลยต้องหันมาศึกษา php ซะเยอะเลย แต่ผมก็ว่ามันก็ปรับเป็น oop ไม่ยากนะ เพราะ function มันก็มองเป็น method ใน java แต่เรื่องตัวแปรนี่ยังไม่ไหวอ่ะ มันไม่ครอบคลุม ถึงจะประกาศเป็น Global แล้วก็เหอะ
    Date : 2011-07-27 14:14:57 By : princefenris
     


     

    No. 371



    โพสกระทู้ ( 74,058 )
    บทความ ( 838 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Facebook

    รวบรวมไว้ให้แล้วครับ Go to : สอนการเขียน PHP กับ OOP (Object Oriented Programming) ผ่าน VDO ออนไลน์
    Date : 2011-08-07 06:37:50 By : webmaster
     


     

    No. 372

    Guest


    ดีครับ เพิ่งลองเขียนเหมือนกัน ผมต้องเริิ่มนับหนึ่งเลย เป็นกระทู้ที่มีประโยชน์มากเลยครับ
    Date : 2011-08-09 12:05:55 By : nut1990
     


     

    No. 373



    โพสกระทู้ ( 402 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ไว้มีเวลาว่างเมื่อไหร่ ผมจะศึกษาการเขียนแบบ oop ทันทีครับ เพราะเคยเรียน Java มาตอนปี 2 ตอนนี้อยู่ปี 3 จะขึ้นปี 4 แล้ว
    เรื่อง class, abstract, extent พวกนี้ก็พอเข้าใจอยู่ครับ น่าจะใช้เวลาศึกษาไม่นาน และโดยส่วนตัวคิดว่าการเขียนแบบ oop มีประโยชน์มากมาย เพราะมอองทุกอย่างเป็น object
    Date : 2011-08-15 01:54:27 By : fogza
     


     

    No. 374



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ตอนที่ 9 ครับ หลังจากหายไปนานเลย พอดี ป่วยนิดหน่อยครับ

    ตอนที่ 9 PHP OOP Abstract Class
    Date : 2011-08-23 08:51:05 By : kalamell
     


     

    No. 375



    โพสกระทู้ ( 118 )
    บทความ ( 3 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ขอให้คุณ u สุขภาพแข็งแรง เอาความรู้มาแบ่งปันชาว thaicreate อีกนะครับ
    Date : 2011-09-04 18:44:58 By : noomthapla
     


     

    No. 376



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ขอบคุณครับ
    Date : 2011-09-05 07:30:32 By : kalamell
     


     

    No. 377



    โพสกระทู้ ( 12 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอสอบถามหน่อยครับพี่

    $this->page->setContent

    -> 2 ครั้งแบบนี้

    หมายความว่ายังไงหรอครับ
    Date : 2011-09-05 17:00:03 By : ramuna99
     


     

    No. 378



    โพสกระทู้ ( 564 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ตัวแปร $page ได้ถูกสร้างให้เป็น object ของ class เมื่อเรียกใช้จะเรียก

    $this->page

    ส่วน setContent ก็คือ propeties ใน class ที่ เวลาเรียกใช้ก็คือ

    $this->page->setContent

    คือ สั่งให้ page ไปทำการเรียก setcontent ที่อยู่ใน Class มาใช้งาน หากเป็น method หรืออาจจะคุ้นในชื่อ ของ function เราต้องใช้เป็น setContent() เป็นต้นครับ

    ลองดูวีดีโอก็ได้ แล้วจะเข้าใจครับ
    Date : 2011-09-06 12:58:34 By : kalamell
     


     

    No. 379



    โพสกระทู้ ( 12 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณมากนะครับ
    Date : 2011-09-06 13:32:24 By : ramuna99
     


     

    No. 380



    โพสกระทู้ ( 7 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังศึกษาอยู่พอดีเลยครับ เล่นเอาปวดหัวไปเลย
    Date : 2011-10-12 14:49:34 By : vampireza
     


     

    No. 381



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอบคุณค่ะ
    Date : 2011-10-28 21:01:52 By : pattisier
     


     

    No. 382



    โพสกระทู้ ( 25 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังฝึกเขียนอยู่เหมือนกันครับ
    Date : 2011-11-01 10:45:39 By : TonHaDy
     


     

    No. 383



    โพสกระทู้ ( 237 )
    บทความ ( 0 )



    สถานะออฟไลน์


    พอมีตัวอย่างที่เขียนแบบ cakephp บ้างละป่าวครับ
    Date : 2011-11-02 13:57:37 By : matay107
     


     

    No. 384



    โพสกระทู้ ( 9 )
    บทความ ( 0 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Facebook

    น่าสนใจดีนะครับ
    Date : 2011-11-07 15:14:04 By : SheetCS
     


     

    No. 385



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    อยากเก่งเรื่อง php จัง ตอนนี้กำลังศึกษาอยู่เลยครับ ปต่ก็ขอบคุณครับ
    Date : 2011-11-08 16:02:00 By : directload
     


     

    No. 386



    โพสกระทู้ ( 11 )
    บทความ ( 0 )



    สถานะออฟไลน์


    น่าสนใจมากครับ เดี๋ยวต้องไปลอง
    Date : 2011-11-24 15:24:18 By : sabudchor11
     


     

    No. 387



    โพสกระทู้ ( 61 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    กำลังศึกษาอยู่พอดีเลยคร้าา
    Date : 2011-12-06 11:59:17 By : iibuu
     


     

    No. 388



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    http://gonzalo123.wordpress.com/2011/11/28/playing-with-the-new-php5-4-features/

    <?php
    $a = [1, 2, 3];
    print_r($a);
    ?>
    


    short array syntax !!!
    Date : 2011-12-10 13:50:04 By : num
     


     

    No. 389

    Guest



    Date : 2011-12-15 04:49:24 By : วุ้น
     


     

    No. 390



    โพสกระทู้ ( 20 )
    บทความ ( 0 )



    สถานะออฟไลน์


    กำลังเริ่มศึกษา php เลยครับ ^_^
    Date : 2012-01-04 16:04:27 By : nattapol.siri
     


     

    No. 391

    Guest


    ดิฉันเพิ่งหัดเขียน php แบบ OOP ค่ะ
    ตอนนี้พบปัญหาดังนี้ค่ะ คือสับสนว่าเราควร นำ sql string พวก select , update, insert ไว้ใน class หรือ เอาไว้ที่หน้า form ดีคะ
    Code (PHP)
    --- itemList.php-----
    include("DBConnect.php");
    require("class_itemmaster.php");
    $objItemList = new ItemList; 
    $conn = new DBConnect; 
    echo $objItemList->itemLoad();	// หรือ นำ code ใน class itemlist,function itemLoad มาไว้ที่นี่ดีคะ ???
    
    ----DBConnect.php-------
    
    ob_start(); 
    Class DBConnect
    {
    private $_host = "localhost"; 
    private $_user = "root"; 
    private $_pass = "1234"; 
    private $_db = "test_db"; 
    
    
    private function openDB()
    {
    $charset = "set names utf8";
    $link = mysql_pconnect($this->_host, $this->_user, $this->_pass);
    if (!$link) {
    die('Could not connect to the server: ' . odbc_error());
    }
    
    $db_selected = mysql_select_db($this->_db, $link);
    if (!$db_selected) {
    die ('Could not connect to the database"' . $this->_db ." get error: " . mysql_error());
    }
    
    mysql_query($charset) or die('Invalid query: ' . mysql_error());
    
    }
    
    private function closeDB()
    {
    mysql_close($link);
    }
    
    public function return_sql($sql)
    {
    self::openDB();
    $result = mysql_query($sql) or trigger_error("SQL", E_USER_ERROR);
    
    if ($result){
    $arrData = array();
    while ($rows = mysql_fetch_array($result)) {
    $arrData[] = $rows;
    }
    
    
    
    }else{ 
    $message = 'This command of : ' . mysql_error() . " incorrect<BR />";
    
    $message = mysql_error();
    die($message);
    } 
    
    return $arrData;
    
    self::closeDB();
    }
    
    public function exe($sql)
    {
    self::openDB();
    $result = mysql_query($sql);
    if (!$result) {
    $message = 'This command of : ' . mysql_error() . "incorrect<BR />";
    die($message);
    }
    }
    
    }
    
    ?><?php ob_end_flush();?>
    
    --------class_itemmaster.php-----
    
    class ItemList {
    
    public $itemcode;
    public $itemname;
    public $unittype;
    public $status;
    public $remark;
    public $createby;
    public $sql;
    
    public function DuplicateItem ($fitemcode,$fitemname,$funittype,$fstatus,$fremark,$fcreateby) {
    
    $this->itemcode=$fitemcode;
    $this->itemname=$fitemname;
    $this->unittype=$funittype;
    $this->status=$fstatus;
    $this->remark=$fremark;
    $this->createby=$fcreateby;
    
    $conn = new DBConnect; 
    $sSql = "select * from itemmaster where itemcode ='$this->itemcode'";
    
    $arrData = $conn->return_sql($sSql);
    
    if ( $arrData=true)	{
    return "<script>alert('Duplicate Data !');</script>"; 
    } 
    else { 
    
    AddNewItem($this->itemcode,$this->itemname,$this->unittype,$this->status,$this->remark,$this->createby);
    }
    
    }
    
    public function AddNewItem ($fitemcode,$fitemname,$funittype,$fstatus,$fremark,$fcreateby) {
    $this->itemcode=$fitemcode;
    $this->itemname=$fitemname;
    $this->unittype=$funittype;
    $this->status=$fstatus;
    $this->remark=$fremark;
    $this->createby=$fcreateby; 
    $conn = new DBConnect; 
    $sSql = "Insert into itemmaster (ItemCode,ItemName,Unit,Status,Remark,Createby) VALUES ('$this->itemcode','$this->itemname','$this->unittype','$this->status','$this->remark','$this->createby')";	
    $arrData = $conn->exe($sSql);
    return "<meta http-equiv='refresh'Content =0;URL='ItemList.php'>";
    
    
    }
    
    public function itemLoad () {
    $conn = new DBConnect; 
    $sSql = "SELECT * FROM itemmaster";
    $arrData = $conn->return_sql($sSql);
    return $arrData; // จากตรงนี้จะ return ค่าเป็น ไปยัง form ยังงัยดีคะ หรือว่า ต้องสร้าง html แทรกไว้ใน class ที่นี่ดีคะ ??
    
    // ถ้าสร้างที่นี่ /*
    echo "<table width=200 border=1>";
    echo " <tr><td cellpadding= 0 cellspacing=3 bgcolor=#99CCFF align=center class=style274>ItemCode</td>
    <td cellpadding= 0 cellspacing=3 bgcolor=#99CCFF align=center class=style274>ItemName</td>
    <td cellpadding= 0 cellspacing=3 bgcolor=#99CCFF align=center class=style274>Unit</td></tr>";
    $j=0;
    foreach($arrData as $row){ {
    echo "<tr><td cellpadding= 0 cellspacing=1 bgcolor=#99CCFF>"; echo $row['ItemCode']; echo"</td>";
    echo "<td cellpadding= 0 width=100 cellspacing=1 bgcolor=#99CCFF >"; echo $row['ItemName']; echo"</td>";
    echo "<td cellpadding= 0 width=250 cellspacing=1 bgcolor=#99CCFF >"; echo $row['Unit']; echo"</tr></td>";
    echo "<br\n>";
    }echo "</table>";*/
    
    }
    
    public function itemCodeSearch ($fitemcode) {
    $this->itemcode=$fitemcode;
    $conn = new connectDB;
    $sSql = "SELECT * FROM itemmaster WHERE ItemCode ='$this->itemcode' ";
    $arrData = $conn->return_sql($sSql);
    return "<meta http-equiv='refresh'Content =0;URL='ItemList.php'>";
    }
    
    
    
    }
    


    รบกวนผู้รู้ทั้งหลายช่วยเข้ามาตอบด้วยค่ะ ตอนนี้มึนกับ OOP มั่กๆๆ หรือว่าจากลับไปเขียนแบบไม่ OOP ดีมั้ย???
    ยังงัยรบกวน ช่วยยกตัวอย่างให้ดูได้มั้ยคะ
    เื่ผื่อจะเข้าใจมากขึ้น

    แล้วที่งงอีกอย่างก็คือ ถ้าเราเอา query string ไปไว้ในหน้า form (จริงๆต้องไว้ใน class?) แระมันจะเป็น OOP ตรงไหนค่ะ
    หรือว่า php เขียน oop เฉพาะตอนติดต่อ database เท่าันั้นเหรอคะ
    Date : 2012-01-22 10:09:30 By : เนย
     


     

    No. 392



    โพสกระทู้ ( 1 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เขียน php อยู่ค่ะแต่ยังไม่เก่งเท่าไหร่ ขอบคุณกระทู้ดี ๆ และคำแนะนำดี ๆ ของทุก ๆ ท่านค่ะ เป็นประโยชน์มาก ๆ เลย ^^
    Date : 2012-01-23 16:59:22 By : nuch-ja
     


     

    No. 393



    โพสกระทู้ ( 17 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    อยากได้โค้ด วาลิเดทพวก เทคบอกซ์ อ่ะคะ พวกที่ใช้กับฟอร์มสมัครสมาชิกอ่ะค่ะ เคยมีเอกสารอยู่ แต่มันเสียหายไปตอนที่น้องงน้ำมาเยี่ยม

    พี่กรุงอ่ะคะ จำได้ว่ามันเป็นจาวาสคริป ไม่ยากเท่าไหร่ แต่ก็จำไม่ได้แล้วอ่ะคะ เพราะมีช่วงที่เปลี่ยนไปเขียน VB.NET อยู่พักหนึ่งอ่ะคะ

    ท่านผู้รู้ ช่วยหน่อยนะคะ
    Date : 2012-02-23 13:01:43 By : จุ๊
     


     

    No. 394



    โพสกระทู้ ( 752 )
    บทความ ( 3 )



    สถานะออฟไลน์
    Blogger

    JQUERY สิครับ มีอยู่
    Date : 2012-02-24 16:39:42 By : ALTELMA
     


     

    No. 395

    Guest


    มือใหม่เข้ามาเปิดกะโหลกครับ สุดยอดมากๆ
    Date : 2012-03-09 17:57:21 By : maxsaag
     


     

    No. 396



    โพสกระทู้ ( 0 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ดีจริงๆๆค่ะ
    Date : 2012-04-08 10:08:44 By : pampam1999
     


     

    No. 397

    Guest


    มีความรู้ดีครับ

    ศึกษาไว้ เอาไปประยุกต์ในโปรเจ็ค ^^
    Date : 2012-04-09 10:47:11 By : rootElement@kmutnb
     


     

    No. 398



    โพสกระทู้ ( 0 )
    บทความ ( 0 )



    สถานะออฟไลน์


    สิ่งดีๆ ที่ควรปักหมุดมาก


    ประวัติการแก้ไข
    2012-04-12 11:07:02
    Date : 2012-04-11 19:36:59 By : khemkiki
     


     

    No. 399



    โพสกระทู้ ( 0 )
    บทความ ( 0 )



    สถานะออฟไลน์


    เเจ๋วๆๆเลย ครับ พี่ๆๆๆ
    Date : 2012-04-11 20:18:24 By : eiei4749
     


     

    No. 400



    โพสกระทู้ ( 27 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    ดีมากเลยครับ
    Date : 2012-04-19 10:30:12 By : reekoong
     


     

    No. 401



    โพสกระทู้ ( 18 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ผมเอา php oop ไปเขียนแบบว่าใช้เป็น คำสั่งทำงานกับฐานข้อมูลซะเป็นส่วนใหญ่เพื่อให้ง่ายต่อการเรียกใช้งาน ไม่รู้มาถูกทางเปล่า พอดีไปลองดู Codeigniter แล้วเห็นการเรียกใช้ฟังก์ชั่นต่างๆแล้ว เลยลองเอามาปรับให้เป็นแบบของผมดู

    อย่างการ Insere ลงฐานข้อมูลผมเขียน คาสไว้แบบนี้

    Code (PHP)
    public function get($sql){
    //ส่งคำสั่ง sql ไปทำการ query กับฐานข้อมูลแล้ว ส่งค่ากับเป็น true หรือ false
    $resultData = mysql_query($sql,$this->con);
    if($resultData)
    	return true;
    		else 
    			return false;
    	
    	}
    
    public function insert($tb,$data,$strwhere=""){
    	//ฟังก์ชั่น insert ข้อมูล และส่งกลับค่าออกไปเป็น true และ false
    	//การส่งข้อมูลเข้ามาต้องส่งเป็น array เข้ามา
    	
    	$fieldtb = "(";
    	$datatb= "(";
    	$countArrayData = count($data);
    	$numcheck = 1;
    	
    	foreach($data as $field => $data)
    	{
    			if($countArrayData==$numcheck){
    					$fieldtb .= $field.")";
    					$datatb .= "'".$data."')";
    				}else{
    						$fieldtb .= $field.", ";
    						$datatb .= "'".$data."', ";	
    				}
    					$numcheck++;
    	}
    		
    	if($strwhere=="")
    		$query = "INSERT INTO {$tb}{$fieldtb} VALUES{$datatb};";
    			else
    				$query = "INSERT INTO {$tb}{$fieldtb} VALUES{$datatb} WHERE {$strwhere};";
    	
    		
    	return $this->get($query);
    
    	}
    

    Date : 2012-07-09 15:26:23 By : thekknd
     


     

    No. 402



    โพสกระทู้ ( 29 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    เห็นด้วยครับ แต่ลอง ADODB ดีกว่าครับง่ายกว่าเยอะเลย
    ผมว่าหา Framework มาเล่นด้วยดีไหมครับ
    Date : 2012-07-09 18:36:59 By : kongoon
     


     

    No. 403



    โพสกระทู้ ( 46 )
    บทความ ( 0 )



    สถานะออฟไลน์





    ประวัติการแก้ไข
    2012-07-16 12:25:50
    Date : 2012-07-16 12:24:48 By : jutathipphp
     


     

    No. 404



    โพสกระทู้ ( 5 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ช่วยได้เยอะมากๆ เลยครับ
    Date : 2012-09-03 21:20:20 By : jeerawat
     


     

    No. 405

    Guest


    ช่วยดูหน่อยครับ บาร์ข้างล่างคือไร ทำไงถึงจะได้มา
    Date : 2012-09-07 14:03:32 By : korn
     


     

    No. 406



    โพสกระทู้ ( 49 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Twitter Facebook

    ใครอยากเห็น production ที่ใช้ php oop แบบของจริง และยังเป็น Framework ให้เราพัฒนาต่อได้ ลองศึกษา SugarCRM ครับ

    SugarCRM เป็น Web App ที่พัฒนาเพื่องานธุรกิจอย่างแท้จริง อีกทั้งยังมีเวอร์ชั่น Open Source ที่ผมกล้าพูดเพราะมันคือ Product ตัวหนึ่งที่บริษัทของผมพัฒนาอยู่ มี Lib ให้ครบครันเลยครับ

    แนวคิดของเขาก็คือ Modular ครับ โดยแต่ละโมดูลจะเป็นตัวแทนของแต่ละ Class เช่น คลาส Account และ Contact สืบทอดมาจาก Person ซึ่งจะมี property เหมือนกัน, คลาส Currency จะมี method ที่เกี่ยวข้องกับการแปลงค่าเงิน, คลาส TimeDate ไว้คอยจัดการวันที่เวลา เป็นต้น
    Date : 2012-09-07 22:05:31 By : bankjetdo
     


     

    No. 407



    โพสกระทู้ ( 1,463 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์
    Twitter Blogger

    /*
    CREATE TABLE `tbcontact` (
            `id` INT(4) NOT NULL AUTO_INCREMENT,
            `name` VARCHAR(50) NULL DEFAULT NULL,
            PRIMARY KEY (`id`)
    )
    ENGINE=MyISAM
    */
     
    //configuration
    $dbname = 'test';
    $user = 'root';
    $pass = '';
     
    try{
        //connect   
        $db = new PDO("mysql:host=localhost;dbname=$dbname;", $user, $pass, array(
            PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES UTF8'
        ));
    }catch (Exception $e){
        echo 'error:'.$e->getMessage();
    }
     
    //insert
    $stmt = $db->prepare('insert into tbcontact(name) values(:name)');   
    $stmt->bindValue(':name','nobita');
    $stmt->execute();
     
    $info = $stmt->errorInfo();
    if ($info[0]=='0000')
        echo 'no error';
    else
        echo 'error: '.$info[2];
     
    //select
    echo '<hr /><h1>FETCH TO OBJECT</h1>';
    $stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_OBJ);
    foreach($stmt as $row) {
        echo $row->id,'...',$row->name,'<br','>';
    }
     
    echo '<hr /><h1>FETCH TO ARRAY</h1>';
    $stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_ASSOC);
    while($row = $stmt->fetch()) {
        echo $row['id'],'...',$row['name'],'<br','>';
    }
     
    echo '<hr /><h1>FETCH TO VARIABLE</h1>';
    $stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_BOUND);
    $stmt->bindColumn('id',$id);
    $stmt->bindColumn('name',$name);
    while($row = $stmt->fetch()) {
        echo $id,'...',$name,'<br','>';
    }
     
    echo "column count = {$stmt->columnCount()}, row count= {$stmt->rowCount()}";
    



    class pdo เป็น class หลักของ php ที่ใช้ในการต่อ database
    dbms อย่างเช่น sqlite mysql odbc mssql oracle ฯลฯ สลับไปมาค่อนข้างสะดวก
    เนื่องจากทุกตัวใช้คำสั่งใน class php pdo เหมือนกันหมดครับ

    http://web-programming-bookmark.blogspot.com/2012/09/php-pdo.html
    Date : 2012-09-09 21:25:42 By : num
     


     

    No. 408



    โพสกระทู้ ( 10 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    หนู กำลังเขียนอยู่เลย
    Date : 2012-10-12 14:44:22 By : chanajun
     


     

    No. 409



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ขอคุณคับCode (PHP)
    [pre][/pre]
    Date : 2012-10-16 02:09:00 By : direkutong
     


     

    No. 410



    โพสกระทู้ ( 2 )
    บทความ ( 0 )



    สถานะออฟไลน์


    ว่าจะลองเขียนหลายทีแล้ว

    แต่ไม่มีเวลาซักที งานหน้าต้องลองใช้ดู

    (ถ้ามันไม่เร่งนะ)
    Date : 2012-10-16 02:10:08 By : direkutong
     


     

    No. 411

    Guest


    รบกวนด้วยนะค่ะ ต้องกาเก็บค่า $emp_fnm_thai จาก private static function SetFnmThai($emp_id) ไว้ใน public static function GetFnmThai() มีวิธีการทำยังไงค่ะ

    <meta http-equiv="Content-Type" content="text/html; charset=window-874" />
    <?PHP
    include ("../../annai/class/conn.php");
    class Employee {
    private static $emp_id;
    private static $emp_fnm_thai;

    private static function Class_Initialize(){
    $emp_id = "";
    $emp_fnm_thai = "";
    }
    public static function SetEmpID ($emp_str){
    $emp_usr = new Employee;
    $emp_id = $emp_str;
    $emp_usr ->SetFnmThai($emp_id);
    }
    private static function SetFnmThai($emp_id){
    $sqlemp = "";
    $sqlemp = "Select UD_USR_FNM from COM_USR_DTLS where UD_USR_ID = '$emp_id'";
    $queryemp = mysql_query($sqlemp) or die ("error $sqlemp");
    $rowemp = mysql_fetch_array($queryemp);
    $emp_fnm_thai = $rowemp['UD_USR_FNM'];
    }

    public static function GetFnmThai(){
    ต้องการเก็บค่า $emp_fnm_thai จาก SetFnmThai(); ในนี้

    }
    }
    ?>
    Date : 2012-11-16 16:56:19 By : rilakkuma
     


     

    No. 412



    โพสกระทู้ ( 155 )
    บทความ ( 0 )



    สถานะออฟไลน์


    โอ้ยมีแต่คนเก่ง
    มือสมัครเล่นอย่างเรา
    เศร้าเลย___T_T
    Date : 2012-11-23 21:12:37 By : เหลนไฟ
     


     

    No. 413



    โพสกระทู้ ( 752 )
    บทความ ( 3 )



    สถานะออฟไลน์
    Blogger

    ไม่หรอกครับ ลองๆ ดูไว้ไม่เสียหาย ครับ สนุกดีผมว่า ^ ^
    Date : 2012-12-13 09:52:17 By : ALTELMA
     


     

    No. 414



    โพสกระทู้ ( 23 )
    บทความ ( 0 )



    สถานะออฟไลน์
    Facebook

    Code (PHP)
    <?PHP
    include('../../annai/class/conn.php');
    class Employee
    {
    	private static $emp_id;
    	private static $emp_fnm_thai;
    	
    	private static function Class_Initialize()
    	{
    		$emp_id = '';
    		$emp_fnm_thai = '';
    	}
    	public static function SetEmpID($emp_str)
    	{
    		$emp_usr = new Employee;
    		$emp_id = $emp_str;
    		$emp_usr->SetFnmThai($emp_id);
    	}
    	private static function SetFnmThai($emp_id)
    	{
    		$sqlemp = '';
    		$sqlemp = 'Select UD_USR_FNM from COM_USR_DTLS where UD_USR_ID = \''.$emp_id.'\'';
    		$queryemp = mysql_query($sqlemp) or die('error '.$sqlemp.'');
    		$rowemp = mysql_fetch_array($queryemp);
    		self::$emp_fnm_thai = $rowemp['UD_USR_FNM'];
    	}
    	public static function GetFnmThai()
    	{
    		return self::$emp_fnm_thai;
    	}
    }
    ?>
    


    จาก NO.411 ประมาณนี่เปล่าครับ
    Date : 2013-05-06 19:27:23 By : atoms18
     


     

    No. 415



    โพสกระทู้ ( 54 )
    บทความ ( 0 )



    สถานะออฟไลน์


    พี่ ๆ ครับ :: ใช้ยังไง เอาไว้ทำอะไรครับ ผมเขียนแบบเก่า ไม่เคยเจอเลย ขอบคุณครับ

    ขออธิบายแบบภาษาชาวบ้านนะครับ ผมเด็กใหม่ จบ ไอที เพิ่งเริ่มหัดเขียน OOP ครับ
    Date : 2014-11-07 09:33:15 By : tumjuk
     


     

    No. 416



    โพสกระทู้ ( 430 )
    บทความ ( 1 )



    สถานะออฟไลน์
    Blogger

    มาดูดความรู้ แนว OOP แต่เขียน connect select,insert,delete,update ได้
    แต่ยังเขียนเป็น แบบ Class ไม่ได้ สงสัยต้องเรียนรู้ต่อไป ขอบคุณความรู้ดีๆทุกท่านน่ะครับ



    ประวัติการแก้ไข
    2018-09-13 08:35:18
    Date : 2018-09-10 11:08:12 By : Hararock
     


     

    No. 417



    โพสกระทู้ ( 519 )
    บทความ ( 1 )

    สมาชิกที่ใส่เสื้อไทยครีเอท

    สถานะออฟไลน์


    ผ่านมา 9 ปีแล้ว ยังมีคนสนใจขุดกระทู้ขึ้นมาอีก ^^
    ป่านนี้หลายๆคนคงเขียน OOP ไปกันไกลมากแล้ว
    ผมดีใจนะครับที่ช่วยจุดประกายเล็กๆ ให้กับหลายๆ คนหันมาเขียนแบบ OOP
    แต่เทคโนโลยีตอนนี้ไปไกลมากแล้ว อย่ายึดติดกับอะไรเก่าๆ กันนะครับ

    ผมเองก็เปลี่ยนเส้นทางชีวิตไปสาย data แทนสาย web สักพักใหญ่ๆ แล้ว
    ถ้ามีอะไรที่ผมพอช่วยได้ หรือให้ไกด์ให้เห็นภาพได้ ผมก็ยินดีนะครับ

    หรือถ้าจะหางานให้ผม เชิญหลังไมค์เลยครับ 555
    Date : 2018-09-12 21:32:14 By : nut_t02
     


     

    No. 418



    โพสกระทู้ ( 430 )
    บทความ ( 1 )



    สถานะออฟไลน์
    Blogger

    ครับผม ความรู้ในที่นี้ https://www.thaicreate.com ผ่านไปกี่ปี ไม่น่าจะหาย แต่ถ้าเขียนใส่กระดาษ คงย่อยสลาย ตามการเวลา ขอบคุณครับ ที่แบ่งปั่นความรู้
    Date : 2018-09-13 08:40:12 By : Hararock
     


     

    No. 419



    โพสกระทู้ ( 198 )
    บทความ ( 0 )



    สถานะออฟไลน์


    อยากจะเขียน OOP จริงๆ ไป java หรือ c# เลยดีกว่าครับ
    Date : 2018-09-13 10:53:05 By : DK
     

       

    ค้นหาข้อมูล


       
     

    แสดงความคิดเห็น
    Re : กระทู้รณรงค์ ตอน "มาเขียน php แบบ OOP กันเถอะ" คือผมก็เห็นว่า community ที่นี่มีคนเก่งเยอะ
     
     
    รายละเอียด
     
    ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
    ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
    smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
    Insert PHP Code
    Insert ASP Code
    Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
    Insert Java Code
    Insert Android Code
    Insert Objective-C Code
    Insert XML Code
    Insert SQL Code
    Insert Code
    เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

    อัพโหลดแทรกรูปภาพ

    Notice

    เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
    อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

       
      เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
     
    โดย
    อีเมล์
    บวกค่าให้ถูก
    <= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







    Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

    Load balance : Server 03
    ThaiCreate.Com Logo
    © www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
    ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
    [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่