php はコードの重複の問題を解決するためにクラスの継承を使用します
この記事では主に、コードの重複の問題を解決するために php でのクラスの継承の使用方法を紹介し、例とともに継承の原理と使用テクニックを分析します。困っている友達は参考にしてください。
継承とは、単にクラスに対して 1 つ以上のサブクラスを作成することを意味します。サブクラスを作成するには、クラス宣言で extends キーワードを使用する必要があります。最初に新しいクラス名が来て、その後に親クラス名が来ます。
次の例では、BookProduct と CDproduct という 2 つの新しいクラスを作成します。どちらも ShopProduct クラスを継承しています。
header('Content-type:text/html;charset=utf-8');
// この記事からクラス名の頭文字を大文字にし、書き方を統一しました
class ShopProduct{ // クラスを宣言します
public $numPages; // プロパティを宣言します
パブリック $playLenth;
公開 $title; パブリック $プロデューサーメイン名;
パブリック $プロデューサー名;
公開価格;
function __construct($title,$firstName,$mainName,$price,$numPages=0,$playLenth=0){
$this -> title = $title; // 渡された値を title 属性に代入します。 $this -> プロデューサー名= $名; $this -> プロデューサーメイン名 = $メイン名; $this -> 価格 = $価格
$this -> numPages= $numPages; $this ->playLenth= $playLenth; }
function getProducer(){ //宣言メソッド
return "{$this -> プロデューサー名 }"."{$this -> プロデューサーメイン名}";
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base を返します;
}
}
クラス CdProduct は ShopProduct を拡張します {
関数 getPlayLength(){
$this を返す -> playLength;
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base .= ":再生時間 - {$this->playLength} )";
$base を返します;
}
}
クラス BookProduct は ShopProduct を拡張します {
関数 getNumberOfPages(){
$this -> numPages を返します;
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= ":ページ続き - {$this->numPages} )";
$base を返します;
}
}
?>
サブクラスはコンストラクターを定義しないため、BookProduct クラスと CDproduct クラスがインスタンス化されるときに、親クラス ShopProduct のコンストラクターが自動的に呼び出されます。
サブクラスは、デフォルトで親クラスのすべてのパブリックおよびプロテクトされたメソッドとプロパティを継承します (ただし、プライベート メソッドとプロパティは継承しません。これら 3 つのキーワードの機能については後で説明します)。つまり、getProducer() が ShopProduct クラスで定義されている場合でも、Cdproduct クラスからインスタンス化されたオブジェクトで getProducer() メソッドを呼び出すことができます。
コードは次のとおりです:
$product2 = new CdProduct("PHP オブジェクト指向","Guo","ボウルとパン",7,null,"7 時間");
print "良い生活: {$product2 -> getProducer()}
";
// 結果は次のようになります: 良い生活: Guo のボウルと鍋
どちらのサブクラスも親クラスの共通部分を継承しますが、BookProduct クラスと Cdproduct クラスの両方が getsummaryLine() メソッドをオーバーライドし、独自の一意の実装を提供し、サブクラスが親クラスの関数を拡張および変更できることを示していることに注意してください。
しかし、親クラスでのこのメソッドの実装は少し冗長に思えます。その理由は、両方のサブクラスがこのメソッドをオーバーライドしますが、他のサブクラスがその基本機能を使用する可能性があるためです。このメソッドの存在により、クライアント コードの保証が提供されます。すべての ShopProduct オブジェクトには getsummaryLine() メソッドがあり、BookProduct と CDproduct の両方は、それぞれの getsummaryLine() メソッドを使用して $title プロパティにアクセスします。
おそらく最初は、継承は理解しにくい概念であると思います。まず、他のクラスを継承するクラスを定義することで、クラスがそのクラスの自由な機能と親クラスの機能を確実に持つことがわかります。次に、サブクラスの「検索」関数があります。$product2 -> getProducer() を呼び出すと、getProducer() メソッドが CdProduct クラスに見つからないため、ShopProduct クラスにこのメソッドがあるかどうかを確認します。そうでない場合は、それを呼び出します。そうでない場合は、エラーが報告されます。プロパティへのアクセスについても同様です。
ShopProduct のコンストラクターを見ると、基本クラス (親クラス) のサブクラスによって処理されるデータをまだ管理していることがわかります。BookProduct は $numPages パラメーターとプロパティを処理し、Cdproduct は $playLength パラメーターを処理する必要があります。プロパティ。これを実現するには、サブクラス内で個別にコンストラクターを定義する必要があります。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
