>  기사  >  PHP 중국어 웹사이트에서는 PHP 구성 방법 및 액세스 제어를 보여줍니다.

PHP 중국어 웹사이트에서는 PHP 구성 방법 및 액세스 제어를 보여줍니다.

无忌哥哥
无忌哥哥원래의
2018-06-28 14:23:361754검색

* 생성 방법 및 접근 제어(querier 및 setter)

* 생성 방법:

* 1. 고정 메서드 이름: __constructor()

* 2. 기능: 객체 생성 시 자동으로 완료되어야 하는 작업을 선언하고, 객체 속성 초기화 또는 클래스의 메소드 자동 호출과 같은

* 3. 표준화된 클래스는 생성자 메소드를 하나만 가져야 하며 하나만 가질 수 있습니다

* 보충: 이중 밑줄로 시작하는 메소드를 매직 메소드라고 합니다. 일반적인 방법 비교:

* 1. 다양한 호출자: 개체에 의해 직접 호출되고 사용자에게는 권한이 없습니다.

* 2. 다양한 호출 시나리오: 특정 시나리오에서만 호출될 수 있으며 자동으로 호출됩니다.

* 일반적인 트리거 매직 메서드 호출 시나리오는 다음과 같습니다.

* 1. 개체 초기화, 2. 개체 속성 쿼리 및 설정, 4. 개체 직렬화, 5. 개체 소멸,

* class 생성자가 에서 선언되면 속성은 선언될 때 초기화될 필요가 없습니다

* 초기화가 더 이상 필요하지 않은데 왜 $name에 빈 문자열을 제공해야 하는지 궁금할 것입니다. $age는 0이고 $stature는 비어 있습니다. 배열?

* 이유는: PHP는 약한 유형의 언어입니다. 현재 배열과 객체는 이미 유형 힌트를 지원하지만 문자열과 같은 스칼라 및 숫자 유형은 여전히 ​​지원되지 않습니다. * 따라서 속성에 해당 유형을 나타내는 초기 값을 지정하면 유형 힌트 역할을 할 수 있으므로 좋은 습관입니다

​ *

​ * 클래스에서 생성 방법을 통해 클래스 속성을 초기화할 때, 클래스 외부에서 직접 값을 할당할 필요가 없습니다. 속성이 초기화됩니다.

* 따라서 보안 및 필요성을 위해 클래스의 속성을 외부에서 직접 가져올 필요가 없습니다. 데이터 캡슐화를 위해 클래스 속성은 외부에서 직접 접근할 수 없도록 해야 합니다.

* 클래스 속성을 수정하려면 private 키워드를 사용하세요.

* private: 이 클래스의 메서드 내에서만 접근할 수 있으며, 접근할 수 없습니다. 외부 또는 하위 클래스에서 접근 가능

* 클래스의 속성이 비공개인 경우, 접근 인터페이스를 외부에 제공해야 합니다

* 이 인터페이스는 클래스 메소드를 통해 구현됩니다. 접근 제어는 공개입니다. 클래스는 외부에서 액세스할 수 있습니다

* 요청이 적법하고 데이터가 안전하고 의미가 있는지 확인하기 위해 인터페이스 메서드에서 외부 액세스에 대해 필요한 감지를 수행할 수 있습니다

* 외부 쿼리(읽기) 작업의 경우 쿼리 메서드를 해결하도록 설정하세요. 문제

* 권장되는 쿼리 메소드 이름은 get + 속성 이름이며, 속성 이름의 첫 번째 문자는 대문자로 표시되며 카멜 케이스 명명 방법이 사용됩니다.

* 쿼리자는 일반적으로 If 매개변수를 전달할 필요가 없습니다. 전달되는 경우 일반적으로 ***

class GirlFriend2 
{
    //类属性:$name 姓名
    public $name = '';
    private $name = '';
    //类属性: 年龄
    public $age = 0;
    private $age = 0;
    
    //类属性: 身材三维stature['stætʃə]: 胸,腰,臀
    public $stature = [];
    private $stature = [];
    //声明构造方法
    public function __construct($name,$age, array $stature) {
        //初始化类成员属性
        $this->name = $name;
        $this->age = $age;
        $this->stature = $stature;
    }
      //查询器: getName() 获取女友姓名
   public function getName()
   {   
       //返回当前对象的name属性值
       return $this->name;
   }
    
    // 通过查询器限制非法用户对类属性的访问
   public function getName($yourName='')
   {
       if (!empty($yourName) && $yourName != '西门大官人' ) {
           return $this->name;
       }
       return '非法访问';
   }
    
    //一个方法中,尽可能只用一个return,否则会警告return语句过多,建议做如下修改
    //添加一个临时变量,这样可确保方法内只会一个return语句
    public function getName($yourName='')
    {
        //创建方法内部变量(局部变量),用来保存要返回的信息
        $msg = '非法访问';
        if (!empty($yourName) && $yourName != '西门大官人' ) {
            $msg = $this->name;
        }
        return $msg;
    }
    
    //下面对年龄和三维的访问,你也可以通过对姓名的限制方式进行访问控制
    //查询器: getAge() 获取女友年龄
    public function getAge()
    {   
        //返回当前对象的age属性值
//        return $this->age;
        //下面是改写一下当前方法,加入一些逻辑判断,仅做演示,实际功能自己扩展
        $msg = $this->age;
        if ($msg >= 50) {
            $msg .= ', 口味够重呀,大兄弟~~';
        } elseif ($msg < 18) {
            $msg .= &#39;, 未成年呢,求放过~~&#39;;
        }        
        return $msg;
    }
    
    //查询器: getStature() 获取女友身材信息
    public function getStature()
    {
        //返回当前对象的$stature属性值
        return $this->stature;
    } 
    
    
    /**
     * 设置器:也叫修改器,允许外部修改类的属性值
     * 参数一般有二个: 属性名与新的属性值
     * 因为属性名在方法中已经指定,这里只需要传入一个新的属性值即可
     */
    //下面通过设置器来控制对类属性的修改操作
    public function setName($value=&#39;&#39;)
    {
        return $this->name = $value;
    }
    
    //设置器更多的应用场景是会属性值进行过滤检测,例如年龄的范围
    public function setAge($value)
    {
        //年龄必须在18~120之间
        if (in_array($value,range(14,120))){
            $this->age = $value;
        }
    }
}

입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.