PHP-Oбъект хандалтат программчилал

Огноо: 2010-08-20 08:48:12 Зохиогч: ulzii

PHP-ийн хувьд том ахилт болж чадсан 5 болон 5.3 гэсэн хувилбарууд гарч ирээд нэлээд хугацаа өнгөрчээ. Энэ хооронд объект хандалтат программчилал(ОХП) ерөнхийдөө байр сууриа PHP-ийн ертөнцөд нэгэнт олоод хаа сайгүй л хэрэглэгдэх болсон. Гэхдээ л одоог хүртэл хуучин хэлбэрээр бичдсээр байдаг программчид цөөнгүй байдаг. Тэгвэл одоо үүнийг өөрийн болгож авах цаг нэгэнт болсон байна.

 

PHP5 гарч ирэхээс өмнө жинхэнэ утгаар нь объект хандалтат программчилах боломжгүй байснаас ёстой л шүүмжлэгчидийн бай болдог байсэн гэж хэлж болно. Жинхэнэ утгаараа биш гэдэг нь хамгийн элементар зүйлүүд буюу ерөөсөө класс үүсгээд үүндээ метод болон хувьсагч ашиглаж болохоос өөр зүйл ашиглаж чаддаггүй байсных. За ингээд PHP-д объект хандалтат програмчилалтай хамт орж ирсэн стандартуудаас тайлбарлъя.

 

Хувьсагч болон методын гадны хандалтыг зарлах.

 

Хуучин зарлалт нэг иймэрхүү харагдах бөгөөд энд гаднын ашиглалтаас хамгаалах ямар ч зохицуулалт байхгүй нь тодорхой харагдаж байна.

 

class Person
{
	var private $age;
	var protected $name;
	var public $gender;
}

$person->gender = 'man';
$person->age = 25;
$person->name = 'Boroldoi';

 

Классын хувсагч болон функцуудыг зарлахдаа доорхи түлхүүр үгнүүдийн аль нэгийг ашигладаг.

Public - хувсагчид ямар ч гаднаас хэдийд ч хандаж ажиллах боломжтой. Хэрэв классын хувьсагч болон функцыг эдгээр түлхүүр үггүй зарласан тохиолдолд автоматаар энэ утгыг авдаг.

Private - гадны хандалтаас хамгаалагдсан. Зөвхөн тухайн классын функцаар дамжуулж хандана.

Protected - гадны хандалтаас хамгаалагдсан. Гэхдээ уг классаас уламжилж авсан классаас шууд хандаж ажиллаж болно.

Эдгээр нь нууцлал хамгаалалт сайтай программ бичихэд чухал үүрэгтэй байдаг.

 

class Person
{
	private $age;
	protected $name;
	public $gender;
}

$person = new Person();

$person->gender = 'man';
$person->setAge(25);

 

Энд $age шууд хандалт байхгүй бөгөөд зөвхөн ямар нэг public функцын тусламжтайгаар л өөрчилөх боломжтой. Харин $gender өөрөө public гэж зарлагдсан учираас шууд гаднаас утга олгож болж байна.

 

Хийсвэр класс

 

Хийсвэр буюу abstract гэж түлхүүр үгний тусламжтай зарлагдсан классууд программчиллын явцад загвар классын үүргийг гүйцэтгэдэг. Эдгээр нь өөрөөс нь уламжилж авсан классуудад хэрэглэгдэх бөгөөд бүтэц нь өөрчлөгддөггүй учраас программыг бөх бат байлгах, дахин ашиглалтыг боломжтой болгож өгдөг.

 

 

abstract class Person {}

 

 

Интерфейс

 

Интерфейс нь PHP дээр прогрммын бүрэн бүтэн байдалд голлох үүргийг гүйцэтгэдэг. Энэ нь эргээд найдвартай ажиллагааг хангах суурь болдог. Уламжилж авсан класс нь эцэг интерфэйсийнхээ бүх методыг гүйцээх зарлах хэрэгтэй бөгөөд ямар нэг метод дутаж байгаа тохиолдолд алдаа өгдөг. Бүх методыг зарлаж өгсөн ч гэсэн доторх үйлдлүүд нь мэдээж хэрэг өөр өөр байх боломжтой. Жишээ болгоод авахад өгөгдлийн сантай харьцдаг интерфэйс байж болно. Энэ интэрфэйсийг цааш нь өөр өөр өгөгдлийн сангийн хувьд тус бүрд нь тохируулаад программчилж өгөх бөгөөд бүх хийж байгаа үйлдэл буюу методууд нь адилхан байх ёстой. Үүний тусламжтайгаар уг программ өгөгдлийн сан хамааралгүйгээр программчилагдах боложтой болно.

 

 

interface Person{}

 


Алдаа хяналт

 

Энэ нь try catch блок бөгөөд үүний тусламжтайгаар программд гарах алдааг удирдах нэгдсэн системтэй болсон. Тэгвэл энэ блок дотор ажиллаж байгаа кодын алдааг барьж авахын тулд алдаа гарч болох газар throw түлхүүр үгийн тусламжтайгаа шинэ алдааны объектийг үүсгэж өгдөг. Ямар нэг алдаа гарсан тохиолдолд catch дотроо уг алдааг шалгаж үзээд гарсан алдаанаас хамаарсан үйлдлүүдийг хийж болно. Жишээ нь уг алдаанаас болоод дутуу хийгдсэн зүйлүүдийг буцаах гэх мэт.

 

class Calculator
{
	public function __construct() {;}
	
	public function divideNumber($num1, $num2)
	{
	    if ($num2 == 0) {
	        throw new Exception('Хувааж байгаа тоо 0 байж болохгүй');
	    }
		
		return $num1 / $num2;
	}
}

try {
	$calculator = new Calculator();
	$calculator->divideNumber(24, 0);
} catch (Exception $e) {
	echo 'Алдаа гарлаа: ' . $e->getMessage();
}


Энэ тохиолдолд throw түлхүүр үгийг тусламжтайгаар үүсгэсэн алдаа гарна.

 

Дараагийн бичлэгээрээ өөр шинээр нэмэгдсэн обьект хандалттай холбоотой хэрэгсэлүүдийн талаар үргэлжлүүлэн бичье.

 

Сэтгэгдэл:

baku 2010-10-06 10:37:06

ёстой гоё бичлэг байна лайтай айн мэдэлгээ хуваалцаж байгаад баярлалаа

Шинэ сэтгэгдэл бичих


Ангилал