ホームページ >バックエンド開発 >PHPチュートリアル >月曜日に作業するかどうか - PHP+MySQLi
こんにちは
私はもともと仕事に意欲的でしたが、予期せぬことが起こり、朝は曇っていて起きられず、昼には服をいじるために寮に戻りました。 (女性労働者なので私は偉くない)、このような混乱した状態でどうやって科学研究を行うことができますか?
1. PHP OOP プログラミング
4.7 ポリモーフィズム
-- 定義
インターフェースにはさまざまなメソッド実装があるため、この機能はポリモーフィズムと呼ばれます
-- Chestnut
関数食べる( $obj){
if($objinstanceof ICanEat){
$obj->eat("FOOD") // 人間か動物かを知る必要はありません、ただ食べてください
}else {
echo "Can't Eat!n";
}
}
$man = new Human();
$monkey = new Animal();
// 同じコード、受信インターフェイスの異なる実装授業となると違います。だからこそポリモーフィックになるのです。
eat($man);
eat($monkey);
--概要
/**
* ポリモーフィズム
* 1. オブジェクトがインターフェイス (instanceof) を実装している限り、オブジェクトのインターフェイス メソッドを直接呼び出すことができます
*/
4.8 抽象クラス
--問題
接続インターフェースクラスには同じ特定のメソッドがありますが、それらをクラスに実装せずにインターフェイスに実装できるようにすることはできますか?
例えば、人間と動物は食べるものは違いますが、呼吸は同じです。
--Chestnut
abstract class ACanEat{ //キーワードの変更
abstract public function Eat($food);//クラスが独自に実装する必要がある場合は、その前にabstractキーワードを追加します
public function Breath(){
echo "Breath use the air.
";
}
}
class Human extends ACanEat{ //実装はインターフェイスの実装に使用され、extends はここで使用します
public function Eat($food) {
echo "".$food."
";
}
}
class Animal extends ACanEat{ //実装にはimplementsを使用しますインターフェイス。ここでは extends
public function Eat( $food){
echo "".$food." を食べる動物。"
";
}
}
$xiaoming=new Human();
を使用します。 $xiaohei=新しい動物();
$xiaoming ->息();$xiaoming->eat("食べ物");
$xiaohei->息();$xiaohei->eat("クソ");
--概要
/**
* 抽象クラス
* 1. 抽象クラスでは、クラス内の一部のメソッドを一時的に実装できないようにします。これらのメソッドを抽象メソッドと呼びます
* 2. クラスに抽象メソッドが存在すると、このクラスは抽象クラスでなければなりません
* 3. 抽象クラスは、インターフェイスと同様に、オブジェクトに直接インスタンス化できません
*/
5. マジック メソッド
5.1 はじめに
すべてのマジック メソッドの前には 2 つのアンダースコアが付いていることに注意してください__
PHP の OOP に特化したもの。
コンストラクターやデストラクターなど。
5.2 __tostring() と __invoke() -- 定義
__tostring()、オブジェクトが String として使用される場合、このメソッドは自動的に呼び出されます; echo $obj;
__invoke(),このメソッドは、オブジェクトがメソッド (関数) として呼び出されるときに自動的に呼び出されます。 ) マジックメソッド*/
class MagicTest{
public function __toString(){return "これはクラス magictest です。";} public function __invoke($x){
echo " }
}
$obj=new MagicTest();
echo $obj;
使い方はコンストラクター デストラクターと似ています。これはより自動化されています (宣言されていなくても自動的に呼び出されます) が、同時にエラーが発生しやすいので注意してください。
5.3 __call() と __callStatic() またはオーバーロード
-- 定義
オブジェクトが存在しないメソッド名にアクセスすると、__call() が自動的に呼び出されます。存在しない静的メソッド名を指定すると、 __callStatic() が自動的に呼び出されます。
これら 2 つのメソッドはオーバーロード (オーバーライドとは異なります) とも呼ばれ、同じメソッド名が呼び出されます。さまざまなメソッド
--Lizi
/* * tostring() マジック メソッド * invoke() マジック メソッド */class MagicTest{
public function __toString(){
return "これはクラス magictest です。";
}
public function __invoke($x){
echo "
".$x."< br/>";
}
public function __call($name,$arguments){ //__callの形式は固定されており、最初はメソッド名、2番目はメソッド内のパラメータです
echo "呼び出し".$name." パラメータ: ".implode(",", $arguments)."
";
}
public static function __callstatic($name,$arguments){
echo "パラメータを指定した「.$name.」の静的呼び出し: 「.implode(",", $arguments)."
";
}
}
$obj=new MagicTest();
echo $obj;
$obj(5);
$obj->runTest("para1","para2");
$obj::runTest("para3","para4");
メソッドは次のことを行う必要があることに注意してください。ここで定義します。形式はその時点で固定されます。
5.4 __get()__set()__isset()__unset
--定義
これらのメソッドは、属性のオーバーロード マジック メソッドとも呼ばれます。
__set()、 アクセスできない属性 (1 つは属性が未定義で、もう 1 つはプライベートなどのアクセス権がない場合) に値を割り当てるときに呼び出されます。
__get() の値を読み取るときに呼び出されます。アクセスできない属性__isset() が呼び出され、アクセスできないプロパティに対して isset() または empty() が呼び出されたときに呼び出されます。 。 。 。 。 。 。 。 。 unset()。 。 。 。 。 。 。 。 。 。
-- Chestnut
/*
* tostring() マジック メソッド * invoke() マジック メソッド
*/
class MagicTest{
public function __toString(){
}
public function __invoke($x){
echo "
".$x."
";
}
public function __call($name, $arguments){ //__call の形式は固定されており、最初はメソッド名、2 番目はメソッド内のパラメーターです
echo "Calling ".$name." withparameters: ".implode(",", $ argument)."
";
}
public static function __callstatic($name,$arguments){
echo "パラメータを指定して ".$name." を呼び出す静的関数: ".implode(",", $ argument)."
";
}
public function __get($name){ //get には名前が必要です
return "プロパティ ".$name." を取得しています
" ; }
public function __set($name,$value){ //set には名前と値が必要です
echo "プロパティ ".$name." を値 ".$value." に設定します。
}
public function __isset($name){ //属性が定義されているかどうかを判定します
echo "__isset invoked
"; return true; }
public function __unset( $name) { //Cancel
echo "プロテリー ".$name." の設定を解除します
"; return true; }
}
$obj=new MagicTest();
echo $obj;
$obj (5);
$obj::runTest("para3","para4");
echo $obj->クラス名;
$ obj->classname="shit";
echo isset($obj->classname)."
";
unset($obj->classname);echo "< br/> ;";
結果は
5
パラメータpara1、を使用してrunTestを呼び出します。 para2パラメータを指定して runTest を静的に呼び出します: para3,para4
プロパティ クラス名を取得する
プロパティ クラス名を値 shit.に設定する
__isset invoked
1
プロテリ クラス名の設定を解除する
__isset invoked
実際には、 isset と空の呼び出し __isset 逆の操作へ。
次に、 __set($name, $value) と __unset($name) は反対の操作のペアですが、必要な要素が異なります
__isset($name),__get($name)必要なのは名前だけです (各魔法のメソッドの機能を覚えておいてください。一度理解すると、覚えやすくなります)。
5.5 __clone()
--定義
はクローン、またはcloneです
--栗まず、cloneキーワードの使用法を示します。
/* * クローンマジックメソッド
*/
class nbaPlayer{
public $name;
}
$james=new nbaPlayer();
$james->name='James' ;
echo $james->name."
";
$kobe=clone $james;
$kobe->name='Kobe';
echo $kobe->name;
クローン作成後は別のオブジェクトとなり、そのオブジェクトに対する操作は影響を与えません。オリジナルオブジェクト。
プラス __clone()
/*
* クローンマジックメソッド
*/
class nbaPlayer{
public $name;
public function __clone(){
$this -> ;name="クソ";
}
}
$james=new nbaPlayer();
$james->name='ジェームズ';
echo $james->name."
";
$kobe=clone $james;
echo $kobe->name."
";
$kobe->name='Kobe';
echo $kobe- > name."
";
一般的に言えば、クローン後の初期化、またはコピー時に公開したくない特定の情報を隠すのに役立ちます。
私は仕事でこれをよく使います。オブジェクトに対して操作が頻繁に行われ、元のデータ
に影響を与えたくないため、単にクローン/コピーするだけです。----------------------------------------
2.
1. インストールとダウンロード
1.1 利点と紹介
アップデートされ改善されているため、PHP5 以降 (または PDO) が推奨されます。
--利点
OOP およびプロセス指向の使用に基づいています。プリペアドステートメントをサポートします。
トランザクションをサポートします。
--その他
の方が速いです。セキュリティの向上
1.2 インストールと設定
--インストール
php を設定し、php_mysqli.dll を開きます
extension_dir='ext directory location' を設定します
サーバーを再起動します。
(WAMP を使用しています。ボックスにチェックを入れるだけです)
--検証/*
* mysqli がオンになっているかどうかを確認します
*/
//phpinfo();
var_dump(extension_loaded('mysqli'));
var_dump(extension_loaded('curl'));
echo '
---
眠いから帰って洗濯して寝る。 。 。