ความคืบหน้า PHP Hoffman Framework (2)

หลังจาก ความคืบหน้า PHP Hoffman Framework มีข้อเสนอแนะมาเกี่ยวกับ routing ที่เป็น xml กับ config ที่เป็น ini ทั้ง ทาง im และ comment (แต่ใน comment มีแค่ 4 คน)

จาก comment ของคุณ kaze เรื่อง config แบบ ini เมื่อเอามานั่งไล่ดู แล้วเห็นตรงกันกับคุณ kaze ตอนนี้เลยทำการปรับเปลี่ยนไปใช้ array และ convert ตัว array เป็น object แทน ซะ แต่ยังคงความสามารถ inherit ตัว config ไว้เพื่อความสะดวกในการขึ้น production app ได้ ตอนนี้เลยปรับเปลี่ยนจาก ini เป็น Array ใน php แทน

ตอนนี้เลยใช้เป็นแบบนี้ครับ

$Config['Production']['WebHost'] = 'http://localhost';
$Config['Production']['UseCleanUrl'] = true;
$Config['Production']['UseRoutesCache'] = false;
$Config['Production']['BaseUrl'] =  '/PHM2';
$Config['Production']['RenderViewDebugging'] = false;
$Config['Production']['RenderViewCompileCheck'] = false;
$Config['Production']['RenderViewCache'] = false;
$Config['Production']['ArgSeparator'] = ';';

$Config['Production']['Database']['Default'] = 'mysqli://root:1234@localhost:3007/production_album';
$Config['Production']['Database']['ReadServer'] = 'mysqli://root:1234@localhost:3008/production_album';
$Config['Development']['Database']['Default'] = 'mysqli://root:1234@localhost:3008/development_album';
$Config['Test']['Database']['Default'] = 'mysqli://root:1234@localhost/test_album';

โดน Dimension แรกเป็นตัวกำหนด config ว่าจะเป็น environment ไหน ส่วนตัวต่อมาก็เป็น dimension ของ ตัวที่เอาไปตั้งค่าจริง ๆ ส่วน ของ database จะเรื่องมากกว่าหน่อยตรงที่มีหลาย ๆ profile เผื่อในกรณีที่มีการใช้งานข้าม database หรือข้าม server กัน

อันนี้คือการเปลี่ยนส่วนของ config อีกรอบนึง แต่ดู ๆ แล้วน่าจะดีกว่าเดิมในแง่ของการไม่ต้อง parse ตัว ini ออกมา

ส่วน routing กำลังคิด ๆ อยู่ว่าจะเอาไงดี อาจจะปรับมาใช้แบบเดียวกันเลย เพื่อลดเวลาการ parse ข้อมูลลอง xml ด้วย

ส่วนเวลาเรียกใช้ก็ อ้างอิงแบบ Object ซะ โดยตัวอย่างด้านล่างก็ต้องเอาข้อมูล user ของ Database ที่เป็น Default ออกมา

echo $applicationConfigurations->Database->Default->user;

[Update 08/02/2007 00:21]

ตอนนี้ลดรูปลงมาให้ดูง่ายขึ้น (หรือเปล่า) มาเป็นแบบนี้ครับ

$Config['Production'] = array(
    'WebHost'=>'http://localhost',
    'UseCleanUrl'=>true,
    'UseRoutesCache'=>false,
    'BaseUrl'=>'/PHM2',
    'RenderViewDebugging'=>false,
    'RenderViewCompileCheck'=>false,
    'RenderViewCache'=>false,
    'ArgSeparator'=>';',
    'Database'=> array(
        'Default'=>'mysqli://root:1234@localhost:3007/production_album',
        'ReadServer'=>'mysqli://root:1234@localhost:3008/production_album'
    )
);

$Config['Development'] = array(
    'Database'=> array(
        'Default'=>'mysqli://root:1234@localhost:3007/development_album'
    )
);

$Config['Test'] = array(
    'Database'=> array(
        'Default'=>'mysqli://root:1234@localhost:3007/test_album'
    )
);