За Болор АУС-ээ анх PHP 4.1- дээр хөгжүүлж эхэлжээ. Гэтэл өнөөдөр маш олон сервер дээр 5.x явж байдаг. Код маань хэдий объект хандалтат боловч нөгөө л 4.x-тэйгээ зохицож ажиллаж байхын тулд хуучин загвараа барьсаар л байдаг. Гэтэл сүүлийн үед шууд PHP 5.3 болон түүнээс хойшхи хувилбарт зориулаад шинэчлэлт хийчихмээр санагдах боловч бас маш олон/ихэнхи сервер дээр PHP 4.x ажилласаар байдаг. Энэ талаар та бүхэнд хийсэн судалгаа байна уу? Та аль хувилбарыг нь хэрэглэж байна?
Одоо байгаа нэгэн модулийнхаа хэр объект хандалт хийж байгааг үзүүлбэл:

require_once BASE_DIR . ‘module/basemodule/ListModule.php’;
class Index extends ListModule {
var $modHandler;
var $someclassglob;
var $staticvar;
function Index($db) {
parent :: ListModule($db, ‘category’);
$this->catHandler = new CategoryModHandler($db, $this->user->getLogin());
$this->start();
}
…..
…..
function xxxxx() {
…..
}
…..
}
$db = new MySQL($host, $dbUser, $dbPass, $dbName);
// Instantiate the Auth class
$auth = new Auth($db, SECRET);
// For logging out
if (isset ($_GET[‘action’]) && $_GET[‘action’] == ‘logout’) {
$auth->logout();
}
$index = new Index($db);
…..

Энэ нь 4-с эхлээд өнөөг хүртэл бүх хувилбар дээр ажиллана. Хөөрхий 4.x-н хийж байгаа л боломж нь энэ. Уг нь жинхэнэ объект хандалтат бөгөөд арай найдвартай болгоё гэвэл:

require_once BASE_DIR . ‘module/basemodule/ListModule.php’;
class Index extends ListModule {
private $modHandler;
protected $someclassglob;
private static $somestaticvar;
public function __construct($db) {
parent :: __construct($db, ‘category’);
$this->catHandler = new CategoryModHandler($db, $this->user->getLogin());
$this->start();
}
…..
…..
private function xxxxx() {
…..
}
…..
}
try {
$db = new MySQL($host, $dbUser, $dbPass, $dbName);
// Instantiate the Auth class
$auth = new Auth($db, SECRET);
// For logging out
if (isset ($_GET[‘action’]) && $_GET[‘action’] == ‘logout’) {
$auth->logout();
}
$index = new Index($db);
} catch ( exception $e ) {
echo ‘caught exception: ‘ . $e->getMessage () . ‘, error trace: ‘ . $e->getTraceAsString ();
}

гэх маягаар хиймээр байдаг. Нэг талаас PHP5 руу шилжиж protected, private, final, abstract, interface, static members, __construct, __distruct, class constant, try catch ашигламаар байдаг. Нөгөө талаас PHP4 кодууд маань асуудалгүй ажиллахын дээр ихэнх хост дээр байсаар байдаг. Яая даа байз. Хэдийгээр PHP4 маань объект хандалтыг муу дэмжсэн ч PHP5 шиг объект хандалт хийх гээд Объект хандалтат аргачлалыг элэг бөөрөөр нь задлаад, нийлүүлж кодчилж суусаар объектын бүтцийг маш сайн сургадаг юм шиг санагдсан шүү. Ялангуяа маш оновчтой арга замыг олох гээд яаж reuse, singleton зэргийг хийх үү гээд л мөн ч их бодсон санагдана. Болор АУС-н MySQL класс л лав zend/php-н mysqli -с дутахааргүй хүчин чадал болон оновчтой болсон юмдаг.


6 Comments

ulzii · 2011/01/22 at 10:05

Би бас ажил дээр тийм зовлонтой. Манай компани нэг арваад жилийн өмнөөс хөгжүүлэгдэж байгаа өөрийн гэсэн АУС тэй. Тэгээд хуучин үйлчлүүлэгчид болон янз бүрийн серверээс болоод одоо хүртэл PHP4-ийг дэмжсэн хэвээрээ л байдаг. Програм хөгжүүлэгчийн хувьд бол тийм ч амар асуудал биш л дээ. Мэдээж PHP5 дээр байх сайн зүйлийг ашиглаж шинэ сэргэг илүү өндөр төвшинд код бичмээр байдаг. Тэгтэл хуучин зүйлүүддээ татагдаад өөрийнхөө эсрэг код бичих хэрэгтэй болдог. Дунд нь програмчид л зовдог болохоос үйлчлүүлэгч, бизнэс менежер хоёрт бол програм ажиллаж л байвал падлийгүй л дээ. 😉 Одоо удахгүй PHP6 гарч ирнэ. Тийм болохоор ирээдүйгээ бодоод өөрийн гэсэн иймэрхүү PHP4 дээр бичигдсэн хуучин системтэй бол PHP5.3 болон түүнээс дээших хувилбарт шилжүүлэх ажлыг эхлүүлсэн нь баталгаатай. Хамгийн багадаа гэхэд л PHP5.3 дээр алдаагүй, хуучирсан функцын(deprecated function) алдааны мэдээлэлгүй ажилладаг болгох хэрэгтэй. Шинэ төслүүдийн хувьд бол байнга PHP5.3-ийг ашиглаж байдаг.

Болор АУС-ын хувьд хаалттай кодтой болохоор яг ямарыг нь сайн мэдэхгүй юм. Гэхдээ бас нилээд хэдэн жил болчихож байгаа байх. PHP3 руу шилжүүлэхдээ нэг мөр кодоо бүрэн шинэчлэхээс гадна шинэ боломж нөхцөлүүдийг ашиглаад логик структуртаа ч өөрчилөлт хийж болно. Тэгээд нэг цоо шинэ хувилбар гаргаж ирвэл илүү ирээдүйтэй боловуу.

a · 2011/01/24 at 16:15

Болор ч гэх шиг. Хог л хийгээ биз. Юун хөөрцын

badaa · 2011/01/24 at 22:55

Иймэрхүү хогийн шарилж шиг а мэтийн юмнууд хаа ч ургасан байдаг хойно гайхаад байх юм алга. Сүүлийн үед эх нутгийн маань ихэнх хөрс орвонгоороо эргэж өмхий шарилжид идэгдсэн байсан. Одоо ихэнх блог, сонин сайтын сэтгэгдлүүд иймэрхүү өмхий шарилжуудад мөн ч их дарагдах болж дээ. Үгүй юу?

ulzii · 2011/01/26 at 19:57

өө би дээр PHP5.3 гэхийг андуураад PHP3 гээд биччихэж. Залруулаад уншчихна биз.

dundaa · 2011/01/31 at 19:02

Зарим хүмүүс ( a ) болимоор юмаа. Өөрөө юу ч хийсэн юмгүй байж хүний оюун ухаанаа шингээж байж хийсэн бүтээлийг л ХОГ энэ тэр гээд.

tsoogoo · 2012/03/05 at 03:50

harin bich gesen buren hemjeenii mvc bichij uzmeer baihiin ghdee

protected, private, final, abstract, interface, static members, __construct, __distruct, class constant

geh metiin yg tsomiig ni oilgohguil baigaan ooroo nuhaj oir zuuriin code sursan bolohloor edgeeriin talaar todorhoi tailbartai jishee tavij oguul ih bayarlah bolno nadaas oor medehgui humuusdch ih tus boloh baihaa

Leave a Reply

Your email address will not be published. Required fields are marked *