Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

รันสคริปต์ PHP จากบรรทัดคำสั่ง: คู่มือ Bash แบบรวดเร็ว

บทความนี้จะวิ่งผ่านวิธีการใช้ PHP จาก Bash shell/บรรทัดคำสั่ง พร้อมตัวอย่าง

PHP ปกติใช้สำหรับสร้างเนื้อหาเพื่อเสิร์ฟบนเว็บ – แต่ก็สามารถใช้จากบรรทัดคำสั่งได้เช่นกัน

สิ่งนี้มักทำเพื่อวัตถุประสงค์ในการทดสอบหรือค้นหาข้อมูลเกี่ยวกับสภาพแวดล้อม PHP – แต่ PHP ยังสามารถใช้เขียนสคริปต์บรรทัดคำสั่งได้ (แม้ว่าจะไม่ค่อยทำบ่อยนัก – อาจเพราะมีทางเลือกที่ดีกว่า)

รันคำสั่ง PHP โดยตรงจาก Shell

คำสั่ง PHP สามารถรันโดยตรงจากบรรทัดคำสั่งด้วยตัวเลือก -r (run):

php -r 'phpinfo();'

ข้างต้น เรียกฟังก์ชัน phpinfo() สามารถส่งโค้ดหลายบรรทัดคั่นด้วยเครื่องหมายเซมิโคลอน หรือส่ง heredoc (ตัวแปรหลายบรรทัดของ Bash) เข้าไปได้

พารามิเตอร์/อาร์กิวเมนต์

พารามิเตอร์/อาร์กิวเมนต์สามารถส่งให้ PHP ผ่านตัวแปร $argv ซึ่งพร้อมใช้งานเมื่อ PHP รันจากบรรทัดคำสั่ง

php -r 'echo $argv[1]; echo $argv[2];' "foo" "bar"

ข้างต้น เข้าถึงพารามิเตอร์แรกด้วย $argv[1] และพารามิเตอร์ที่สองด้วย $argv[2]

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

รันไฟล์สคริปต์

ไฟล์ PHP สามารถรันจากบรรทัดคำสั่งโดยระบุเส้นทางไปยังไฟล์:

php script.php

หรือ

php -f script.php

ตัวเลือก -f ไม่จำเป็นแต่สามารถระบุเพื่อความชัดเจน

รายการตัวเลือกบรรทัดคำสั่ง PHP ทั้งหมดสามารถหาได้ที่นี่

พารามิเตอร์/อาร์กิวเมนต์

เหมือนกับการรัน PHP โดยตรงจากบรรทัดคำสั่ง พารามิเตอร์สามารถเข้าถึงได้ผ่านอาร์เรย์ $argv เมื่อรันสคริปต์จากบรรทัดคำสั่งในลักษณะเดียวกัน

ตรวจสอบว่ากำลังรันจากบรรทัดคำสั่งหรือไม่

เหมือนกับ $argv, $argc มีอยู่ก็ต่อเมื่อรันจากบรรทัดคำสั่ง มันเก็บจำนวนพารามิเตอร์/อาร์กิวเมนต์ที่ส่งให้สคริปต์

หากมันมีอยู่ แสดงว่าคุณกำลังรันบนบรรทัดคำสั่ง!

if (isset($argc)) { // PHP ถูกเรียกจากบรรทัดคำสั่ง }

STDIN/STDOUT และ PHP

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

echo 'Green trees' | php -r 'echo file_get_contents("php://stdin");'

ข้างต้น ข้อความ 'Green trees' ถูกส่งไปยัง PHP ซึ่งอ่านไฟล์ของ STDIN และทำซ้ำกลับมา