วิธีนำ content จาก function include ของ php มาใส่ในตัวแปร

Posted by pumpost  •  Category PHP

วันนี้จะมาเขียนเกี่ยวกับวิธีการนำ content ใน include file มาใส่ลงในตัวแปรนะครับ ซึ่งโดยปกติแล้วเวลาเราทำการ include file ด้วย function "include()" ของ PHP ซึ่งผมแน่ใจว่าคนเขียน PHP โดยส่วนมากรู้จัก function นี้ดีอยู่แล้ว เพราะ function นี้มีประโยชน์หลายด้าน ตัวอย่างเช่น การ include library, function หรือ class ต่าง ๆ มาใช้

แต่ที่เราจะมาพูดถึงกันวันนี้จะเหมาะกับการนำมาใช้ในเชิง template include มากกว่าโดยปกติแล้วเราจะใช้เรียกในส่วนนั้น ๆ ที่เราต้องการเรียกโดยให้แสดงผลออกมาทันที่ เช่น

<html>
	<head>
		<title>Title</title>
	</head>
	<body>
		<div><?php include('header.php');?></div>

		<div><?php include('body.php');?></div>

		<div><?php include('footer.php');?></div>
	</body>
</html>

จากการเขียนด้วยวิธีดังกล่าว function include() จะทำการแสดงผลไฟล์นั้น ๆ ออกมาทันทีเหมือนทำการ echo แต่ถ้าเราต้องการที่จะเก็บ content ต่าง ๆ เอาไว้ก่อนโดยยังไม่ใช้ทันที เราสามารถทำได้ด้วยการนำ tag ทั้งหมดของเราไปใส่ลงในตัวแปร เช่น

//file : header.php

$header = '<h1>Header</h1>'; 

//สมมติว่า tag html เยอะและยาวมาก ๆๆ
//file : body.php

$body = '<div>Content 123 ...</div>';

//สมมติว่า tag html เยอะและยาวมาก ๆๆ
//file : footer.php

$footer = '<span>footer</span>';

//สมมติว่า tag html เยอะและยาวมาก ๆๆ
//file : template.php

<?php include('header.php');?>
<?php include('body.php');?>
<?php include('footer.php');?>

<html>
	<head>
		<title>Title</title>
	</head>
	<body>
		<div><?php echo $header;?></div>

		<div><?php echo $body;?></div>

		<div><?php echo $footer;?></div>
	</body>
</html>

แต่ด้วยการทำแบบนี้นอกจากจะทำให้ code html ของเราดูยากเวลาที่ มี tag html เยอะ ๆ แล้ว ยังจะทำให้ยากลำบากในการแก้ไขในบางครั้งอีกด้วย ดังนั้นผมจึงอยากจะแนะนำอีกวิธีหนึ่งครับ โดยวิธีนี้จะคล้าย ๆ กับวิธีนำ tag ทั้งหมดไปใส่ในตัวแปร ครับต่างกันที่ตรงเราไม่ต้องนำไปใส่ตัวแปรเหมือนกับวิธีแรกครับ ฟังดูอาจงง ๆ นะครับ ดูตัวอย่างกันเลยดีกว่า ก่อนอื่นสร้าง function ขึ้นมาก่อน

function get_include_contents($filename) 
{
    if (is_file($filename)) 
    {
        ob_start();
			
        include $filename;
        return ob_get_clean();
    }
    return false;
}

แล้วก็เรียกใช้งานไฟล์ที่ต้องการจะ include ครับ ตัวอย่าง

อันนี้เป็นไฟล์ที่จะถูก include ครับ

// file : contents.php

<?php 
$title = "PHP Tester";
$content = "Lorem ipsum dolor sit amet";
$somethingelse = "Something";
?>

<h2>Title : <?php echo $title;?></h2>

<div>

	<?php echo $content;?>

</div>

<div>

	<?php echo $somethingelse;?>

</div>

ลองเรียกไฟล์ด้านบนผ่าน function ที่สร้างขึ้นมาก่อนหน้านั้น

//ไฟล์ดังกล่าวจะยังไม่ถูกแสดงโดยจะถูกเก็บไว้ในตัวแปร
$contents = get_include_contents('contents.php');

//แสดง content ของไฟล์ที่ include มาทันทีที่ echo
echo $contents;

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

Tagged: include , template , function

Comments (0)  •  20 May, 2011

0 Responses

Leave a Reply


  1. Reload Image
    Security Code*

Image Gallery

เกี่ยวกับบล็อกนี้

จุดประสงค์ของ Blog นี้สร้างขึ้นเพื่อต้องการจะแลกเปลี่ยนความรู้ หรือแบ่งปันความรู้ต่าง ๆ ที่ผู้เขียนได้พบเจอ อีกทั้งยังเป็นเหมือนสมุดจดกันลืมของผู้เขียนด้วย และเนื่องจากผู้เขียนไม่ได้เก่งหรือมีประสบการณ์เขียนโปรแกรมที่ยาวนานเท่าไหร่นัก ดังนั้นถ้ามีอะไรผิดพลาด หรือขาดตกบกพร่องไปต้องขออภัยมา ณ ที่นี้ด้วยครับ
By pumpost.com ::

Contact

ถ้าท่านมีข้อสงสัย หรือข้อชี้แนะ สามารถติดต่อได้ทาง e-mail หรือ comment ในบทความครับ

info@pumpost.com

+9 (999) 999-9999
+9 (999) 999-9999

Address: 123 somewhere i belong