ในบทความที่แล้ว เราได้แนะนำแนวคิดของ PEAR กฎการเขียนโค้ด และวิธีการใช้งานแบบง่ายๆ คุณอาจมีความเข้าใจเบื้องต้นแล้ว ในครั้งนี้ เราจะมาแนะนำฟังก์ชันของบางโมดูลในไลบรารี PEAR ที่มีอยู่และการใช้งาน
1. แบบแผนการตั้งชื่อ ก่อนที่จะทำความเข้าใจกับโมดูล pear ที่มีอยู่ เรามาทำความเข้าใจการจำแนกประเภทองค์กรและแบบแผนการตั้งชื่อของ PEAR ก่อน การจัดระเบียบโมดูลใน PEAR นั้นคล้ายคลึงกับ CPAN ไฟล์ที่เกี่ยวข้องของแต่ละโมดูลจะอยู่ภายใต้ไดเร็กทอรีหมวดหมู่ของตัวเอง และบางไฟล์จะอยู่ใต้ไดเร็กทอรีรากของ pear โดยตรง (ไฟล์เดียว) เนื่องจาก PEAR ไม่มีเนมสเปซเช่น Java ชื่อคลาสของคุณควรสะท้อนถึงความสัมพันธ์ระหว่างชื่อโมดูลหรือชื่อคลาสพาเรนต์ และเป็นไปตามแบบแผนบางอย่าง ตัวอย่างเช่น ชื่อโมดูลของคุณ: "Mp3/common" จากนั้น ตามด้วยไฟล์ php ของคุณ ควรอยู่ที่: Mp3/common.php และชื่อคลาสของโมดูลของคุณควรเป็น: Mp3_common โดยทั่วไป หากโมดูลของคุณได้รับการปรับปรุงจากโมดูลที่มีอยู่ ขอแนะนำให้วางโมดูลและโมดูลที่มีอยู่ในไดเร็กทอรีเดียวกัน หากคุณกำลังออกแบบคลาสหรือโมดูลใหม่ คุณสามารถสร้างไดเร็กทอรีใหม่ด้วยตัวเอง หรือวางไว้ในไดเร็กทอรีเดียวกันเพื่อวัตถุประสงค์ที่คล้ายกัน ตัวอย่างเช่น หากคุณเขียนโมดูลใหม่สำหรับการประมวลผลบันทึก ขอแนะนำให้คุณวางไว้ใต้ Log/ ซึ่งระบุว่าเป็นโมดูลแอปพลิเคชันสำหรับการประมวลผลบันทึก หากใช้โมดูลใหม่สำหรับการประมวลผล MP3 คุณสามารถสร้าง A ได้ ไดเร็กทอรีใหม่ mp3 อยู่ภายใต้ไดเร็กทอรี mp3
2. โมดูล PEAR ที่มีอยู่ เนื่องจากโมดูลส่วนใหญ่ของ Pear ยังอยู่ระหว่างการพัฒนา นี่คือโมดูลใน pear ที่เผยแพร่ด้วย php4.05 ควรสังเกตว่าคลาสนามธรรมบางคลาสหรือคลาสพื้นฐาน ( เช่น Mail.php, Log.php, Cache .php) ไม่อยู่ในรายการ เราเน้นเฉพาะโมดูลที่มีฟังก์ชันเฉพาะเท่านั้น ต่อไปนี้คือรายการของโมดูลเหล่านี้:
เกณฑ์มาตรฐาน/ตัวจับเวลาจะทดสอบประสิทธิภาพการทำงานของโค้ด PHP ของคุณ
Benchmark/Benchmark_Iterate ทดสอบประสิทธิภาพของฟังก์ชันเมื่อมีการดำเนินการในลูป
แคช/เอาต์พุตสามารถแคชเอาต์พุตของสคริปต์ php ของคุณได้ ซึ่งสามารถแคชได้หลายวิธี (ในไฟล์ ฐานข้อมูล หรือหน่วยความจำที่ใช้ร่วมกัน) หากคุณใช้โมดูลนี้ อาจเพิ่มภาระบนเซิร์ฟเวอร์ ดังนั้น หากคุณต้องการ เพื่อส่งผ่าน เพื่อปรับปรุงประสิทธิภาพด้วยการแคชสคริปต์ไดนามิก คุณอาจใช้ Zend Optimize เช่นกัน
แคช/กราฟิกสามารถแคชรูปภาพที่คุณต้องการส่งออกแบบไดนามิก
โมดูลการประมวลผลพารามิเตอร์บรรทัดคำสั่งคอนโซล/Getopt
CMD เป็นเชลล์เสมือนที่สามารถใช้เพื่อรันคำสั่งระบบบางคำสั่งได้
Crypt/CBC ใช้การจำลองโมดูล Perl Crypt::CBC
Crypt/HCEMD5 ใช้ฟังก์ชันของโมดูล Perl Crypt::HCE_MD5
Date/Calc ใช้การดำเนินการที่เกี่ยวข้องกับวันที่
วันที่/มนุษย์ การแปลงปฏิทินมนุษย์
DB มอบเลเยอร์การดำเนินการฐานข้อมูลที่เป็นหนึ่งเดียวและเป็นนามธรรม และแบ็กเอนด์รองรับหลายฐานข้อมูล
ค้นหาไฟล์/ค้นหาไฟล์
File/Passwd จัดการไฟล์ที่มีลักษณะคล้ายรหัสผ่าน เช่น รหัสผ่าน, httppass, cvspassword
ไฟล์/SearchReplace ค้นหาและแทนที่สตริงในไฟล์
HTML/Form สามารถสร้างแบบฟอร์มในรูปแบบ html ได้อย่างรวดเร็ว
HTML/IT ใช้การปรับแต่งเทมเพลตและสร้างเพจแบบไดนามิก คล้ายกับฟังก์ชันเทมเพลตใน phplib แต่ควรเรียบง่ายและใช้งานง่าย
HTML/ITX ใช้ฟังก์ชันเพิ่มเติมสำหรับฝ่ายไอที ช่วยให้คุณสามารถปรับแต่งเทมเพลตของคุณได้อย่างยืดหยุ่นมากขึ้น และบรรลุการดำเนินงานที่ซับซ้อนมากขึ้น
ส่วนขยายของ HTML/โปรเซสเซอร์ XML_Parser เพื่อให้สามารถนำไปใช้กับการทำงานของไฟล์ html
HTTP/Compress เป็นคลาส wrapper สำหรับกลไกการบัฟเฟอร์เอาต์พุตของ Php ซึ่งสามารถบีบอัดและจัดเก็บเนื้อหาที่บัฟเฟอร์ได้
รูปภาพ/ระยะไกลสามารถรับข้อมูลรูปภาพของระบบระยะไกลโดยไม่ต้องดาวน์โหลดรูปภาพทั้งหมดภายในเครื่อง
Log/composite Horde เป็นส่วนขยายของคลาสนามธรรมของบันทึกที่ช่วยให้อ็อบเจ็กต์การประมวลผลบันทึกหลายรายการได้รับเหตุการณ์บันทึกเดียวกัน โปรดทราบว่าโมดูลภายใต้ไดเร็กทอรี Log ทั้งหมดเป็นส่วนหนึ่งของโปรเจ็กต์ Horde และส่วนใหญ่เป็นคลาสนามธรรมขั้นสูง
Log/file เขียนข้อมูลบันทึกลงในไฟล์
Log/mcal ส่งข้อมูลไปยังฐานข้อมูลของซอฟต์แวร์การจัดการกำหนดการภายในหรือระยะไกล-mcal
ซูเปอร์คลาสของผู้สังเกตการณ์ใน Log/observer Horder
Log/sql ส่งข้อมูลบันทึกไปยังฐานข้อมูล sql
Log/syslog ส่งข้อมูลไปยัง syslog
Mail/RFC822 ตรวจสอบว่าที่อยู่อีเมลเป็นที่อยู่อีเมล rf822 ที่ถูกต้องหรือไม่
เมล/เซนด์เมล ใช้ sendmail เพื่อส่งจดหมาย
Mail/smtp ใช้เซิร์ฟเวอร์ smtp เพื่อส่งจดหมาย
คณิตศาสตร์/เศษส่วนจัดการการคำนวณทางคณิตศาสตร์ของเศษส่วน
Math/Util คำนวณตัวหารร่วมมาก
NET/Curl เป็น wrapper เชิงวัตถุสำหรับส่วนขยาย Curl ของ PHP
NET/Dig จัดการ dig เพื่อดำเนินการสืบค้นที่เกี่ยวข้องกับ DNS
NET/SMTP ใช้ NET/Socket เพื่อใช้โปรโตคอล SMTP
NET/Socket คลาสซ็อกเก็ตสากลที่ใช้บรรจุภัณฑ์ของการดำเนินการซ็อกเก็ตที่ใช้กันทั่วไป
การแปลงตัวเลข/โรมันระหว่างเลขอารบิคกับเลขโรมัน
การชำระเงิน/Verisign ดำเนินการโต้ตอบกับเกตเวย์การชำระเงิน Verisign
Pear มีคลาสพื้นฐานสองคลาสของโมดูล Pear ได้แก่ คลาส PEAR และ PEARError
PEAR/Installer คลาสการติดตั้ง pear มีฟังก์ชันคล้ายกับโมดูล CPAN ในภาษา Perl
PHPDoc สร้างเอกสาร API โดยอัตโนมัติจากโค้ด php
กำหนดการ/เวลาโต้ตอบกับ AT daemon บน Unix
XML/Parser เป็นตัวแยกวิเคราะห์ xml ที่ใช้ส่วนขยาย xml ของ php
XML/Render สร้างเอกสาร xml เป็นรูปแบบอื่น (html, pdf) นี่เป็นเพียงคลาสนามธรรม มีการใช้งาน html ในโค้ด pear cvs ล่าสุด
XML/RPC ใช้ php เพื่อใช้งานคลาสนามธรรมของ xml-rpc ในโค้ด pear cvs มีการใช้งาน xml/RPC/Server อยู่แล้ว
3. บทนำเกี่ยวกับการใช้โมดูลหลัก ตอนนี้เราจะแนะนำบางส่วนโดยย่อ ของโมดูลที่ใช้กันทั่วไปและฟังก์ชันต่างๆ ค่อนข้างสมบูรณ์และมีเสถียรภาพ และสามารถใช้ในโมดูลที่ "ใช้งานได้จริง" เช่น Db, phpdoc, XML_Parser, IT และ ITX จะมีการแนะนำแยกกันในบทความต่อๆ ไป
1.แพร์/ผู้ติดตั้ง
โมดูลนี้เป็นโมดูลหลักของลูกแพร์เอง โดยจะเสร็จสิ้นการติดตั้งและบำรุงรักษาโมดูลอื่นๆ ของลูกแพร์ ซึ่งคล้ายกับฟังก์ชันของโมดูล cpan ในภาษา Perl อย่างไรก็ตาม ปัจจุบันมีเพียงฟังก์ชันการติดตั้งอื่นๆ เท่านั้น เช่น การสอบถาม การตรวจสอบการพึ่งพา ฯลฯ ยังไม่เสร็จสิ้น Pear เองไม่มีไซต์เปิดเช่น cpan แต่เมื่อจำนวนนักพัฒนาที่เข้าร่วมใน pear ยังคงเพิ่มขึ้นทุกอย่างก็จะอยู่ที่นั่น
ไวยากรณ์การใช้งาน: PEAR_Installer::installer($file)
$file คือไฟล์โมดูลที่ต้องติดตั้ง โดยอาจเป็นไฟล์ในเครื่องหรือไฟล์ระยะไกล เช่น http:// หรือ ftp โปรแกรมติดตั้งจะดาวน์โหลดไฟล์ในเครื่องโดยอัตโนมัติ โดยทั่วไปไฟล์ต่างๆ จะได้รับการจัดทำแพ็กเกจโดยใช้ gzip ซึ่งจะต้องมีแพ็กเกจรวมอยู่ด้วย ไฟล์ DTD ของ pacakage.xml อยู่ภายใต้ไดเร็กทอรี pear และชื่อคือ
package.dtd
need_once "PEAR/Installer.php";
$ ตัวติดตั้ง = PEAR_Installer ใหม่;
//ติดตั้งโมดูลที่ระบุ
$result = $ตัวติดตั้ง->ติดตั้ง($package_file);
ถ้า (ลูกแพร์::isError($ผล)){
echo "การติดตั้ง $package_file ล้มเหลว!";
}อื่น {
echo "ติดตั้ง $package_file สำเร็จ!";
-
-
2.CMD
แม้ว่าแอปพลิเคชัน PHP ส่วนใหญ่ไม่ค่อยเรียกใช้คำสั่งของระบบ เนื่องจากแอปพลิเคชันเหล่านี้อยู่บนเว็บ แต่จากมุมมองของประสิทธิภาพการทำงานและโหลดของระบบ ควรหลีกเลี่ยงการเรียกคำสั่งระบบโดยตรง อย่างไรก็ตาม ในบางแอปพลิเคชันพิเศษหรือหากคุณต้องการเมื่อใด PHP ใช้เป็นเครื่องมือเชลล์ จึงหลีกเลี่ยงไม่ได้ที่จะเรียกเครื่องมือระบบที่มีอยู่ CMD ช่วยให้คุณสามารถรันชุดคำสั่งระบบได้อย่างง่ายดาย
ไวยากรณ์การใช้งาน: setOption ($option, $setting)
ตั้งค่าพารามิเตอร์ $options เป็น $setting
$options เป็นค่าคงที่ โดยอาจเป็นค่าต่อไปนี้:
CMD_SHUTDOWN: ดำเนินการคำสั่งผ่านฟังก์ชันปิดเครื่อง
CMD_SHELL: ระบุเส้นทางของเชลล์
CMD_OUTPUT: ว่าจะบล็อกเอาต์พุตมาตรฐานของคำสั่งหรือไม่
CMD_NOHUP: ใช้ nohup เพื่อดำเนินการคำสั่งในเบื้องหลัง
CMD_VERBOSE: ข้อผิดพลาดในการพิมพ์ไปยัง
คำสั่งเอาต์พุตมาตรฐาน ($command)
เพิ่มคำสั่งที่ต้องดำเนินการ $command อาจเป็นอาร์เรย์หรือสตริงธรรมดา
exec()
ดำเนินการคำสั่งที่เพิ่มเข้ามา
<?php
need_once "CMD.php";
$cmd = CMD ใหม่;
$cmd->command('tar zcvf test.tar.gz ~/test');
ถ้า ( $cmd->exec() ) {
สะท้อน "ความสำเร็จ!n";
} esle {
echo "ข้อผิดพลาด:" . $cmd->lastError;
-
?>
3.เกณฑ์มาตรฐาน/ตัวจับเวลา และเกณฑ์มาตรฐาน/วนซ้ำ
โมดูลทั้งสองนี้ช่วยให้คุณสามารถทดสอบว่าโค้ดของคุณทำงานได้อย่างมีประสิทธิภาพเพียงใด ซึ่งฉันคิดว่ามีประโยชน์สำหรับการดีบักระบบ: คุณสามารถลองใช้อัลกอริธึมที่แตกต่างกัน ตรวจสอบอย่างรอบคอบว่าแต่ละอัลกอริธึมใช้เวลาทำงานนานเท่าใด จากนั้นเลือกวิธีที่ดีที่สุด เกณฑ์มาตรฐาน/ตัวจับเวลาจะทดสอบความแตกต่างของเวลาระหว่างจุดเวลาที่แตกต่างกันสองจุดระหว่างการดำเนินการ เกณฑ์มาตรฐาน/ตัวจับเวลาเป็นส่วนขยายของตัวจับเวลาเพื่อทดสอบเวลาที่ต้องใช้ในการรันโค้ด (ฟังก์ชัน) n ครั้ง
ไวยากรณ์การใช้งาน: Benchmark/Timer
Timer::setMarker($name) ตั้งค่าจุดเวลาปัจจุบันเป็น $name
Timer::start() เริ่มการทดสอบ
Timer::stop() หยุดการทดสอบ
Timer::timeElapsed($start = 'Start', $end = 'Stop') คำนวณความแตกต่างของเวลาระหว่าง $start และ $end
Timer::getProfiling() ส่งคืนเวลาที่ผ่านไประหว่างการเริ่มต้นและหยุด
<?php
need_once "เกณฑ์มาตรฐาน/Timer.php";
$timer = ใหม่ Benchmark_Timer;
$timer->start();
$timer->setMarker('เครื่องหมาย 1');
$timer->stop();
$profile = $timer->getProfiling();
?>
เกณฑ์มาตรฐาน/วนซ้ำ วน
ซ้ำ::run()
รันฟังก์ชันที่ระบุในลูป นี่เป็นวิธีการที่มีพารามิเตอร์ตัวแปร พารามิเตอร์แรกคือจำนวนครั้งในการวนซ้ำ พารามิเตอร์ที่สองคือฟังก์ชันที่จะดำเนินการ และพารามิเตอร์ที่สามเป็นต้นไปคือพารามิเตอร์ที่จะส่งผ่านไปยังฟังก์ชันทดสอบ
วนซ้ำ::get()
ส่งกลับเวลาที่ใช้ในการทดสอบ
<?php
need_once "benchmark/Iterate.php";
$benchmark = ใหม่ Benchmark_Iterate
;
-
พิมพ์ $string"
-
-
$benchmark->run(100, 'foo', 'test');
$result = $benchmark->get();
?>
3.ไฟล์/ค้นหา
&glob ($รูปแบบ, $dirpath, $pattern_type='php')
ค้นหาไดเร็กทอรีและไฟล์ที่ตรงกับ $pattern ใน $dirpath และส่งคืนอาร์เรย์ของชื่อไฟล์และไดเร็กทอรีที่ตรงกัน
&search ($pattern, $directory, $type='php')
ค้นหา $directory สำหรับไฟล์ที่ตรงกับกฎรูปแบบ $และส่งกลับอาร์เรย์ของชื่อไฟล์ที่ตรงกัน (หมายเหตุ เฉพาะไฟล์เท่านั้น ไม่ใช่ไดเรกทอรีย่อย) $patten คือเงื่อนไขการค้นหาที่จะระบุ โดยปกติแล้วจะเป็นนิพจน์ทั่วไป ซึ่งจะระบุโหมดของนิพจน์ทั่วไปที่จะใช้ โดยค่าเริ่มต้นคือโหมด
php search ต่างจาก glob ตรงที่ glob จะไม่ค้นหาไดเรกทอรีย่อยแบบวนซ้ำ ในขณะที่การค้นหาจะค้นหาไดเรกทอรีย่อยแบบวนซ้ำ
<?php
need_once "ไฟล์/Find.php";
$find = File_Find ใหม่;
//ค้นหาไดเรกทอรีปัจจุบัน
$php_files = $find->glob("*php","");
ถ้า ( ลูกแพร์::isError( $php_files ) ){
die "ข้อผิดพลาด: " . $php_files->getMessage() "n" ;
-
// ค้นหาไดเร็กทอรีปัจจุบันซ้ำ ๆ
$all_php_files = $find->ค้นหา("*php","");
ถ้า ( ลูกแพร์::isError( $all_php_files ) ){
die "ข้อผิดพลาด: " . $php_files->getMessage() "n" ;
-
?>
4.ไฟล์/รหัสผ่าน
จัดการไฟล์ในรูปแบบรหัสผ่าน คล้ายกับรหัสผ่านยูนิกซ์มาตรฐาน ไฟล์ .htppass ของ apache และไฟล์รหัสผ่านเซิร์ฟเวอร์ของ cvs เมื่อพิจารณาจากโค้ดเวอร์ชันปัจจุบัน ไม่สามารถใช้เพื่อรักษาไฟล์ passwd เหล่านี้ได้ (เช่น ไม่รองรับ shadow) แต่คุณสามารถใช้สร้างไฟล์รหัสผ่านที่คล้ายกันได้ แน่นอนว่าความปลอดภัยจะไม่สูงมากนัก
วิธีใช้:
File_Passwd($file,$lock=0)--------- สร้างอ็อบเจ็กต์ $file คือไฟล์ passwd ที่คุณต้องการดำเนินการ $lock ระบุว่าจะใช้ flock เพื่อล็อคไฟล์หรือไม่
addUser($user,$pass,$cvsuser)----------เพิ่มผู้ใช้, $user, $pass คือชื่อผู้ใช้และรหัสผ่านตามลำดับ, $cvsuser คือ ID ของผู้ใช้ cvs
modUser($user,$pass,$cvsuser)---------- เปลี่ยนรหัสผ่านของ $user เป็น $pass, $cvsuser คือ id ของผู้ใช้ cvs
delUser($user)---------- ลบผู้ใช้ที่ระบุ $user
VerifyPassword($user,$pass)---------- ตรวจสอบรหัสผ่านผู้ใช้
close()----------บันทึกการเปลี่ยนแปลงลงในไฟล์รหัสผ่าน ปิดไฟล์รหัสผ่าน และปลดล็อคไฟล์
5.ไฟล์/ค้นหาแทนที่
วิธี
ค้นหาและแทนที่สตริงในไฟล์
: File_SearchReplace($find, $replace, $files, $directories = '', $include_subdir = 1, $ignore_lines = array())สร้างและตั้งค่าอ็อบเจ็กต์
$find
สตริงที่จะค้นหา ซึ่งอาจเป็นสตริงหรือนิพจน์ทั่วไป
$replace
สตริงที่จะแทนที่ด้วย ซึ่งอาจเป็นสตริงหรือนิพจน์ทั่วไป
$files
ระบุไฟล์ที่จะใช้ดำเนินการแทนที่ อาร์เรย์หรือสตริงที่คั่นด้วย ","
$directories
ระบุไดเร็กทอรีที่จะดำเนินการ (เป็นทางเลือก) อาร์เรย์หรือสตริงที่คั่นด้วย ","
$include_subdir
หากทำงานในไดเร็กทอรี ให้ระบุว่าจะดำเนินการข้างต้นแบบวนซ้ำในไดเร็กทอรีย่อย ซึ่งอาจมีค่าเป็น 1 หรือ 0
$ignore_lines
ระบุบรรทัดไฟล์ที่จะละเว้น นี่คืออาร์เรย์ บรรทัดไฟล์ใดๆ ที่ขึ้นต้นด้วยสตริงใดๆ ในอาร์เรย์นี้จะถูกละเว้น
getNumOccurences ()
ส่งกลับจำนวนครั้งที่ทำการค้นหาและแทนที่
getLastError()
ส่งคืนข้อความแสดงข้อผิดพลาดล่าสุด
setFind($find)
ตั้งค่าสตริงที่จะพบ
setReplace($replace)
ตั้งค่าสตริงที่จะแทนที่
setFiles($files)
ตั้งค่าไฟล์ที่จะแทนที่
setDirectories($directories)
ตั้งค่าไดเร็กทอรีที่จะแทนที่
setIncludeSubdir($include_subdir)
ตั้งค่าว่าจะดำเนินการค้นหาและแทนที่ในไดเรกทอรีย่อยด้วย
setIgnoreLines($ignore_lines)
setSearchFunction($search_function)
เฉพาะเมื่อใช้ฟังก์ชันการค้นหา "ปกติ" เท่านั้น
ตั้งค่าฟังก์ชันการค้นหาที่จะใช้ ซึ่งอาจเป็นพารามิเตอร์ต่อไปนี้:
ค่าเริ่มต้นปกติ ใช้ฟังก์ชันไฟล์เพื่ออ่านเนื้อหาไฟล์ จากนั้นใช้ str_replace เพื่อแทนที่ทีละบรรทัด
Quick ใช้ str_replace เพื่อแทนที่ไฟล์ทั้งหมดโดยตรง
preg ใช้ preg_replace() เพื่อแทนที่ คุณสามารถใช้นิพจน์ทั่วไปที่ตรงตามข้อกำหนดของฟังก์ชันนี้ได้
ereg ใช้ ereg_replace() เพื่อแทนที่ คุณสามารถใช้นิพจน์ทั่วไปที่ตรงตามข้อกำหนดของฟังก์ชันนี้ได้
ทำการค้นหา()
ทำการค้นหาและแทนที่การดำเนินการ
<?php
need_once "ไฟล์/SearchReplace.php";
need_once "ไฟล์/ค้นหา";
//ค้นหาไดเรกทอรีปัจจุบันแบบเรียกซ้ำ
$find = File_Find ใหม่;
$all_php_files = $find->ค้นหา("*php","");
ถ้า ( ลูกแพร์::isError( $all_php_files ) ){
die "ข้อผิดพลาด: " . $php_files->getMessage() "n" ;
-
ถ้า ( !count($all_php_file) ){
die "ไม่พบไฟล์ต้นฉบับ php!n";
-
//แก้ไขค่าสถานะ php ของ <? เป็น <?php เพื่อให้สอดคล้องกับมาตรฐานลูกแพร์
$replace = new File_SearchReplace('<? ','<?php ',$all_php_files);
$แทนที่->doSearch();
ถ้า ( $replace->getLastError() ) {
die "เกิดข้อผิดพลาด:" . $replace->getLastError();
} อื่น {
echo "แทนที่ " . $replace->getNumOccurences() " สำเร็จแล้ว n";
-
-
6.HTML/แบบฟอร์ม
โมดูลนี้ช่วยให้คุณสร้างแบบฟอร์มการส่งได้อย่างรวดเร็วโดยไม่ต้องเขียนโค้ด HTML ใหม่
การใช้งาน: Form::HTML_Form($action, $method = 'GET', $name = '', $target = '' )
ตัวสร้างของ คลาสนี้มีพารามิเตอร์บางตัว ซึ่งโดยพื้นฐานแล้วเหมือนกับพารามิเตอร์แบบฟอร์มที่ปกติเขียนด้วยโค้ด HTML $action คือ URL ที่จะส่งในแบบฟอร์ม $name สามารถระบุชื่อของแบบฟอร์มได้ และ $target ระบุว่าจะเปิดหรือไม่ หน้าต่างใหม่ ฯลฯ
ชุดวิธีการ addXXX ต่อไปนี้ใช้เพื่อเพิ่มการควบคุมที่เกี่ยวข้องกับแบบฟอร์มนี้ คุณสมบัติของการควบคุมยังสอดคล้องกับคุณสมบัติใน HTML
addText($name, $title, $default, $size = HTML_FORM_TEXT_SIZE)
addCheckbox($name, $title, $default)
addTextarea($name, $title, $default,$width = HTML_FORM_TEXTAREA_WT,$height = HTML_FORM_TEXTAREA_HT)
addPassword($name, $title, $default, $size = HTML_FORM_PASSWD_SIZE)
addSubmit($name = "ส่ง", $title = "ส่งการเปลี่ยนแปลง")
addReset($title = "ยกเลิกการเปลี่ยนแปลง")
addSelect($name, $title, $entries, $default = '', $size = 1,$blank = '', $multiple = false, $attribs = '')
addRadio($name, $title, $value, $default)
เพิ่มรูปภาพ($ชื่อ, $src)
addHidden($ชื่อ, $value)
จอแสดงผล()
แสดงแบบฟอร์มนี้
<?php
need_once "HTML/Form.php";
//สร้างและแสดงแบบฟอร์มเข้าสู่ระบบ
$myform = new HTML_Form("./login.php");
$myform->addText('ชื่อผู้ใช้','ชื่อผู้ใช้','');
$myform->addPasswd('passwd','รหัสผ่านเข้าสู่ระบบ',20);
$myform->addHidden('ลองอีกครั้ง','1');
$myform->addSumit('login','login');
$myform->จอแสดงผล();
-
7.เมล/RFC822
การตรวจสอบว่าอีเมลที่ป้อนนั้นถูกกฎหมายไม่ใช่เรื่องง่าย คุณอาจลองใช้นิพจน์ทั่วไปในการตรวจสอบ แต่ก็ไม่สะดวกและมีประสิทธิภาพ ตอนนี้ หากคุณต้องการตรวจสอบว่าชุดที่อยู่อีเมลเป็นไปตามมาตรฐาน RFC822 และแยกออกเป็นที่อยู่อีเมลแยกกันหรือไม่ คุณสามารถลองใช้โมดูลนี้ ซึ่งเรียบง่ายและใช้งานได้จริง
การใช้งาน: Mail_RFC822 ($address = null, $default_domain = null, $nest_groups = null, $validate = null)
ตัวสร้างคลาส $address คือชุดของที่อยู่ที่คุณต้องการตรวจสอบ $default_domain ระบุชื่อโดเมนเริ่มต้นหรือชื่อโฮสต์ $nest_groups ไม่ว่าจะจัดกลุ่มในเอาต์พุตเพื่อให้ $validate จำเป็นต้องตรวจสอบแต่ละอะตอม parseAddressList($address = null, $default_domain = null, $nest_groups = null, $validate = null) การตรวจสอบแยกวิเคราะห์ที่กำหนด รายการที่อยู่ ถูกต้อง รายการที่อยู่แยกจะถูกส่งกลับ หากมีข้อผิดพลาดเกิดขึ้น ข้อความแสดงข้อผิดพลาดจะถูกส่งกลับ
<?php
need_once "เมล/RFC822.php";
$rf822 = Mail_RFC822 ใหม่;
$result=$rf822->paseAddressList('who;[email protected];[email protected]');
ถ้า ( $rf822->ข้อผิดพลาด ){
echo "ข้อผิดพลาด:$ผลลัพธ์";
}อื่น {
รีเซ็ต($ผลลัพธ์);
สำหรับ ($i=0; $i< นับ($ผล);$i++){
echo "อีเมล:$result[$i]n";
-
-
-
8.เมล/เซนด์เมล
Sendmail เป็น MTA ที่ใช้บ่อยที่สุดบน unix/linux โมดูลนี้อนุญาตให้คุณใช้ sendmail โดยตรงเพื่อส่งจดหมาย
การใช้งาน: ตัวสร้างคลาส Mail_sendmail($params)
คุณสามารถตั้งค่าพารามิเตอร์ของ sendmail ได้ ใช้ได้เฉพาะ 'sendmail_path' เท่านั้น ซึ่งใช้เพื่อตั้งค่าเส้นทาง sendmail send($recipients, $headers, $body) เพื่อส่งจดหมาย $recipients คือที่อยู่อีเมลของผู้รับของคุณ ซึ่งสามารถเป็นรายการเดียวหรือคั่นด้วยรายการที่อยู่ที่เปิดอยู่ สามารถเปิดได้ตราบใดที่เป็นไปตามมาตรฐาน RFC82 $headers คือส่วนหัวของจดหมายที่คุณส่ง นี่คือหมายเลขเชื่อมโยงของอาร์เรย์คือชื่อของส่วนหัว (เช่น Subject) และค่าอาร์เรย์คือค่าของส่วนหัว (เช่น Hello!) . หัวจดหมายที่ประมวลผลแล้วจะเป็น: Subject:Hello! $body คือเนื้อความของจดหมาย รวมถึงส่วนที่เข้ารหัส MIME ทั้งหมด หากสำเร็จ จะคืนค่าเป็นจริง หรือส่งคืนวัตถุ PEAR_Error
<?php
need_once "เมล/sendmail.php";
$sendmail = new Mail_sendmail(array('sendmail_path=>'/usr/local/bin/sendmail'));
$header = array('Subject'=>'Hello','BCC'=>'[email protected]');
$body = 'นี่คือข้อความทดสอบจาก nightsailer.com';
$result = $sendmail->send( '[email protected]' , $header, $body);
ถ้า ( ลูกแพร์::isError($ผล) ){
echo "<h1> การส่งล้มเหลว</h1><br>เหตุผล: ".$result->getMessage()"<br>";
}อื่น {
echo "<h1>ขอแสดงความยินดี! ส่งสำเร็จ!</h1><br>";
-
-
9.เมล์/เอสเอ็มทีพี
ขณะนี้บางไซต์ไม่อนุญาตให้ใช้ sendmail ดังนั้นหากโปรแกรม PHP ของคุณต้องการใช้ฟังก์ชันส่งอีเมล ก็จำเป็นต้องสามารถใช้งานฟังก์ชันที่เกี่ยวข้องให้เสร็จสิ้นได้โดยใช้เซิร์ฟเวอร์ SMTP ภายนอก
การใช้งาน: การใช้โมดูลนี้โดยพื้นฐานแล้วจะเหมือนกับ Mail::sendmail ควรสังเกตว่าโมดูลนี้ต้องการการใช้โมดูล Net::SMTP: Mail_smtp($params)
พารามิเตอร์ที่ถูกต้องสำหรับ $params คือ:
ที่อยู่เซิร์ฟเวอร์ SMTP 'โฮสต์' ค่าเริ่มต้นคือ localhost
พอร์ตบริการ smtp 'พอร์ต' ค่าเริ่มต้นคือ 25
'auth' ไม่ว่า smtp ต้องมีการตรวจสอบการอนุญาตหรือไม่ก็ตาม ค่าเริ่มต้นจะเป็นเท็จ
'usename' ชื่อผู้ใช้ที่ได้รับอนุญาต smtp
'รหัสผ่าน' smtp รหัสผ่านที่ได้รับอนุญาต
ส่ง ($ผู้รับ, $headers, $body)
ส่ง
<?php
need_once "เมล/sendmail.php";
$params=array('host'=>'smtp.nightsailer.com','auth'=true,
'ชื่อผู้ใช้'=>'คืน','รหัสผ่าน'=>'123456');
$sendmail = Mail_sendmail ใหม่($params);
$header = array('Subject'=>'Hello','BCC'=>'[email protected]');
$body = 'นี่คือข้อความทดสอบจาก nightsailer.com';
$result = $sendmail->send( '[email protected]' , $header, $body);
ถ้า ( ลูกแพร์::isError($ผล) ){
echo "<h1> การส่งล้มเหลว</h1><br>เหตุผล: ".$result->getMessage()"<br>";
}อื่น {
echo "<h1>ขอแสดงความยินดี! ส่งสำเร็จ!</h1><br>";
-
-
10.กำหนดการ/เวลา
โมดูลนี้จัดเตรียมอินเทอร์เฟซ
add($cmd, $timespec, $queue = false, $mail = false)
ของโปรแกรม at บน unix
การผนวกคำสั่ง at
วิธีนี้จะสร้างงานที่กำหนดเองสำหรับโปรแกรม at:
$cmd คือโปรแกรมหรือสคริปต์ที่คุณต้องการเรียกใช้
$timespec คือเวลาที่งานเริ่มดำเนินการ รูปแบบจะเหมือนกับที่ at ต้องการ
พารามิเตอร์ทางเลือก $queue ระบุชื่อคิวของงาน
พารามิเตอร์ทางเลือก $mail ระบุว่าจะส่งอีเมลเพื่อรายงานผลการทำงานหลังจากที่งานสิ้นสุด
แสดงหรือไม่($queue = false)
คำสั่งที่แสดงใน at Queue จะส่งกลับอาร์เรย์ที่เชื่อมโยงกัน คีย์ของอาร์เรย์คือค่าของคีย์ที่เกี่ยวข้องเช่นกัน เนื้อหาคืออาร์เรย์ (รันไทม์, คิว)
สามารถ
ใช้ได้
ลบงานที่ระบุออกจากคิวงาน $job คือหมายเลขงานที่จะลบ หากสำเร็จ ให้คืนค่าเป็นจริง หรือคืนค่าเท็จ
<?php
need_once "กำหนดการ/At.php";
$at = Schedule_At ใหม่();
//สร้างและผนวกงาน
$result = $at->add ('find / -type file -name core -exec rm -f {} ;','00:00');
ถ้า ( ลูกแพร์::is_Error($ผล) ) {
echo "ไม่สามารถเพิ่มงานได้!n";
echo "เหตุผล: $result->getMessage() n";
ออก;
-
//แสดงกระแสที่คิว
$queue = $at->show();
ถ้า ( ลูกแพร์::isError($คิว) ) {
echo "เกิดข้อผิดพลาด!n";
echo "เหตุผล:" . Queue->getMessage()
ออก;
-
รีเซ็ต( $คิว );
ในขณะที่ ( list($job, $cmd) = แต่ละ $queue ){
echo "[$งาน]" . $cmd['รันไทม์'] .
เสียงสะท้อน "n"
-
?>
ข้างต้นคือการใช้งานโมดูล PEAR บางตัว สำหรับคำแนะนำโดยละเอียดเพิ่มเติม คุณต้องตรวจสอบไฟล์ต้นฉบับของโมดูลเหล่านี้ด้วยตนเอง หรือคุณสามารถใช้ phpdoc เพื่อสร้างเอกสาร API ของโมดูลเหล่านี้โดยอัตโนมัติ เกี่ยวกับ phpdoc เราจะพูดถึงรายละเอียดในบทความถัดไป
4. ทรัพยากร
PEAR CVS คุณสามารถรับซอร์สโค้ด PEAR ล่าสุดได้จากที่นี่
โครงการโฮเดอร์
หน้าแรกของ PHPDoc