tek4

Include và Require trong PHP

by - September. 21, 2021
Kiến thức
Học
<p>Include v&agrave; Require trong PHP l&agrave; hai kh&aacute;i niệm quan trọng trong khi lập tr&igrave;nh bởi n&oacute; gi&uacute;p tiết kiệm thời gian hơn cho người lập tr&igrave;nh. Trong b&agrave;i viết n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu về đơn vị kiến thức n&agrave;y c&ugrave;ng với v&iacute; dụ dẫn chứng.</p> <h1>Include v&agrave; Require trong PHP</h1> <p>C&acirc;u lệnh Include (hoặc Require) được sử dụng để lấy tất cả đoạn văn bản hoặc đoạn m&atilde; tồn tại trong tệp được chỉ định v&agrave; sao ch&eacute;p nội dung của n&oacute; v&agrave;o trong tệp hiện tại bằng c&aacute;ch sử dụng c&acirc;u lệnh Include. Include sẽ rất hữu &iacute;ch trong việc th&ecirc;m c&aacute;c tệp khi ta muốn th&ecirc;m c&ugrave;ng một đoạn m&atilde; PHP, HTML hoặc đoạn văn bản tr&ecirc;n nhiều trang của một trang web.</p> <h2>C&acirc;u lệnh Include v&agrave; Require</h2> <ul> <li>C&oacute; thể ch&egrave;n nội dung của một tệp PHP n&agrave;y v&agrave;o một tệp PHP kh&aacute;c (trước khi m&aacute;y chủ thực thi n&oacute;), với c&acirc;u lệnh Include hoặc Require.</li> <li>C&aacute;c c&acirc;u lệnh Include v&agrave; Require l&agrave; giống nhau, ngoại trừ khi xảy ra lỗi: <ul> <li>C&acirc;u lệnh Require sẽ đưa ra lỗi nghi&ecirc;m trọng (E_COMPILE_ERROR) v&agrave; dừng thực thi tập lệnh.</li> <li>C&acirc;u lệnh Include sẽ chỉ đưa ra một cảnh b&aacute;o (E_WARNING) v&agrave; tập lệnh sẽ vẫn được tiếp tục thực thi.</li> </ul> </li> </ul> <p>V&igrave; vậy, nếu ta muốn qu&aacute; tr&igrave;nh thực thi được tiếp tục v&agrave; hiển thị cho người d&ugrave;ng đầu ra, ngay cả khi tệp cần được th&ecirc;m bị thiếu, ta sẽ sử dụng c&acirc;u lệnh include.</p> <p>Mặt kh&aacute;c, trong trường hợp viết đoạn m&atilde; FrameWork, CMS hoặc ứng dụng PHP phức tạp, ta sẽ lu&ocirc;n sử dụng c&acirc;u lệnh Require để đưa tệp ch&iacute;nh v&agrave;o luồng thực thi. Điều n&agrave;y sẽ gi&uacute;p tr&aacute;nh ảnh hưởng đến t&iacute;nh bảo mật v&agrave; t&iacute;nh to&agrave;n vẹn của ứng dụng, đề ph&ograve;ng trường hợp v&ocirc; t&igrave;nh thiếu một tệp ch&iacute;nh m&agrave; cần được th&ecirc;m.</p> <p>Việc th&ecirc;m c&aacute;c tệp bằng c&acirc;u lệnh Include sẽ gi&uacute;p tiết kiệm rất nhiều c&ocirc;ng sức. Điều n&agrave;y c&oacute; nghĩa l&agrave; ta c&oacute; thể tạo tệp ở đầu trang, cuối trang cho tất cả c&aacute;c trang Web của m&igrave;nh.</p> <p><em>C&uacute; ph&aacute;p:</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">include 't&ecirc;n file';</pre> <p><em>C&uacute; ph&aacute;p 2:</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">require 't&ecirc;n file';</pre> <p>V&iacute; dụ: Giả sử ch&uacute;ng ta c&oacute; một tệp được gọi l&agrave; vi_du.php, c&oacute; nội dung như sau:</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;?php echo "&lt;p&gt;Xin mến ch&agrave;o c&aacute;c bạn&lt;/p&gt;"; ?&gt;</pre> <p>Để th&ecirc;m đoạn m&atilde; tr&ecirc;n v&agrave;o một file đu&ocirc;i php kh&aacute;c với t&ecirc;n l&agrave; index.php, ta sẽ sử dụng c&acirc;u lệnh Include trong file index.php như sau:</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;html&gt; &lt;body&gt; &lt;?php include 'vi_du.php';?&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>Kết quả sẽ được in ra ở trang index.php như sau:</p> <pre>Xin mến ch&agrave;o c&aacute;c bạn</pre> <p>V&iacute; dụ 2: Giả sử ch&uacute;ng ta c&oacute; một tệp c&oacute; t&ecirc;n l&agrave; vi_du2.php, c&oacute; nội dung như sau:</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;?php $ten = 'Nguyễn A'; $ID_sv = '13221'; ?&gt;</pre> <p>Để th&ecirc;m đoạn m&atilde; tr&ecirc;n v&agrave;o một file đu&ocirc;i php kh&aacute;c với t&ecirc;n l&agrave; index2.php, ta sẽ sử dụng c&acirc;u lệnh Include trong file index.php như sau:</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;html&gt; &lt;body&gt; &lt;?php include 'vi_du.php'; echo "T&ecirc;n sinh vi&ecirc;n l&agrave;: ".$ten."&lt;br&gt;"; echo "M&atilde; ID của sinh vi&ecirc;n l&agrave;: ".$ID_sv; ?&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>Kết quả sẽ được in ra ở trang index.php như sau:</p> <pre>T&ecirc;n sinh vi&ecirc;n l&agrave;: Nguyễn A M&atilde; ID của sinh vi&ecirc;n l&agrave;: 13221</pre> <p>Trong đoạn m&atilde; sau đ&acirc;y, nếu c&acirc;u lệnh include xảy ra b&ecirc;n trong một h&agrave;m nằm trong tệp đang thực hiện lời gọi, th&igrave; tất cả đoạn m&atilde; chứa trong tệp được gọi sẽ hoạt động như thể n&oacute; đ&atilde; được định nghĩa b&ecirc;n trong h&agrave;m đ&oacute;. V&igrave; vậy, n&oacute; sẽ tu&acirc;n theo phạm vi biến l&agrave; biến cục bộ của h&agrave;m đ&oacute;.</p> <p>V&iacute; dụ: Ta sẽ th&ecirc;m file vi_du.php v&agrave;o trong một h&agrave;m như sau.</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;html&gt; &lt;body&gt; &lt;?php function vi_du(){ include 'vi_du.php'; echo "T&ecirc;n sinh vi&ecirc;n l&agrave;: ".$ten."&lt;br&gt;"; echo "M&atilde; ID của sinh vi&ecirc;n l&agrave;: ".$ID_sv; } echo $ID_sv; ?&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>Kết quả nhận được l&agrave; lỗi kh&ocirc;ng x&aacute;c định được biến $ID_sv bởi biến $ID_sv l&agrave; biến cục bộ của h&agrave;m vi_du().</p> <h2>So s&aacute;nh c&acirc;u lệnh Include v&agrave; Require</h2> <p>C&acirc;u lệnh Require được sử dụng để đưa một tệp v&agrave;o một đoạn m&atilde; PHP. Tuy nhi&ecirc;n, khi một tệp được th&ecirc;m với c&acirc;u lệnh Include v&agrave; PHP kh&ocirc;ng thể t&igrave;m thấy n&oacute;, tập lệnh sẽ vẫn được tiếp tục thực thi.</p> <p>Nhưng nếu ch&uacute;ng ta thực hiện tương tự như vậy bằng c&aacute;ch sử dụng c&acirc;u lệnh Require, đoạn m&atilde; sẽ kh&ocirc;ng được thực thi v&igrave; qu&aacute; tr&igrave;nh thực thi c&acirc;u lệnh bị ngừng hẳn sau khi c&acirc;u lệnh Require trả về một lỗi.</p> <p>V&iacute; dụ: Ta sẽ th&ecirc;m một file m&agrave; kh&ocirc;ng tồn tại l&agrave; vi_du2.php v&agrave;o trong file index2.php bằng c&acirc;u lệnh Require.</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;html&gt; &lt;body&gt; &lt;?php require 'vi_du2.php'; echo "Lỗi"; ?&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>Kết quả sẽ nhận được l&agrave; lỗi được in ra.</p> <p>V&iacute; dụ 2: Ta sẽ th&ecirc;m một file m&agrave; kh&ocirc;ng tồn tại l&agrave; vi_du2.php v&agrave;o trong file index2.php bằng c&acirc;u lệnh Inlcude.</p> <pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;html&gt; &lt;body&gt; &lt;?php require 'vi_du2.php'; echo "Lỗi"; ?&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>Trong đoạn m&atilde; tr&ecirc;n, mặc d&ugrave; c&oacute; lỗi được đưa ra tr&ecirc;n m&agrave;n h&igrave;nh, nhưng đoạn m&atilde; sau n&oacute; sẽ vẫn được thực thi v&agrave; in ra chuỗi k&yacute; tự.</p> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;:</span></strong></p> <ul> <li><strong><span style="background-color: #ffff00;">Sử dụng Reuire khi tệp l&agrave; bắt buộc được sử dụng bởi chương tr&igrave;nh ứng dụng.</span></strong></li> <li><strong><span style="background-color: #ffff00;">Sử dụng Include khi tệp kh&ocirc;ng y&ecirc;u cầu bắt buộc v&agrave; chương tr&igrave;nh ứng dụng sẽ vẫn tiếp tục khi kh&ocirc;ng t&igrave;m thấy tệp.</span></strong></li> </ul> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về c&acirc;u lệnh Include v&agrave; Require trong PHP. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i mới nhất tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p> <p>P/s: Cảm ơn mọi người!</p>