PHP5에서 멀티태스킹을 실현하는 두 가지 방법의 실례 공유
PHP5에서 메소드 매개변수의 유형 프롬프트에 멀티태스킹이 적용되는 위치만 설명할 수 있습니다.하나의 클래스의 모든 하위 클래스 대상은 현재 유형을 유형 힌트로 하는 유형 요구를 충족시킬 수 있습니다.이 인터페이스를 실현하는 모든 종류는 인터페이스 유형을 유형으로 제시하는 방법의 매개 변수 요구를 충족시킬 수 있다.간단하게 말하면, 하나의 종류는 부류와 이미 실현된 인터페이스의 신분을 가지고 있다.
인터페이스 실현을 통해 다태적 실현
interface User{ // User
public function getName();
public function setName($_name);
}
class NormalUser implements User { // .
private $name;
public function getName(){
return $this->name;
}
public function setName($_name){
$this->name = $_name;
}
}
class UserAdmin{ // .
public static function ChangeUserName(User $_user,$_userName){
$_user->setName($_userName);
}
}
$normalUser = new NormalUser();
UserAdmin::ChangeUserName($normalUser,"Tom");// NormalUser .
echo $normalUser->getName();
?>
인터페이스와 조합을 사용하여 다중 계승 시뮬레이션
조합을 통해 다중 계승을 시뮬레이션하다.
PHP에서는 다중 계승을 지원하지 않습니다. 만약 우리가 여러 종류의 방법을 사용하여 코드를 다시 사용하는 데 어떤 방법이 있습니까?
바로 조합이다.한 클래스에서 다른 클래스를 속성으로 설정합니다.
아래의 예는 다중 계승을 모의하였다.
인터페이스 인스턴스
개념적인 예를 하나 쓰다.우리는 온라인 판매 시스템을 설계했는데 사용자 부분은 다음과 같다. 사용자를NormalUser,VipUser,InnerUser 세 종류로 나눈다.사용자의 할인에 따라 사용자가 구매한 제품의 가격을 계산할 것을 요구한다.향후 확장과 유지보수를 위한 공간을 요구합니다.
interface User
{
public function getName();
public function setName($_name);
public function getDiscount();
}
abstract class AbstractUser implements User
{
private $name = "";
protected $discount = 0;
protected $grade = "";
function __construct($_name) {
$this->setName($_name);
}
function getName() {
return $this->name;
}
function setName($_name) {
$this->name = $_name;
}
function getDiscount() {
return $this->discount;
}
function getGrade() {
return $this->grade;
}
}
class NormalUser extends AbstractUser
{
protected $discount = 1.0;
protected $grade = "Normal";
}
class VipUser extends AbstractUser
{
protected $discount = 0.8;
protected $grade = "VipUser";
}
class InnerUser extends AbstractUser
{
protected $discount = 0.7;
protected $grade = "InnerUser";
}
interface Product
{
function getProductName();
function getProductPrice();
}
interface Book extends Product
{
function getAuthor();
}
class BookOnline implements Book
{
private $productName;
protected $productPrice;
protected $Author;
function __construct($_bookName) {
$this->productName = $_bookName;
}
function getProductName() {
return $this->productName;
}
function getProductPrice() {
$this->productPrice = 100;
return $this->productPrice;
}
public function getAuthor() {
$this->Author = "chenfei";
return $this->Author;
}
}
class Productsettle
{
public static function finalPrice(User $_user, Product $_product, $number) {
$price = $_user->getDiscount() * $_product->getProductPrice() * $number;
return $price;
}
}
$number = 10;
$book = new BookOnline(" ");
$user = new NormalUser("tom");
$price = Productsettle::finalPrice($user, $book, $number);
$str = " , " . $user->getName() . "
";
$str .= " " . $user->getGrade() . "
";
$str .= " " . $user->getDiscount() . "
";
$str .= " " . $price;
echo $str;
?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.