نقض Encapsulation

پرسیده شده
فعالیت 1362 روز پیش
دیده شده 590 بار
0

سلام اقای آوند وقت بخیر. یه سوال برام پیش اومده در مورد نقض انکپسولیشن

class ٍEs{

    

    private $name;

 

    public function __construct($name)

    {

        $this->name = $name;

    }

    public function getName(){

        return $this->name;

    }

}

$name=new Es("mostafa");

echo $name->getName()

با کانستراکتر هم میشه بررسی کرد که درخواست دریافتی از سمت مدیر هست یا نه؟ ینی اگه اینجوری نوشتش که بدون ستر یه متغیر پرایوت رو تغییر داد این داستان انکپسولیشن بازم نقض میشه دیگه درسته؟

فایل پیوست

مصطفی کیانفرد
مصطفی کیانفرد

2 مرداد 99

0
حذف شده

سلام 

اقا مصطفی ی زحمت بکش کدی که میزاری لطفا داخل بلاک کد قرار بده برای خوانایی.

 

<?php
class Es{
    private $name; 
    public function __construct($name)

    {
        $this->name = $name;
    }
    public function getName(){
       return $this->name;
    }
}

$name=new Es("mostafa");

echo $name->getName();

در مورد اینکه با کانستراکتور نقض میشه شما اومدی پراپرتی پرایوتت رو از طرق کانستراکتور مقدار دهی کردی تا اینجا که نقضی من نمیبینم ( البته از نظر من !‌ ممکنه هم اشتباه کرده باشم‌!)

شما نباید بصورت مستقیم به اون پراپرتی دسترسی داشته باشی خارج از کلاس یعنی شما شی بسازی از کلاس و سپس مستقیما از طرریق اون شی به پراپرتی دسترسی داشته باشی ( تغیر بدی یا اینکه متغیر رو صدا بزنی‌) 

اما خود کانستراکتور ( از نظر من ) مثل یک متود ستر داره الان استفاده میشه که اشکالی فکر نمیکنم داشته باشه.

 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

2 مرداد 99

0
حذف شده

ممنونم از راهنماییتون آخه یکم برام گنگ بود تقریبا الان دیگه جا افتاد!

این بلاک کد رو هم یاد گرفتم ولی واسه افراد بعدی اگ مثل من بی دقت باشن یه همچین چیزی قرار بدین بهتره

<code>

<>

درج کد

ممنون

فایل پیوست

مصطفی کیانفرد

توسط

مصطفی کیانفرد

2 مرداد 99

حذف شده
خواهش میکنم
میثم نصرتی

4 مرداد 99

0
حذف شده

از اونجا که متد کانستراکتور فقط یکبار و اونم در زمان ساخت نمونه از کلاس صدا زده میشه و چیزی نیست که مدام در طول برنامه صداش بزنیم مشکلی نداره مقدار دهی اولیه کردن پراپرتی پرایوت توسط کانستراکتور.

 

هرچند که هدف از پرایوت کردن پراپرتی این بوده که فقط داخل کلاس بشه بهش دسترسی داشت بنابرین بنظرم میرسه اگر اینکار رو نکنیم از نظر استاندارد برنامه نویسی بهتر باشه

فایل پیوست