PHP7+の拡張型変換に関する知識について話しましょう

PHPz
リリース: 2023-04-21 11:09:08
オリジナル
649 人が閲覧しました

PHP 言語の発展により、PHP7 はパフォーマンスとセキュリティが大幅に向上しました。その中でも、拡張型変換関数は非常に実用的な関数であり、コードをより簡潔かつ効率的にすることができます。この記事では、PHP7の拡張型変換に関する関連知識を紹介します。

1. 概要

拡張型変換とは、あるデータ型を別のデータ型に変換することを指します。 PHP7 より前は、通常、intval()、floatval()、strval()、boolval() などの一連の関数を使用してデータ型変換を実現していました。ただし、これらの関数にはまだいくつかの問題があります:

  1. 関数名は覚えにくい;
  2. 関数はコードの冗長性と読みやすさの問題を引き起こす場合があります;
  3. 関数呼び出しによって奇妙なエラーが発生することがあります。

これらの問題を解決するために、PHP7 では、新しい糖衣構文による型変換を実行できる拡張型変換関数が導入されました。

2. 基本的な使用法

PHP7 では、型変換に次の糖衣構文を使用できます:

  1. (int) $var: $var を整数に変換します。 type;
  2. (float) $var: $var を浮動小数点型に変換;
  3. (string) $var: $var を文字列型に変換;
  4. (bool) $var: $var をブール値に変換します。

次に、型変換に構文シュガーを使用する例をいくつか示します。

<?php
    $a = "123";
    $b = (int) $a;
    echo gettype($b); // 输出:integer
    
    $c = 3.14;
    $d = (string) $c;
    echo gettype($d); // 输出:string
    
    $e = "true";
    $f = (bool) $e;
    echo gettype($f); // 输出:boolean
?>
ログイン後にコピー

動的言語として、PHP のデータ型は実行時に決定されるため、これらの拡張型変換は構文シュガーで行うことができます。適切な状況で非常に役立ちます。このセクションでは、この点を説明するための簡単な例をいくつか示します。

3. 詳細な学習

PHP7 では、拡張された型変換関数により、基本的なデータ型だけでなく、いくつかの特殊なデータ型も変換できます。

  1. 配列変換

配列を文字列に変換する必要がある場合は、引き続き implode() 関数を使用することをお勧めします。ただし、拡張型変換関数を使用して実現することもできます:

<?php
    $arr = array("hello", "world");
    $str1 = implode(&#39;,&#39;, $arr);
    $str2 = (string) $arr;
    echo $str1."n".$str2;
?>
ログイン後にコピー

出力結果:

hello,world
Array
ログイン後にコピー

拡張型変換構文シュガーを使用して配列を文字列に変換すると、出力結果は Array になります。 、それは私たちが望んでいることではありません。この問題の解決策は、配列をオブジェクトに変換する __toString() 関数を使用することです。

<?php
    class A {
        private $arr = array("hello", "world");
        public function __toString() {
            return implode(&#39;,&#39;, $this->arr);
        }
    }
    $a = new A();
    echo (string) $a;
?>
ログイン後にコピー

出力結果:

hello,world
ログイン後にコピー
  1. オブジェクト変換

拡張型変換構文を使用して、配列に加えて、オブジェクトをさまざまな型に変換することもできます。砂糖のデータの種類。以下にいくつかの例を示します。

<?php
    class Test {
        private $var = "hello,world";
        public function __toString() {
            return $this->var;
        }
        public function __toInt() {
            return (int) $this->var;
        }
        public function __toFloat() {
            return (float) $this->var;
        }
        public function __toArray() {
            return array($this->var);
        }
    }
    $t = new Test();
    echo (string) $t; // 输出:hello,world
    echo (int) $t; // 输出:0
    echo (float) $t; // 输出:0
    print_r((array) $t); // 输出:Array ( [0] => hello,world )
?>
ログイン後にコピー

まず、上記の例を見ると、__toString()、__toInt()、__toFloat()、および __toArray() の 4 つのメソッドが定義されていることがわかります。テストクラス。これらのメソッドは型変換関数の拡張の中核となるため、新しいデータ型変換メソッドを実装するにはこれらを定義する必要があります。

上記のコードでは、Test オブジェクトを文字列型に変換すると、__toString() メソッドが自動的に呼び出され、対応する文字列が返されます。同様に、オブジェクトが整数型または浮動小数点型に変換される場合、変換のために __toInt() または __toFloat() メソッドが自動的に呼び出されます。オブジェクトが配列型に変換されると、__toArray() メソッドが自動的に呼び出されます。

拡張型変換を使用する場合は、型変換の順序に特に注意してください。たとえば、(int) $t を呼び出しても、$t で __toInt() メソッドが定義されていない場合、__toString() メソッドが自動的に呼び出されます。また、__toString() メソッドが定義されていない場合は 0 が返されます。

4. 概要

拡張型変換は PHP7 の非常に実用的な新機能であり、コードをより簡潔かつ効率的にすることができます。拡張型変換を使用する場合は、型変換の順序と型変換メソッドの実装に注意する必要があります。さらに、拡張型変換は独自定義のデータ型にも拡張できるため、コード開発がさらに便利になります。

以上がPHP7+の拡張型変換に関する知識について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート