>  기사  >  백엔드 개발  >  PHP의 비공개

PHP의 비공개

WBOY
WBOY원래의
2024-08-29 13:08:07782검색

키워드는 특별한 의미를 부여받은 프로그램에서 예비어로 사용되는 단어입니다. 명령 또는 매개변수일 수 있습니다. 다른 모든 프로그래밍 언어와 마찬가지로 PHP에는 다른 목적의 변수 이름으로 사용할 수 없는 키워드라는 특수 단어 집합이 있습니다. 예약명이라고도 합니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

비공개 키워드는 이름에서 알 수 있듯이 해당 키워드가 정의된 클래스 내에서만 액세스할 수 있는 키워드입니다. 모든 키워드는 비공개 또는 보호로 지정되지 않는 한 기본적으로 공개 카테고리에 있습니다. 비공개 키워드는 전체 코드에서 키워드에 대한 가시성을 최소화하여 보안 목적에 도움이 됩니다. 또한 이 키워드를 호출하는 클래스가 하나만 있으면 굴절하기가 더 쉽습니다.

비공개 키워드 외에도 비공개 메소드도 있을 수 있습니다. 객체 지향 프로그래밍에서 메소드는 모든 클래스와 연관된 프로시저 세트입니다. 프라이빗 메소드의 경우 동일한 클래스나 해당 모듈에 속한 메소드 내에서만 호출이 허용됩니다.

선언할 수 있는 비공개 상수와 속성도 있습니다. 이러한 경우 가시성은 인스턴스가 아닌 클래스 간에만 제한됩니다. 두 개체의 유형이 동일한 경우 한 개체가 다른 개체의 비공개 메서드를 호출할 수 있습니다.

구문:

모든 변수, 속성 또는 메서드는 앞에 "private" 키워드를 붙여 비공개로 선언할 수 있습니다.

class MyClass()
{
private variable_name;
private Method_name();
private $priv = 'Private property';
}

사유재산의 예

아래 예를 통해 PHP의 사유 재산 작동을 이해해 보겠습니다.

코드:

<?php
/**
* Definition of PHPExample
*/
class PHPExample
{
public $public = 'Public property';
protected $protected = 'Protected property';
private $private = 'Private property';
function displayValue()
{
echo $this->public;
echo "\n";
echo $this->protected;
echo "\n";
echo $this->private;
echo "\n";
}
}
$val = new PHPExample();
echo $val->public; // Public will work without any error
echo "\n";
echo $val->protected; // Uncaught Error: Cannot access protected property PHPExample::$protected in /workspace/Main.php:21
echo $val->private; // Uncaught Error: Cannot access private property PHPExample::$private in /workspace/Main.php:22
$val->displayValue(); // Displays all 3 Public, Protected and Private properties
/**
* Definition of PHPExample2
*/
class PHPExample2 extends PHPExample
{
// It supports redeclaration of public and protected properties and not private
public $public = 'Public2 property';
protected $protected = 'Protected2 property';
function displayValue()
{
echo $this->public;
echo "\n";
echo $this->protected;
echo "\n";
echo $this->private; //Undefined property: PHPExample2::$private in /workspace/Main.php on line 39
}
}
$val2 = new PHPExample2();
echo $val2->public; // Public will work without error
echo "\n";
echo $val2->protected; // Fatal Error
echo $val2->private; // Undefined property: PHPExample2::$private in /workspace/Main.php on line 46
$val2->displayValue(); // Shows Public2, Protected2, Undefined
?>

출력 1:

PHP의 비공개

출력 2: 23행에 댓글을 단 후.

PHP의 비공개

출력 3: 24행에 댓글을 단 후.

PHP의 비공개

출력 4: 46, 47, 40행에 댓글을 단 후.

PHP의 비공개

위 코드 설명: 이 코드를 완전히 실행하면 25,26,45,52,53줄과 같은 몇 줄 번호에서 치명적인 오류가 발생할 수밖에 없습니다. 먼저 메인 클래스 PHPExample에서 세 가지 속성인 public, private 및 protected를 모두 선언하여 각각의 단어를 표시합니다. 인라인 25에서는 PHPExample 클래스의 3개 속성 모두에 액세스하려고 합니다. 비공개 및 보호된 예제는 해당 클래스 외부에서 액세스할 수 없으므로 표시된 대로 출력에 치명적인 오류가 발생하고 공개 속성만 표시됩니다.

코드의 후반부에서는 보호 속성과 공개 속성에 대한 표시 값을 다시 선언하는 또 다른 클래스 PHPExample2를 선언합니다. Private에서는 동일하게 허용되지 않으며 전반부와 동일한 작업을 수행하고 있습니다. 여기에 선언되지 않은 프라이빗 속성을 호출하려고 하므로 정의되지 않은 속성 오류가 발생합니다.

Private 메소드 및 키워드 예시

아래 예를 통해 PHP에서 개인 메소드와 키워드의 작동을 이해해 보겠습니다.

코드:

<?php
class NameExample {
// Declaring first name as private value
private $first_name;
// Declaring last name as private value
private $last_name;
public $public = 'Displaying from public method';
private $private ='Displaying from private method';
// private function for setting the value for first_name
private function fName($first_name) {
$this->$first_name = $first_name;
echo $this -> private;
}
// public function for setting the value for last_name
public function lName($last_name) {
$this->$last_name = $last_name;
echo $this -> public;
}
// public function to display full name value
public function dispName() {
echo "My name is: " . $this->$first_name . " " . $this->$last_name;
}
}
// Creating a new object named $arun of the class
$arun = new NameExample();
// trying to access private class variables
$arun->$first_name = "Arun"; // invalid
$arun->$last_name = "Sharma"; // invalid
// calling the public function to set $first_name and $last_name
$john->fName("John");
$arun->lName("Wick");
// $arun-> dispName();
?>

출력 1:

PHP의 비공개

출력 2: 32, 33, 36행을 주석 처리한 후.

PHP의 비공개

위 코드 설명: 위 예시에서 $first_name과 $last_name은 NameExample 클래스의 프라이빗 변수로 선언되었으므로 클래스 객체를 사용하여 직접 호출할 수 없습니다. 따라서 처음으로 코드를 실행하려고 하면 "정의되지 않은 변수: first_name in /workspace/NameExample.php on line 32"라는 오류가 발생하고 33행에서도 마찬가지입니다. 이 두 줄에 주석을 달고 코드를 다시 실행하면 "잡히지 않은 오류: /workspace/NameExample.php:36의 null에서 멤버 함수 name() 호출" 오류가 발생합니다.

이것은 fName 함수를 비공개로 선언했고 동일한 함수에 액세스하려고 하기 때문입니다. 36행도 주석 처리되고 공개 메소드이므로 메소드 이름에서 표시되면 코드가 원활하게 실행됩니다.

PHP에서 Private 사용의 장점

PHP에서 Private을 사용하면 다음과 같은 장점이 있습니다.

  1. 코더가 데이터 액세스를 더 효과적으로 제어할 수 있는 "getter" 및 "setter"를 사용하여 개인 변수에 계속 액세스할 수 있습니다.
  2. 비공개 inturn은 변수를 한 클래스에서 다른 클래스로 분리하여 내부적으로 클래스에 대한 변경 사항을 보호하는 캡슐화를 의미합니다.
  3. 개인 변수의 동작은 특정 클래스 내에서 제한되며 혼란을 방지합니다.
  4. 개인 변수는 어디서나 코드가 손상될 위험 없이 쉽게 다시 구현할 수 있습니다.

PHP의 비공개 규칙 및 규정

다음은 PHP의 비공개에 대해 준수해야 할 규칙 및 규정입니다.

  1. 모든 변수 멤버 또는 메소드의 경우 공개, 보호 또는 비공개에 속하는지 여부에 대한 범위를 항상 선언해야 합니다.
  2. 메서드 순서는 공개,> 보호됨 > 비공개
  3. 개인 변수는 선언된 메인 클래스에서 확장하여 선언된 하위 클래스에서 액세스할 수 없습니다. 단, 서브클래스에서 동일한 사유 속성을 다시 선언하면 접근이 가능하지만 그렇게 하지 않는 것이 좋습니다.
  4. 따라서 클래스에 선언된 비공개 메서드는 해당 클래스 내부에서만 호출될 수 있습니다.

결론

비공개는 클래스의 변수, 메소드 또는 속성에 대한 접근성을 제한하는 방법입니다. 선언된 클래스에서만 액세스할 수 있으며 해당 클래스에서 확장된 하위 클래스에서는 액세스할 수 없습니다. 상위 클래스의 모든 보호 속성은 하위 클래스에 의해 재정의되고 공개로 설정될 수 있지만 비공개로 설정될 수는 없습니다.

위 내용은 PHP의 비공개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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