ต่อไปนี้เป็นคำพูด:
หากคุณวางแผนที่จะทำให้แอปพลิเคชัน PHP ของคุณพร้อมใช้งานสำหรับบุคคลอื่นหรือบริษัท คุณต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันนั้นกำหนดค่าได้ อย่างน้อยที่สุด อนุญาตให้ผู้ใช้ตั้งค่าการเข้าสู่ระบบฐานข้อมูลและรหัสผ่านในลักษณะที่ปลอดภัย เพื่อไม่ให้เนื้อหาภายในนั้นถูกเปิดเผยต่อสาธารณะ
บทความนี้สาธิตเทคนิคต่างๆ ในการจัดเก็บการตั้งค่าการกำหนดค่าและการแก้ไขการตั้งค่าเหล่านี้ นอกจากนี้ บทความนี้ยังให้คำแนะนำว่าองค์ประกอบใดบ้างที่จำเป็นต้องกำหนดค่าได้ และวิธีหลีกเลี่ยงไม่ให้ตกอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออกของการกำหนดค่ามากเกินไปหรือน้อยเกินไป
การกำหนดค่าโดยใช้ไฟล์ INI
PHP มีการรองรับไฟล์การกำหนดค่าในตัว ซึ่งสามารถทำได้ผ่านกลไกไฟล์การเริ่มต้น (INI) เช่น ไฟล์ php.ini โดยที่ค่าคงที่ เช่น การหมดเวลาการเชื่อมต่อฐานข้อมูล หรือวิธีจัดเก็บเซสชันจะถูกกำหนดไว้ หากต้องการ คุณสามารถปรับแต่งการกำหนดค่าสำหรับแอปพลิเคชันของคุณได้ในไฟล์ php.ini นี้ เพื่อแสดงให้เห็น ฉันได้เพิ่มบรรทัดโค้ดต่อไปนี้ลงในไฟล์ php.ini
myapptempdir=foo
จากนั้น ฉันเขียนสคริปต์ PHP ขนาดเล็กเพื่ออ่านรายการการกำหนดค่านี้ ดังที่แสดงในรายการ 1
รายการ 1. ini1.php
<?php
ฟังก์ชั่น get_template_directory()
-
$v = get_cfg_var( “myapptempdir” );
กลับ ( $v == null ) ?
}
echo( get_template_directory()”n” );
?
เมื่อรันโค้ดนี้บนบรรทัดคำสั่ง ฉันได้รับผลลัพธ์ดังต่อไปนี้:
% php ini1.php
ฟู
%
มหัศจรรย์. แต่เหตุใดเราจึงใช้ฟังก์ชัน INI มาตรฐานเพื่อรับค่าของรายการการกำหนดค่า myapptempdir ไม่ได้ ฉันค้นคว้าและพบว่าในกรณีส่วนใหญ่ ไม่สามารถรับรายการการกำหนดค่าแบบกำหนดเองโดยใช้วิธีการเหล่านี้ได้ อย่างไรก็ตาม สามารถเข้าถึงได้โดยใช้ฟังก์ชัน get_cfg_var
เพื่อให้แนวทางนี้ง่ายขึ้น ให้ห่อหุ้มการเข้าถึงตัวแปรในฟังก์ชันที่สองที่ใช้ชื่อคีย์การกำหนดค่าและค่าเริ่มต้นเป็นพารามิเตอร์ ดังที่แสดงด้านล่าง
รายการ 2.
ฟังก์ชั่น ini2.php get_ini_value( $n, $dv )
-
$c = get_cfg_var( $n );
กลับ ( $c == null ) ?
}
ฟังก์ชัน get_template_directory()
-
กลับ get_ini_value( “myapptempdir”, “tempdir” );
}
นี่เป็นภาพรวมที่ดีของวิธีเข้าถึงไฟล์ INI ดังนั้นหากคุณต้องการใช้กลไกอื่นหรือจัดเก็บไฟล์ INI ไว้ที่อื่น คุณไม่จำเป็นต้องประสบปัญหาในการเปลี่ยนแปลงฟังก์ชันมากมาย
ฉันไม่แนะนำให้ใช้ไฟล์ INI สำหรับการกำหนดค่าแอปพลิเคชัน ด้วยเหตุผลสองประการ ประการแรก แม้ว่าจะทำให้อ่านไฟล์ INI ได้ง่ายขึ้น แต่ก็แทบเป็นไปไม่ได้เลยที่จะเขียนไฟล์ INI ได้อย่างปลอดภัย ดังนั้นจึงเหมาะสำหรับรายการการกำหนดค่าแบบอ่านอย่างเดียวเท่านั้น ประการที่สอง ไฟล์ php.ini จะถูกแชร์ในทุกแอปพลิเคชันบนเซิร์ฟเวอร์ ดังนั้นฉันไม่คิดว่ารายการการกำหนดค่าเฉพาะแอปพลิเคชันควรถูกเขียนลงในไฟล์นั้น
คุณต้องรู้อะไรบ้างเกี่ยวกับไฟล์ INI สิ่งที่สำคัญที่สุดคือวิธีรีเซ็ตเส้นทางรวมเพื่อเพิ่มรายการการกำหนดค่าดังที่แสดงด้านล่าง
รายการ 3. ini3.php
<?php
echo( ini_get("include_path")."n" );
ini_set("include_path",
ini_get("include_path")":./mylib" );
echo( ini_get("include_path")."n" );
?
ในตัวอย่างนี้ ฉันเพิ่มไดเร็กทอรี mylib ในเครื่องของฉันลงในพาธ include ดังนั้นฉันจึงสามารถขอไฟล์ PHP จากไดเร็กทอรีนั้นได้โดยไม่ต้องเพิ่มพาธลงในคำสั่ง need
การกำหนดค่าใน PHP
ทางเลือกทั่วไปในการจัดเก็บรายการการกำหนดค่าในไฟล์ INI คือการใช้สคริปต์ PHP อย่างง่ายเพื่อคงข้อมูลไว้ ด้านล่างนี้เป็นตัวอย่าง
รายการ 4. config.php
<?php
# ระบุตำแหน่งของไดเร็กทอรีชั่วคราว
-
$TEMPLATE_DIRECTORY = "ชั่วคราว";
?
รหัสที่ใช้ค่าคงที่นี้แสดงอยู่ด้านล่าง
รายการ 5. php.php
<?php
need_once 'config.php';
ฟังก์ชัน get_template_directory()
-
$TEMPLATE_DIRECTORY ทั่วโลก;
กลับ $TEMPLATE_DIRECTORY;
}
echo( get_template_directory()”n” );
?
ขั้นแรกโค้ดจะรวมไฟล์การกำหนดค่า (config.php) จากนั้นจึงสามารถใช้ค่าคงที่ได้โดยตรง
มีข้อดีหลายประการในการใช้เทคโนโลยีนี้ ขั้นแรก หากมีผู้เรียกดูไฟล์ config.php หน้านั้นจะว่างเปล่า ดังนั้นคุณจึงสามารถใส่ config.php ลงในไฟล์เดียวกับรูทของเว็บแอปพลิเคชันของคุณได้ ประการที่สอง สามารถแก้ไขได้ในโปรแกรมแก้ไขใดๆ และโปรแกรมแก้ไขบางตัวยังมีฟังก์ชันการระบายสีไวยากรณ์และการตรวจสอบไวยากรณ์อีกด้วย
ข้อเสียของเทคโนโลยีนี้คือเป็นเทคโนโลยีแบบอ่านอย่างเดียวเช่นไฟล์ INI การแตกข้อมูลจากไฟล์นี้เป็นเรื่องง่าย แต่การปรับข้อมูลในไฟล์ PHP นั้นทำได้ยาก และในบางกรณีก็เป็นไปไม่ได้ด้วยซ้ำ
ทางเลือกต่อไปนี้แสดงวิธีเขียนระบบการกำหนดค่าที่มีลักษณะทั้งอ่านและเขียนได้
ไฟล์ข้อความ
สองตัวอย่างก่อนหน้านี้ใช้ได้สำหรับรายการการกำหนดค่าแบบอ่านอย่างเดียว แต่พารามิเตอร์การกำหนดค่าที่เป็นทั้งอ่านและเขียนล่ะ ขั้นแรก ให้ดูที่ไฟล์การกำหนดค่าข้อความในรายการที่ 6
รายการ 6. config.txt
# ไฟล์กำหนดค่าแอปพลิเคชันของฉัน
Title=แอปของฉัน
TemplateDirectory=tempdir
นี่เป็นรูปแบบไฟล์เดียวกับไฟล์ INI แต่ฉันเขียนผู้ช่วยของตัวเอง เมื่อต้องการทำสิ่งนี้ ฉันได้สร้างคลาสการกำหนดค่าของตัวเองดังที่แสดงด้านล่าง
รายการ 7. text1.php
<?php
การกำหนดค่าคลาส
-
$configFile = 'config.txt'; ส่วนตัว
$items = array();
function __construct() { $this->parse(); }
function __get($id) { return $this->items[ $id ]; }
ฟังก์ชันแยกวิเคราะห์()
-
$fh = fopen( $this->configFile, 'r' );
ในขณะที่( $l = fgets( $fh ) )
-
ถ้า ( preg_match( '/^#/', $l ) == false )
-
preg_match( '/^(.*?)=(.*?)$/', $l, $found );
$this->items[ $found[1] ] = $found[2];
-
-
fclose( $fh );
-
}
$c = การกำหนดค่าใหม่();
echo( $c->TemplateDirectory”n” );
?
รหัสแรกสร้างวัตถุการตั้งค่าคอนฟิก ตัวสร้างจะอ่าน config.txt ต่อไปและตั้งค่าตัวแปรท้องถิ่น $items ด้วยเนื้อหาไฟล์ที่แยกวิเคราะห์
จากนั้นสคริปต์จะค้นหา TemplateDirectory ซึ่งไม่ได้กำหนดไว้โดยตรงในออบเจ็กต์ ดังนั้น เมธอด __get แบบวิเศษจึงถูกเรียกโดย $id ตั้งค่าเป็น 'TemplateDirectory' ซึ่งจะส่งคืนค่าในอาร์เรย์ $items สำหรับคีย์นั้น
เมธอด __get นี้ใช้ได้เฉพาะกับสภาพแวดล้อม PHP V5 ดังนั้นสคริปต์นี้จึงต้องทำงานภายใต้ PHP V5 จริงๆ แล้ว สคริปต์ทั้งหมดในบทความนี้จำเป็นต้องทำงานภายใต้ PHP V5
เมื่อรันสคริปต์นี้จากบรรทัดคำสั่ง คุณจะเห็นผลลัพธ์ต่อไปนี้:
http://www.knowsky.com/php.asp
% ข้อความ PHP1.php
ชั่วคราว
-
ตามที่คาดไว้ ออบเจ็กต์จะอ่านไฟล์ config.txt และรับค่าที่ถูกต้องสำหรับรายการการกำหนดค่า TemplateDirectory
แต่คุณควรทำอย่างไรเพื่อตั้งค่าการกำหนดค่า? โดยการสร้างวิธีการใหม่และโค้ดทดสอบใหม่ในคลาสนี้ คุณจะได้รับฟังก์ชันนี้ ดังที่แสดงด้านล่าง
รายการ 8. text2.php
<?php
การกำหนดค่าคลาส
-
…
function __get($id) { return $this->items[ $id ]; }
function __set($id,$v) { $this->items[ $id ] = $v;
ฟังก์ชั่นแยกวิเคราะห์ () { … }
-
$c = การกำหนดค่าใหม่();
echo( $c->TemplateDirectory”n” );
$c->TemplateDirectory = 'foobar';
echo( $c->TemplateDirectory”n” );
?
ขณะนี้มีฟังก์ชัน __set ซึ่งเป็น "ลูกพี่ลูกน้อง" ของฟังก์ชัน __get ฟังก์ชันนี้ไม่ได้รับค่าสำหรับตัวแปรสมาชิก ฟังก์ชันนี้จะถูกเรียกใช้เมื่อต้องตั้งค่าตัวแปรสมาชิก รหัสทดสอบที่ด้านล่างจะตั้งค่าและพิมพ์ค่าใหม่ออกมา
นี่คือสิ่งที่เกิดขึ้นเมื่อคุณเรียกใช้โค้ดนี้จากบรรทัดคำสั่ง:
% php text2.php
ชั่วคราว
ฟู่บาร์
-
ดีมาก! แต่ฉันจะบันทึกลงในไฟล์ได้อย่างไรเพื่อให้การเปลี่ยนแปลงได้รับการแก้ไข? ในการดำเนินการนี้ คุณจะต้องเขียนไฟล์และอ่าน ฟังก์ชั่นใหม่สำหรับการเขียนไฟล์ดังภาพด้านล่าง
รายการ 9. text3.php
<?php
การกำหนดค่าคลาส
-
…
ฟังก์ชั่นบันทึก()
-
$nf = ";
$fh = fopen( $this->configFile, 'r' );
ในขณะที่( $l = fgets( $fh ) )
-
ถ้า ( preg_match( '/^#/', $l ) == false )
-
preg_match( '/^(.*?)=(.*?)$/', $l, $found );
$nf .= $found[1].”=”.$this->items[$found[1]]”n”;
-
อื่น
-
$nf .= $l;
-
-
fclose( $fh );
คัดลอก( $this->configFile, $this->configFile.'.bak' );
$fh = fopen( $this->configFile, 'w' );
fwrite( $fh, $nf );
fclose( $fh );
-
}
$c = การกำหนดค่าใหม่();
echo( $c->TemplateDirectory”n” );
$c->TemplateDirectory = 'foobar';
echo( $c->TemplateDirectory”n” );
$c->บันทึก();
?
ฟังก์ชั่นบันทึกใหม่จัดการ config.txt อย่างเรียบร้อย แทนที่จะเขียนไฟล์ใหม่ด้วยรายการการกำหนดค่าที่อัปเดต (ซึ่งจะลบความคิดเห็น) ฉันอ่านไฟล์และเขียนเนื้อหาของอาร์เรย์ $items ใหม่อย่างยืดหยุ่น ด้วยวิธีนี้ ความคิดเห็นในไฟล์จะยังคงอยู่
รันสคริปต์บนบรรทัดคำสั่งและส่งออกเนื้อหาของไฟล์การกำหนดค่าข้อความ คุณสามารถดูผลลัพธ์ต่อไปนี้
รายการ 10. ฟังก์ชั่นการบันทึกเอาต์พุต
% ข้อความ PHP3.php
ชั่วคราว
ฟู่บาร์
% cat config.txt
#ไฟล์กำหนดค่าแอปพลิเคชันของฉัน
Title=แอปของฉัน
TemplateDirectory=foobar
%
ไฟล์ config.txt ดั้งเดิมได้รับการอัพเดตด้วยค่าใหม่แล้ว
ไฟล์การกำหนดค่า XML
แม้ว่าไฟล์ข้อความจะอ่านและแก้ไขได้ง่าย แต่ก็ไม่ได้รับความนิยมเท่ากับไฟล์ XML นอกจากนี้ยังมีโปรแกรมแก้ไข XML จำนวนมากที่เข้าใจมาร์กอัป การ Escape สัญลักษณ์พิเศษ และอื่นๆ อีกมากมาย ไฟล์การกำหนดค่าเวอร์ชัน XML จะมีลักษณะอย่างไร รายการ 11 แสดงไฟล์การกำหนดค่าในรูปแบบ XML
รายการ 11. config.xml
<?xml version=”1.0″?>
<กำหนดค่า>
<ชื่อ><แอปของฉัน<//ชื่อ>
<ไดเร็กทอรีเทมเพลต">tempdir </ไดเร็กทอรีเทมเพลต">
</กำหนดค่า><
รายการ 12 แสดงเวอร์ชันอัปเดตของคลาสการกำหนดค่าที่ใช้ XML เพื่อโหลดการตั้งค่าการกำหนดค่า
รายการ 12. xml1.php
<?php
การกำหนดค่าคลาส
-
$configFile = 'config.xml'; ส่วนตัว
$items = array();
function __construct() { $this->parse(); }
function __get($id) { return $this->items[ $id ]; }
ฟังก์ชันแยกวิเคราะห์()
-
$doc = DOMDocument ใหม่();
$doc->load( $this->configFile );
$cn = $doc->getElementsByTagName( “config” );
$nodes = $cn->item(0)->getElementsByTagName( “*” );
foreach( $โหนดเป็น $node )
$this->items[ $node->nodeName ] = $node->nodeValue;
-
-
$c = การกำหนดค่าใหม่();
echo( $c->TemplateDirectory”n” );
?>
ดูเหมือนว่า XML จะมีประโยชน์อีกอย่างหนึ่ง นั่นคือ โค้ดจะง่ายกว่าและง่ายกว่าเวอร์ชันข้อความ หากต้องการบันทึก XML นี้ จำเป็นต้องมีฟังก์ชันบันทึกเวอร์ชันอื่น ซึ่งจะบันทึกผลลัพธ์ในรูปแบบ XML แทนรูปแบบข้อความ
รายการ 13.xml2.php
…
ฟังก์ชั่นบันทึก()
-
$doc = DOMDocument ใหม่();
$doc->formatOutput = true;
$r = $doc->createElement( “config” );
$doc->appendChild( $r );
foreach( $this->รายการเป็น $k => $v )
-
$kn = $doc->createElement( $k );
$kn->appendChild( $doc->createTextNode( $v ) );
$r->ผนวกเด็ก( $kn );
}
copy( $this->configFile, $this->configFile.'.bak' );
$doc->save( $this->configFile );
-
...
รหัสนี้สร้าง XML Document Object Model (DOM) ใหม่ จากนั้นบันทึกข้อมูลทั้งหมดในอาร์เรย์ $items ลงในโมเดลนี้ หลังจากเสร็จสิ้นแล้ว ให้ใช้วิธีการบันทึกเพื่อบันทึก XML ลงในไฟล์
ทางเลือกสุดท้าย
ในการใช้ฐานข้อมูล
คือการใช้ฐานข้อมูลเพื่อจัดเก็บค่าขององค์ประกอบการกำหนดค่าขั้นตอนแรกคือการใช้สคีมาอย่างง่ายในการจัดเก็บข้อมูลการกำหนดค่า ด้านล่างนี้เป็นรูปแบบที่เรียบง่าย
รายการ 14. schema.sql
DROP TABLE หากมีการตั้งค่าอยู่;
สร้างการตั้งค่าตาราง (
รหัส MEDIUMINT ไม่เป็นโมฆะ AUTO_INCREMENT
ชื่อข้อความ
ข้อความค่า,
คีย์หลัก (รหัส)
-
จำเป็นต้องมีการปรับเปลี่ยนบางอย่างตามความต้องการของแอปพลิเคชัน ตัวอย่างเช่น หากคุณต้องการให้องค์ประกอบการกำหนดค่าถูกจัดเก็บต่อผู้ใช้ คุณต้องเพิ่ม ID ผู้ใช้เป็นคอลัมน์เพิ่มเติม
ในการอ่านและเขียนข้อมูล ฉันเขียนคลาสการกำหนดค่าที่อัปเดตแล้วดังแสดงในรูปที่ 15
รายการ 15. db1.php
<?php
need_once( 'DB.php' );
$dsn = 'mysql: //root:password@localhost/config';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }
การกำหนดค่าคลาส
-
$configFile = 'config.xml'; ส่วนตัว
$items = array();
function __construct() { $this->parse(); }
function __get($id) { return $this->items[ $id ]; }
ฟังก์ชั่น __set($id,$v)
-
global $db;
$this->items[ $id ] = $v;
$sth1 = $db->prepare( 'ลบจากการตั้งค่า WHERE name=?' );
$db->execute( $sth1, $id );
if (PEAR::isError($db)) { ตาย($db->getMessage()); }
$sth2 = $db->เตรียม(
'ใส่การตั้งค่า (id, ชื่อ, ค่า) ค่า (0, ?, ?)' );
$db->execute( $sth2, array( $id, $v ) );
if (PEAR::isError($db)) { ตาย($db->getMessage()); }
}
ฟังก์ชันแยกวิเคราะห์()
-
ทั่วโลก $db;
$doc = DOMDocument ใหม่();
$doc->load( $this->configFile );
$cn = $doc->getElementsByTagName( “config” );
$nodes = $cn->item(0)->getElementsByTagName( “*” );
foreach( $โหนดเป็น $node )
$this->items[ $node->nodeName ] = $node->nodeValue;
$res = $db->query( 'เลือกชื่อ, ค่าจากการตั้งค่า' );
if (PEAR::isError($db)) { ตาย($db->getMessage()); }
ในขณะที่( $res->fetchInto( $row ) ) {
$this->items[ $row[0] ] = $row[1];
-
-
}
$c = การกำหนดค่าใหม่();
echo( $c->TemplateDirectory”n” );
$c->TemplateDirectory = 'ฟูใหม่';
echo( $c->TemplateDirectory”n” );
?>
นี่เป็นโซลูชันข้อความ/ฐานข้อมูลแบบไฮบริดจริงๆ โปรดดูวิธีการแยกวิเคราะห์อย่างละเอียดยิ่งขึ้น คลาสนี้อ่านไฟล์ข้อความเพื่อรับค่าเริ่มต้นก่อน จากนั้นจึงอ่านฐานข้อมูลเพื่ออัปเดตคีย์ให้เป็นค่าล่าสุด หลังจากตั้งค่าแล้ว คีย์จะถูกลบออกจากฐานข้อมูลและเพิ่มบันทึกใหม่ด้วยค่าที่อัปเดต
เป็นเรื่องที่น่าสนใจที่จะเห็นว่าคลาสการกำหนดค่าทำงานอย่างไรผ่านบทความนี้หลายเวอร์ชัน โดยสามารถอ่านข้อมูลจากไฟล์ข้อความ XML และฐานข้อมูล ทั้งหมดนี้ยังคงรักษาอินเทอร์เฟซเดียวกันไว้ได้ ฉันขอแนะนำให้คุณใช้อินเทอร์เฟซที่มีเสถียรภาพเหมือนกันในการพัฒนาของคุณด้วย วิธีการทำงานนี้ไม่ชัดเจนสำหรับลูกค้าของออบเจ็กต์ สิ่งสำคัญคือสัญญาระหว่างวัตถุกับลูกค้า
การกำหนดค่าคืออะไรและจะกำหนดค่าอย่างไร
การค้นหาจุดกึ่งกลางที่เหมาะสมระหว่างตัวเลือกการกำหนดค่ามากเกินไปและการกำหนดค่าไม่เพียงพออาจเป็นเรื่องยาก เพื่อให้แน่ใจว่าการกำหนดค่าฐานข้อมูลใดๆ (เช่น ชื่อฐานข้อมูล ผู้ใช้ฐานข้อมูล และรหัสผ่าน) ควรกำหนดค่าได้ นอกจากนี้ ฉันยังมีรายการการกำหนดค่าพื้นฐานที่แนะนำอีกด้วย
ในการตั้งค่าขั้นสูง แต่ละคุณสมบัติควรมีตัวเลือกเปิด/ปิดแยกกัน อนุญาตหรือปิดใช้งานตัวเลือกเหล่านี้ตามความสำคัญของแอปพลิเคชัน ตัวอย่างเช่น ในแอปพลิเคชันเว็บฟอรั่ม คุณลักษณะการหน่วงเวลาจะถูกเปิดใช้งานตามค่าเริ่มต้น อย่างไรก็ตาม การแจ้งเตือนทางอีเมลจะถูกปิดใช้งานตามค่าเริ่มต้น เนื่องจากจำเป็นต้องมีการปรับแต่ง
ตัวเลือกอินเทอร์เฟซผู้ใช้ (UI) ทั้งหมดควรได้รับการตั้งค่าไว้ที่ตำแหน่งเดียว โครงสร้างของอินเทอร์เฟซ (เช่น ตำแหน่งเมนู รายการเมนูเพิ่มเติม URL ที่เชื่อมโยงไปยังองค์ประกอบเฉพาะของอินเทอร์เฟซ โลโก้ที่ใช้ ฯลฯ) ควรตั้งค่าไว้ในตำแหน่งเดียว ฉันไม่แนะนำอย่างยิ่งให้ระบุแบบอักษร สี หรือสไตล์เป็นรายการการกำหนดค่า ควรตั้งค่าสิ่งเหล่านี้ผ่าน Cascading Style Sheets (CSS) และระบบการกำหนดค่าควรระบุไฟล์ CSS ที่จะใช้ CSS เป็นวิธีที่มีประสิทธิภาพและยืดหยุ่นในการตั้งค่าแบบอักษร สไตล์ สี และอื่นๆ มีเครื่องมือ CSS ที่ยอดเยี่ยมมากมาย และแอปพลิเคชันของคุณควรใช้ CSS ให้เกิดประโยชน์ แทนที่จะพยายามสร้างมาตรฐานด้วยตัวเอง
ภายในแต่ละฟีเจอร์ ฉันแนะนำให้ตั้งค่าตัวเลือกการกำหนดค่า 3 ถึง 10 ตัวเลือก ตัวเลือกการกำหนดค่าเหล่านี้ควรตั้งชื่อในลักษณะที่มีความหมาย หากสามารถตั้งค่าตัวเลือกการกำหนดค่าผ่าน UI ได้ ชื่อตัวเลือกในไฟล์ข้อความ ไฟล์ XML และฐานข้อมูลควรเกี่ยวข้องโดยตรงกับชื่อขององค์ประกอบอินเทอร์เฟซ นอกจากนี้ ตัวเลือกเหล่านี้ทั้งหมดควรมีค่าเริ่มต้นที่ชัดเจน
โดยทั่วไป ควรกำหนดค่าตัวเลือกต่อไปนี้ได้: ที่อยู่อีเมล, CSS ที่จะใช้, ตำแหน่งของทรัพยากรระบบที่อ้างอิงจากไฟล์ และชื่อไฟล์ขององค์ประกอบกราฟิก
สำหรับองค์ประกอบกราฟิก คุณอาจต้องการสร้างประเภทโปรไฟล์แยกต่างหากที่เรียกว่าสกิน ซึ่งมีการตั้งค่าสำหรับโปรไฟล์ รวมถึงตำแหน่งของไฟล์ CSS การวางตำแหน่งกราฟิก และประเภทเหล่านั้น จากนั้นให้ผู้ใช้เลือกจากไฟล์สกินหลายไฟล์ ทำให้การเปลี่ยนแปลงรูปลักษณ์และความรู้สึกของแอปพลิเคชันของคุณเป็นเรื่องง่าย นอกจากนี้ยังช่วยให้ผู้ใช้มีโอกาสสกินแอปพลิเคชันระหว่างการติดตั้งผลิตภัณฑ์ต่างๆ บทความนี้ไม่ครอบคลุมถึงไฟล์สกินเหล่านี้ แต่พื้นฐานที่คุณเรียนรู้ที่นี่จะทำให้การสนับสนุนไฟล์สกินง่ายขึ้นมาก
การกำหนด
ค่าเป็นส่วนสำคัญของแอปพลิเคชัน PHP และควรเป็นส่วนสำคัญของการออกแบบตั้งแต่เริ่มต้น ฉันหวังว่าบทความนี้จะให้ความช่วยเหลือในการใช้สถาปัตยกรรมการกำหนดค่าของคุณและให้คำแนะนำเกี่ยวกับตัวเลือกการกำหนดค่าที่คุณควรอนุญาต