ホームページ  >  記事  >  バックエンド開発  >  PHPで必ず覚えておきたい知識ポイント(豆知識)

PHPで必ず覚えておきたい知識ポイント(豆知識)

PHP中文网
PHP中文网オリジナル
2017-10-30 10:26:371714ブラウズ

この記事は主に PHP の役立つ知識をまとめ、参考と学習のために共有します。詳細な紹介を見てみましょう:

1. 関数が存在するかどうかを判断するための PHP 関数

カスタム関数を作成するとき。変数関数の使用法を理解する プログラムによって呼び出される関数が存在することを確認するために、関数が存在するかどうかを判断するために function_exists がよく使用されます。同じmethod_existsを使用して、クラスメソッドが存在するかどうかを検出できます。

<?php
function func() {
}
if (function_exists(&#39;func&#39;)){
 echo &#39;exists&#39;;
}
   ?>

class_exists を使用して、クラスが定義されているかどうかを確認できます

class MyClass{
}
// 使用前检查类是否存在
if (class_exists(&#39;MyClass&#39;)) {
 $myclass = new MyClass();
}

PHP には、ファイルが存在するかどうか file_exists などのこのような確認メソッドが多数あります

$filename = &#39;test.txt&#39;;
if (!file_exists($filename)) {
 echo $filename . &#39; not exists.&#39;;
}

2。 PHPの関数

いわゆる変数関数、つまり変数の値を介して関数を呼び出すことです。変数の値は変数であるため、変数の値を変更することでさまざまな関数を呼び出すことができます。これは、コールバック関数、関数リストで、または動的パラメーターに基づいてさまざまな関数を呼び出すためによく使用されます。変数関数を呼び出す方法は、変数名に括弧を追加することです。

function name() {
 echo &#39;jobs&#39;;
}
$func = &#39;name&#39;;
$func(); //调用可变函数

変数関数を使用してオブジェクトのメソッドを呼び出すこともできます

class book {
 function getName() {
  return &#39;bookname&#39;;
 }
}
$func = &#39;getName&#39;;
$book = new book();
$book->$func();

静的メソッドは変数を通じて動的に呼び出すこともできます

$func = &#39;getSpeed&#39;;
$className = &#39;Car&#39;;
echo $className::$func(); //动态调用静态方法
   
//静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。  
class Car {
 private static $speed = 10;
  
 public static function getSpeed() {
  return self::$speed;
 }
  
 public static function speedUp() {
  return self::$speed+=10;
 }
}
class BigCar extends Car {
 public static function start() {
  parent::speedUp();
 }
}
 
BigCar::start();
echo BigCar::getSpeed();

3. PHPクラスとオブジェクトの高度な機能

オブジェクトの比較同じクラスの 2 つのインスタンスのすべての属性が等しい場合、2 つの変数が同じオブジェクトへの参照であるかどうかを判断する必要がある場合は、比較演算子 == を使用できます。記号 === で判断します。

class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo &#39;==&#39;; //true
if ($a === $b) echo &#39;===&#39;; //false
对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值。 
class Car {
 public $name = &#39;car&#39;;
  
 public function __clone() {
  $obj = new Car();
  $obj->name = $this->name;
 }
}
$a = new Car();
$a->name = &#39;new car&#39;;
$b = clone $a;
var_dump($b);

オブジェクトのシリアル化。オブジェクトは、serialize メソッドを通じて文字列にシリアル化され、データの保存または転送に使用され、必要に応じてアンシリアル化して使用できるオブジェクトに逆シリアル化されます。

class Car {
 public $name = &#39;car&#39;;
}
$a = new Car();
$str = serialize($a); //对象序列化成字符串
echo $str.&#39;<br>&#39;;
$b = unserialize($str); //反序列化为对象
var_dump($b);

4. PHP string で文字列の長さを取得します

5. PHP string で文字列をフォーマットします

$str = '99.9'; という文字列がある場合はどうでしょうか。文字列99.90?

PHPのフォーマットされた文字列関数sprintf()を使用する必要があります

関数の説明: sprintf (フォーマット、変換される文字列)

戻り値: フォーマットされた文字列

//php中有一个神奇的函数,可以直接获取字符串的长度,这个函数就是strlen()。
$str = &#39;hello&#39;;
$len = strlen($str);
echo $len;//输出结果是5
   
//strlen函数对于计算英文字符是非常的擅长,但是如果有中文汉字,要计算长度该怎么办?
//可以使用mb_strlen()函数获取字符串中中文长度。 
$str = "我爱你";
echo mb_strlen($str,"UTF8");//结果:3,此处的UTF8表示中文编码是UTF8格式,中文一般采用UTF8编码

上記の例のフォーマットについて説明します

何をするのか%01.2f とはどういう意味ですか?

1. この%記号は先頭に書くことで指定した形式が開始されていることを意味します。 つまり「開始文字」、「変換文字」が現れるまでフォーマットは終了します。


2. % 記号の後ろにあるのは 0 で、これは「空白埋め文字」で、その位置が空の場合は 0 で埋められることを意味します。


3. 0 の次は 1 です。この 1 は、すべての文字列の占有が 1 桁以上でなければならないことを規定しています (小数点も 1 桁です)。


1を6に変更すると、$resultの値は099.90になります


小数点以下2桁必要なので、99.90には合計5つのプレースホルダーがあり、6つのプレースホルダーが必要になるので、それを埋めます0フルです。


4. %01の後の.2(点2)は、小数点以下が2桁でなければならないことを意味します。 この時の$strの値が9.234だとすると、$resultの値は9.23となります


なぜ4が足りないのでしょうか? なぜなら、上記の規定によれば、小数点以降は 2 桁のみを占める必要があり、また占有できるのは 2 桁だけであるためです。 ただし、$str の値は小数点以下 3 桁を占めるため、仮数部 4 が削除され、23 だけが残ります。


5. 最後にf「変換文字」で終わります。

6. 文字列のPHP文字列エスケープ

php文字列エスケープ関数addslashes()

関数の説明: 特殊文字にエスケープ文字を追加し、文字列を返すために使用されます

戻り値: 1 エスケープされた文字列

以上がPHPで必ず覚えておきたい知識ポイント(豆知識)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。