<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>thought snippets &#187; php</title>
	<atom:link href="http://blog.u-blue.com/category/webdev/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.u-blue.com</link>
	<description>a little bit of everything</description>
	<lastBuildDate>Sun, 18 Jul 2010 08:06:58 +0000</lastBuildDate>
	<language>TH</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>แสดง Stat หน้าเว็บจาก Google Analytics</title>
		<link>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/</link>
		<comments>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 11:15:48 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google analytic]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=213</guid>
		<description><![CDATA[จากบล๊อคที่แล้ว ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP ทำให้เกิดอยากเขียนสิ่งที่คนชอบให้เอามาไว้หน้าเว็บอีกอย่างหนึ่ง คือ Visible Stat หรือ Counter แบบเดิมๆที่เราเคยเห็นนั่นเอง ซึ่งโดยธรรมชาติของ google analytics นั้นเราไม่สามารถดึงจำนวนครั้งที่มีคนเข้าเว็บมาโชว์หน้าเว็บได้ แต่ด้วย Analytic Data Extract API ก็เลยทำให้มีวิธีดึงข้อมูลออกมาได้ เป็น counter แบบเชยๆที่คุ้นตาได้ ดังตัวอย่าง วิธีใช้ก็ง่ายๆ ดังนี้ โหลด GAAPI (เพื่อนบอกว่าอ่านว่า กะปิ -*-) ที่เขียนไว้จากบล๊อคที่แล้วก่อน ซึ่งไฟล์ที่เราจะนำมาใช้มีไฟล์เดียวคือ gaapi.class.php เรียกคลาสมาใช้ โดยข้อมูลที่จะนำมาแสดงคือ All Time Page Views (คือจำนวนหน้าที่ถูกเรียกดูทั้งหมด) include_once('gaapi.class.php'); $ga=new gaApi('google username','password','ga:site id'); $allTimeSummery=$ga->getAllTimeSummery(); จากนั้นก็แสดง Counter โดยใช้โค้ท HTML ร่วมกับ CSS ]]></description>
			<content:encoded><![CDATA[<p>จากบล๊อคที่แล้ว <a href="http://blog.u-blue.com/2010/02/10/google-analytic-api-extract-data-php/">ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</a> ทำให้เกิดอยากเขียนสิ่งที่คนชอบให้เอามาไว้หน้าเว็บอีกอย่างหนึ่ง คือ Visible Stat หรือ Counter แบบเดิมๆที่เราเคยเห็นนั่นเอง ซึ่งโดยธรรมชาติของ google analytics นั้นเราไม่สามารถดึงจำนวนครั้งที่มีคนเข้าเว็บมาโชว์หน้าเว็บได้ แต่ด้วย Analytic Data Extract API ก็เลยทำให้มีวิธีดึงข้อมูลออกมาได้ เป็น counter แบบเชยๆที่คุ้นตาได้ ดังตัวอย่าง</p>
<div id="attachment_214" class="wp-caption alignnone" style="width: 122px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-5.56.11-PM.png"><img class="size-full wp-image-214" title="Google Analytic Visible Stat" src="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-5.56.11-PM.png" alt="" width="112" height="41" /></a><p class="wp-caption-text">GA Visible Stat</p></div>
<p><span id="more-213"></span></p>
<p><strong>วิธีใช้ก็ง่ายๆ ดังนี้</strong></p>
<ol>
<li>โหลด <strong> <a href="http://blog.u-blue.com/wp-content/uploads/2010/02/GAAPI1.zip">GAAPI</a>  </strong>(เพื่อนบอกว่าอ่านว่า กะปิ  -*-) ที่เขียนไว้จากบล๊อคที่แล้วก่อน ซึ่งไฟล์ที่เราจะนำมาใช้มีไฟล์เดียวคือ gaapi.class.php</li>
<li>เรียกคลาสมาใช้ โดยข้อมูลที่จะนำมาแสดงคือ All Time Page Views (คือจำนวนหน้าที่ถูกเรียกดูทั้งหมด)
<pre class="brush:php">

include_once('gaapi.class.php');
$ga=new gaApi('google username','password','ga:site id');
$allTimeSummery=$ga->getAllTimeSummery();
</pre>
</li>
<li>จากนั้นก็แสดง Counter โดยใช้โค้ท HTML ร่วมกับ CSS สามารถเปลี่ยนแปลงหน้าตาได้ตามสะดวก<br />
CSS:</p>
<pre class="brush:css">
#vGA{
	width: 100px;
	position: relative;
	font-size: 9px;
	font-family: Verdana, Verdana, Geneva, sans-serif;
	padding-bottom: 15px;
	background: url(poweredBy.gif) no-repeat bottom left;
}
#vGA div{
	text-align: right;
	border: 2px solid #4f6db0;
	color: #555;
	line-height: 15px;
}
#vGA #vGALabel{
	background: #4f6db0;
	text-align: center;
	color: white;
	float: right;
	padding: 0 0 0 2px;
	margin: 0 0 0 2px;
}
</pre>
<p>HTML:</p>
<pre class="brush:html">
<div id="vGA">
<div>&lt;?= $allTimeSummery['ga:pageviews'] ?>
       <span id="vGALabel">Views</span>
   </div>
</div>
</pre>
</li>
<li>เซฟรูป Powered By Google นี้ไปไว้ในโฟลเดอร์เดียวกับไฟล์อื่น <div id="attachment_215" class="wp-caption alignright" style="width: 97px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/poweredBy.gif"><img src="http://blog.u-blue.com/wp-content/uploads/2010/02/poweredBy.gif" alt="" title="Powered By Google Analytic" width="87" height="15" class="size-full wp-image-215" /></a><p class="wp-caption-text">Powered By</p></div></li>
</ol>
<p>เท่านี้ก็ได้ Visible Stat จาก Google Analytic อย่างง่ายๆแล้ว ซึ่งหากต้องการให้แสดงข้อมูลอื่นๆนอกจาก Pageviews ก็สามารถทำได้โดยดูวิธีใช้งาน gaapi คลาสได้จากบล๊อคที่แล้ว <a href="http://blog.u-blue.com/2010/02/10/google-analytic-api-extract-data-php/">ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</a> </p>
<p><strong>เอาโค้ทมารวมกัน</strong></p>
<pre class="brush:html">
&lt;html>
&lt;head>
&lt;style type="text/css">
#vGA{
	width: 100px;
	position: relative;
	font-size: 9px;
	font-family: Verdana, Verdana, Geneva, sans-serif;
	padding-bottom: 15px;
	background: url(poweredBy.gif) no-repeat bottom left;
}
#vGA div{
	text-align: right;
	border: 2px solid #4f6db0;
	color: #555;
	line-height: 15px;
}
#vGA #vGALabel{
	background: #4f6db0;
	text-align: center;
	color: white;
	float: right;
	padding: 0 0 0 2px;
	margin: 0 0 0 2px;
}
&lt;/style>
&lt;/head>
&lt;body>
&lt;?
include_once('gaapi.class.php');
$ga=new gaApi('google username','password','ga:site id');
$allTimeSummery=$ga->getAllTimeSummery();
?>
<div id="vGA">
<div>&lt;?= $allTimeSummery['ga:pageviews'] ?>
       <span id="vGALabel">Views</span>
    </div>
</div>

&lt;/body>
&lt;/html>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</title>
		<link>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/</link>
		<comments>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:30:41 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google analytic]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=189</guid>
		<description><![CDATA[ปัญหามันเกิดจากบางครั้งเราทำเว็บให้คนที่ไม่ค่อยมีความรู้เรื่องคอม แล้วจะใช้ Google Analytic ในเว็บเขา ทีนี้ก็สมัคร Account ให้ เอาโค้ทมาใส่ให้ สอนให้ลอคอินเข้าไปดูสถิติในเว็บ google แต่ไม่นานก็จะเกิดงานเข้า เพราะเขาจำไม่ได้ว่าเข้าดูยังไง ภาษาอังกฤษใช้ไม่คล่อง ฯลฯ ก็เลยอยากจะเอาสถิติจาก GA มาไว้ในหน้าแรกของ backoffice เว็บเขาเลย จะได้ดูชัดๆ ง่ายๆ ก็เลยนั่งเขียน PHP class เพื่อติดต่อกับ Google Analytic Data Export API(จริงๆมันก็ยังอยู่ใน lab แต่พอใช้งานได้) และก็ใช้ Google Chart มาช่วยในการแสดงผล ได้ออกมา ดังนี้ Screenshot: เขียน PHP Class โดยใช้ cURL เพื่อติดต่อกับ Google โดย การ auth นั้นจะทำโดย post ไปและหากลอคอินผ่านจะได้ token มาเก็บไว้ ]]></description>
			<content:encoded><![CDATA[<p>ปัญหามันเกิดจากบางครั้งเราทำเว็บให้คนที่ไม่ค่อยมีความรู้เรื่องคอม แล้วจะใช้ Google Analytic ในเว็บเขา ทีนี้ก็สมัคร Account ให้ เอาโค้ทมาใส่ให้ สอนให้ลอคอินเข้าไปดูสถิติในเว็บ google แต่ไม่นานก็จะเกิดงานเข้า เพราะเขาจำไม่ได้ว่าเข้าดูยังไง ภาษาอังกฤษใช้ไม่คล่อง ฯลฯ ก็เลยอยากจะเอาสถิติจาก GA มาไว้ในหน้าแรกของ backoffice เว็บเขาเลย จะได้ดูชัดๆ ง่ายๆ ก็เลยนั่งเขียน PHP class เพื่อติดต่อกับ Google Analytic Data Export API(จริงๆมันก็ยังอยู่ใน lab แต่พอใช้งานได้) และก็ใช้ Google Chart มาช่วยในการแสดงผล ได้ออกมา ดังนี้</p>
<p>Screenshot:</p>
<div id="attachment_190" class="wp-caption alignnone" style="width: 410px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-2.52.53-AM.png"><img class="size-full wp-image-190 " title="Google Analytic Data Export API with PHP" src="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-2.52.53-AM.png" alt="" width="400" /></a><p class="wp-caption-text">Google Analytic Data Export API with PHP</p></div>
<p><span id="more-189"></span><br />
<strong>เขียน PHP Class โดยใช้ cURL เพื่อติดต่อกับ Google โดย</strong></p>
<ul>
<li>การ auth นั้นจะทำโดย post ไปและหากลอคอินผ่านจะได้ token มาเก็บไว้</li>
<li>จากนั้นการดึงข้อมูลรายงานจะใช้ get โดยส่ง url ที่มีค่าที่ต้องการไป และส่ง token ไปด้วย</li>
<li>รูปแบบของรายงานที่ Google ส่งกลับมานั้นจะเป็น XML ก็ใช้ DOMDocument ค่อยๆ parse ค่าออกมา</li>
<li>นำค่ามาแสดง โดยหากต้องการใช้กราฟก็จะเรียกใช้ Google Graph</li>
</ul>
<p><strong>วิธีนำไปใช้งาน</strong></p>
<p><strong>ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -&gt; <a href="http://blog.u-blue.com/wp-content/uploads/2010/02/GAAPI1.zip">GAAPI</a></strong></p>
<p><strong>สร้างและเรียกใช้คลาส</strong><br />
โดยการ include ไฟล์ class เข้ามา และสร้างโดยต้องใส่ username, password และ site id(ดูได้จากใน google analytic account สังเกต id=xxxxxxxx ใน url)</p>
<pre class="brush:php">include_once('gaapi.class.php');
$ga=new gaApi('google username','google password','ga:site id');
//e.g. ('myname@gmail.com','myPassword','ga:1234567');</pre>
<p>Site ID ใน Google Analytic URL</p>
<div id="attachment_202" class="wp-caption alignnone" style="width: 460px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/analyticd.jpg"><img class="size-full wp-image-202 " title="analyticd" src="http://blog.u-blue.com/wp-content/uploads/2010/02/analyticd.jpg" alt="" width="450" height="55" /></a><p class="wp-caption-text">Analytic ID</p></div>
<p><strong>เรียกข้อมูลรายงาน</strong><br />
อันนี้ต้องเข้าใจเรื่อง Dimension และ Metric ของ <a href="http://code.google.com/intl/en/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html">Google Analytic Data Extract API</a> ก่อน โดยหลักๆมันคือการเอา Dimension และ Metric มาผสมกันทำให้ได้ตารางรายงานออกมา โดยให้เรียกใช้ผ่าน method genReport(array) เช่น</p>
<pre class="brush:php">$params = array ('metrics' 		=&gt; 'ga:visits',
				'dimensions'	=&gt; 'ga:source',
				'start-date' 	=&gt; '2010-01-01',
				'end-date' 		=&gt; '2010-02-09',
				'max-results' 	=&gt; '5',
				'filter'		=&gt; 'ga:source != (direct)',
				'sort'			=&gt; '-ga:visits');
$result=$ga-&gt;genReport($params);
print_r($result);</pre>
<p>สิ่งที่จะได้ออกมาก็จะเป็นชุดของ array หน้าตาประมาณนี้</p>
<pre class="brush:php">Array
(
    [0] =&gt; Array
        (
            [ga:source] =&gt; google
            [ga:visits] =&gt; 5029
        )
    [1] =&gt; Array
        (
            [ga:source] =&gt; xxxxxxx.com
            [ga:visits] =&gt; 162
        )
    [2] =&gt; Array
        (
            [ga:source] =&gt; search
            [ga:visits] =&gt; 49
        )
)</pre>
<p>แต่หากไม่อยากไปเรียนรู้อะไรของ Google มาก ในคลาสที่เขียนก็มีฟังก์ชั่นมาตรฐานไว้ให้ ดังนี้</p>
<pre class="brush:php">$now=date("Y-m-d");
$lastmonth=date('Y-m-d', strtotime('-30 days'));

//Summery: visitors, unique visit, pageview, time on site, new visits, bounce rates
$summery=$ga-&gt;getSummery($lastmonth,$now);

//All time summery: visitors, page views
$allTimeSummery=$ga-&gt;getAllTimeSummery();

//Last 10 days visitors (for graph)
$visits=$ga-&gt;getVisits($lastmonth,$now,10);

//Top 10 search engine keywords
$topKeywords=$ga-&gt;getTopKeyword($lastmonth,$now,10);

//Top 10 visitor countries
$topCountries=$ga-&gt;getTopCountry($lastmonth,$now,10);

//Top 10 page views
$topPages=$ga-&gt;getTopPage($lastmonth,$now,10);

//Top 10 referrer websites
$topReferrer=$ga-&gt;getTopReferrer($lastmonth,$now,10);

//Top 10 visitor browsers
$topBrowsers=$ga-&gt;getTopBrowser($lastmonth,$now,10);

//Top 10 visitor operating systems
$topOs=$ga-&gt;getTopOs($lastmonth,$now,10);</pre>
<p>โดยผลลัพท์ของแต่ละ method ก็จะออกมาเป็นชุดของ array มี key เป็นชื่อ dimension และ metric ตามตัวอย่างข้างต้น<br />
*การเรียกใช้ให้ดูเทียบกับตัวอย่างที่นำไปสร้างเป็นตารางในโค้ทที่ให้จะเข้าใจง่ายขึ้น</p>
<p>ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -&gt; <a href="http://blog.u-blue.com/wp-content/uploads/2010/02/GAAPI1.zip">GAAPI</a></p>
<p>ใครโหลดไปแล้วเจอบักหรือต้องแก้ไขตรงไหนก็รบกวนแจ้งด้วยน๊า</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>php oop #2: สร้างและห่อหมีแพนด้า</title>
		<link>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/</link>
		<comments>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/#comments</comments>
		<pubDate>Sat, 23 May 2009 15:31:53 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=160</guid>
		<description><![CDATA[จากโพสที่แล้ว php oop #1: panda class ว่าด้วยเรื่องการเขียน php oop แบบง่ายๆ แต่ดูไม่มีประโยชน์เท่าไหร่นัก เพราะถ้าดูดีๆมันก็ไม่ต่างจากเขียนฟังก์ชั่นเท่าไหร่ เลยมาว่าต่อถึงคุณสมบัติจริงๆของ object oriented บ้าง เริ่มต้นจากอย่างแรกก่อน คือคอนเซปต์การ encapsulation หรือขอเรียกง่ายๆว่า การห่อ ซึ่งก็เป็นเหมือนการซ่อนข้อมูลภายในคลาสไว้ไม่ให้สามารถเข้าถึงได้โดยตรงจากส่วนอื่นๆของโปรแกรม ลองดูโค้ทกันเลยน่าจะง่ายกว่านั่งอธิบายให้ยืดยาว class Panda{ private $name; function eat(){ echo "eating bamboo leaf"; } } ก็เล่นกันง่ายๆเลย คือเปลี่ยนตัวแปร name ให้เป็น private ซะ คราวนี้การเรียกถึงตัวแปรแบบตรงๆอย่างที่เห็นในตัวอย่างที่แล้วก็จะไม่สามารถทำได้อีกต่อไป แต่เมื่อต้องการเรียกใช้เราก็อาจจะเพิ่ม method เข้าไป เช่น function setName($pname){ $this->name=$pname; } function getName(){ return $this->name; } ]]></description>
			<content:encoded><![CDATA[<p>จากโพสที่แล้ว <a href="http://blog.u-blue.com/2009/03/08/php-oop-panda-class/">php oop #1: panda class</a> ว่าด้วยเรื่องการเขียน php oop แบบง่ายๆ แต่ดูไม่มีประโยชน์เท่าไหร่นัก เพราะถ้าดูดีๆมันก็ไม่ต่างจากเขียนฟังก์ชั่นเท่าไหร่ เลยมาว่าต่อถึงคุณสมบัติจริงๆของ object oriented บ้าง</p>
<p>เริ่มต้นจากอย่างแรกก่อน คือคอนเซปต์การ encapsulation หรือขอเรียกง่ายๆว่า การห่อ ซึ่งก็เป็นเหมือนการซ่อนข้อมูลภายในคลาสไว้ไม่ให้สามารถเข้าถึงได้โดยตรงจากส่วนอื่นๆของโปรแกรม ลองดูโค้ทกันเลยน่าจะง่ายกว่านั่งอธิบายให้ยืดยาว</p>
<pre class="brush:php">
class Panda{
   private $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}
</pre>
<p>ก็เล่นกันง่ายๆเลย คือเปลี่ยนตัวแปร name ให้เป็น private ซะ คราวนี้การเรียกถึงตัวแปรแบบตรงๆอย่างที่เห็นในตัวอย่างที่แล้วก็จะไม่สามารถทำได้อีกต่อไป แต่เมื่อต้องการเรียกใช้เราก็อาจจะเพิ่ม method เข้าไป เช่น</p>
<pre class="brush:php">
function setName($pname){
   $this->name=$pname;
}
function getName(){
   return $this->name;
}
</pre>
<p>โดย method setName จะรับค่า name มาใน parameter ด้วย ส่วน getName จะไม่ทำอะไรนอกจาก return ค่าในตัวแปร name แล้วเวลาเรียกใช้ก็จะใช้วิธีเรียกหา method เช่น</p>
<pre class="brush:php">
$p1 = new Panda();
$p1->setName("Lin Hui");
echo $p1->getName();
</pre>
<p>จะเห็นว่า ถ้าเราไม่เขียน method get,set ขึ้นมาซะอย่าง ใครๆก็ไม่สามารถเข้าถึงข้อมูลภายในคลาสของเราได้ ซึ่งในแง่ของความปลอดภัยแล้ว การทำ encapsulation ถือว่ามีประโยชน์มากเลยทีเดียว<br />
<span id="more-160"></span><br />
อีกเรื่องหนึ่งต้องรู้ในการเขียนโปรแกรมเชิงวัตถุใน php คือ การสร้าง constructor ของคลาส หรือมันก็คือการสร้าง method ที่จะทำงานตอนเราสร้างวัตถุจากคลาสนั้นๆเท่านั้น ซึ่งใน php นี้จะมีการใช้คำสั่งที่ต่างจากจาวาซักหน่อย คือ</p>
<pre class="brush:php">
class Panda{
   private $name;
   function __construct($pname){
      $this->name=$pname;
   }
}
</pre>
<p>ตามโค้ทก็คือ เมื่อมีการสร้างวัตถุจากคลาสนี้ method construct จะถูกเรียกใช้(และในวัตถุนี้จะไม่สามารถเรียกใช้ method construct ได้อีก) และรับค่า ชื่อหมี($pname) มาใส่ไว้ในตัวแปร  name ดังนั้นตอนสร้างวัตถุก็ต้องมีการใส่ชื่อไปด้วย ดังนี้</p>
<pre class="brush:php">
$p1 = new Panda("Lin Hui");
</pre>
<p>คราวนี้เราเอาทั้งการ encapsulation และ constructor มารวมกัน โดยจะเขียนให้สามารถตั้งชื่อได้ครั้งเดียว และไม่สามารถเปลี่ยนได้ แต่ยังเอาไปใช้งานได้อยู่</p>
<pre class="brush:php">
class Panda{
   private $name;
   function __construct($pname){
      $this->name=$pname;
   }
   function getName(){
      return $this->name;
   }
}

$p1 = new Panda("Lin Hui");
echo $p1->getName();
</pre>
<p>จะเห็นว่าตอนสร้าง object เราจะต้องใส่ค่า(ชื่อ) ไปเลย และเมื่อตั้งชื่อไปตอนสร้างแล้วจะเปลี่ยนค่าไม่ได้ เพราะเราเอา method setName ออกไปแล้ว ซึ่งความสามารถในการจะทำแบบนี้ได้เป็นสิ่งที่มีประโยชน์มากในการออกแบบโปรแกรมแบบต่างๆได้ ก็แล้วแต่จะพลิกแพลงกันไป </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>php oop #1: panda class</title>
		<link>http://blog.u-blue.com/2009/03/08/php-oop-panda-class/</link>
		<comments>http://blog.u-blue.com/2009/03/08/php-oop-panda-class/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 13:31:28 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=128</guid>
		<description><![CDATA[ว่ากันเรื่องการเขียนโปรแกรม php แบบ oop หรือ object oriented programming นั่นเอง ก่อนจะไปว่ากันเรื่อง php ก็ต้องอธิบาย oop กันก่อน สำหรับคนที่คุ้นๆกันอยู่แล้วก็ข้ามไปได้เลย เอาง่ายๆแบบไม่ยืดยาว oop คือการเขียนโปรแกรมที่ให้ความสำคัญกับ &#8220;วัตถุ&#8221; คุณสมบัติ และความสัมพันธ์ของมัน โดยมีศัพท์ที่ต้องรู้จัก ดังนี้ Class(ชนิดของวัตถุ) เป็นเหมือนเทมเพลท เพื่อบอกว่าวัตถุชนิดนี้จะมีคุณสมบัติใดบ้าง โดยคุณสมบัติประกอบด้วย 2 อย่าง คือ สถานะ(state) และ พฤติกรรม(behavior) คลาส หมีแพนด้า มีสถานะคือ ชื่อหมี และมีพฤติกรรมคือ กินไผ่ Object(วัตถุ) สร้างขึ้นมาจากคลาส โดยเมื่อเป็นวัตถุแล้ว state จะกลายเป็น instance variable(ตัวแปรนั่นแหละ) และ behavior จะถูกเรียกว่า method วัตถุ หมีแพนด้า ที่มีชื่อ หลินฮุ่ย สามารถ ]]></description>
			<content:encoded><![CDATA[<p>ว่ากันเรื่องการเขียนโปรแกรม php แบบ oop หรือ object oriented programming นั่นเอง</p>
<p>ก่อนจะไปว่ากันเรื่อง php ก็ต้องอธิบาย oop กันก่อน สำหรับคนที่คุ้นๆกันอยู่แล้วก็ข้ามไปได้เลย</p>
<p>เอาง่ายๆแบบไม่ยืดยาว oop คือการเขียนโปรแกรมที่ให้ความสำคัญกับ &#8220;วัตถุ&#8221; คุณสมบัติ และความสัมพันธ์ของมัน โดยมีศัพท์ที่ต้องรู้จัก ดังนี้</p>
<ol>
<li><strong>Class</strong>(ชนิดของวัตถุ) เป็นเหมือนเทมเพลท เพื่อบอกว่าวัตถุชนิดนี้จะมีคุณสมบัติใดบ้าง โดยคุณสมบัติประกอบด้วย 2 อย่าง คือ สถานะ(state) และ พฤติกรรม(behavior)<br />
<blockquote>
<p style="text-align: center;">คลาส <strong>หมีแพนด้า</strong> มีสถานะคือ <em>ชื่อหมี</em> และมีพฤติกรรมคือ <em>กินไผ่</em></p>
</blockquote>
</li>
<li><strong>Object</strong>(วัตถุ) สร้างขึ้นมาจากคลาส โดยเมื่อเป็นวัตถุแล้ว state จะกลายเป็น instance variable(ตัวแปรนั่นแหละ) และ behavior จะถูกเรียกว่า method<br />
<blockquote>
<p style="text-align: center;">วัตถุ <strong>หมีแพนด้า</strong> ที่มีชื่อ <strong>หลินฮุ่ย</strong> สามารถ <strong>กินไผ่</strong> ได้</p>
</blockquote>
</li>
</ol>
<p>นั่นคือ ถ้าพูดว่า &#8220;หมีแพนด้า&#8221; ขึ้นมาลอยๆโดยไม่ระบุวัตถุว่าเป็นแพนด้าตัวไหน มันก็จะไม่มีชื่อ และกินไผ่ไม่ได้ งงไหม? ถ้างงก็ลงไปดูโค้ท php กันเลย มันง่ายกว่า จริงๆ<br />
<span id="more-128"></span><br />
โค้ทตัวอย่างการใช้ oo ใน php แบบง่ายๆ โดยใช้เราจะสร้างคลาสแพนด้ากันก่อน</p>
<pre class="brush:php">
class Panda{
   var $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}
</pre>
<p>เมื่อได้คลาสแล้ว มันก็จะไม่มีประโยชน์ใดๆ ถ้าเราไม่สร้างวัตถุขึ้นมาใช้เจ้าคลาสนี้ </p>
<pre class="brush:php">
$p1 = new Panda();
$p1->name="Lin Hui";
$p1->eat();
</pre>
<p>อธิบายโค้ทคือ<br />
บรรทัดที่ 1 สร้างวัตถุจากคลาส แพนด้า ใส่ในตัวแปรชื่อ p1<br />
บรรทัดที่ 2 ใส่ค่า name ว่า &#8220;Lin Hui&#8221; ให้วัตถุชนิดแพนด้า p1 นี้<br />
บรรทัดที่ 3 สั่งให้หลินฮุ่ยกินไผ่ เมื่อจบบรรทัดนี้จะมีข้อความ &#8220;eating bamboo leaf&#8221; พิมพ์ออกมา</p>
<p>ถ้ากลัวหลินฮุ่ยเหงา เราก็จะสร้างแพนด้าขึ้นมาอีกตัว ชื่อ ช่วงๆ โดยเราจะสร้างแค่วัตถุเพิ่ม โดยไม่ยุ่งกับคลาสเลย</p>
<pre class="brush:php">
$p2 = new Panda();
$p2->name="Chung Chung";
</pre>
<p>ทีนี้เอาโค้ทมารวมกัน แล้วสั่งให้พิมพ์ชื่อหมีออกมาทั้งสองตัว</p>
<pre class="brush:php">
class Panda{
   var $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}

$p1 = new Panda();
$p1->name="Lin Hui";

$p2 = new Panda();
$p2->name="Chung Chung";

echo $p1->name;
echo "<br/>";
echo $p2->name;
</pre>
<p>ก็คงจะเดากันได้ ว่าผลลัพท์ที่จะได้ก็คือจะมีข้อความ<br />
Lin Hui<br />
Chung Chung<br />
พิมพ์ออกมา ซึ่งแสดงว่าตัวแปรในทั้งสอง object นั้นถูกเก็บแยกเป็นอิสระจากกัน</p>
<p>เรื่องแพนด้าและวัตถุนี้ก็เอาไว้คร่าวๆแค่นี้ก่อนให้มองเห็นภาพวิธีการเขียน php แบบ object oriented โดยไม่ได้หวังว่าจะเป็นประโยชน์แก่ใครเท่าไหร่นัก เขียนเพื่อความมันส์ส่วนตัวล้วนๆ แต่ถ้ามีใครอ่านแล้วได้ประโยชน์ก็(แอบ)ดีใจด้วย!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2009/03/08/php-oop-panda-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
