ホームページ バックエンド開発 PHPチュートリアル call_user_func_array とリファレンスのコードがわかりません。教えてください。

call_user_func_array とリファレンスのコードがわかりません。教えてください。

Jun 13, 2016 pm 12:51 PM
array function nbsp this

call_user_func_array とリファレンスに関するコードがわかりません。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

class PbObject{<br />

    <br />

    var $params;<br />

    var $fontFace = 'incite.ttf';<br />

<br />

    function Object() {<br />

        $args = func_get_args();<br />

        if (method_exists($this, '__destruct')) {<br />

            register_shutdown_function (array(&amp;$this, '__destruct'));<br />

        }<br />

        call_user_func_array(array(&amp;$this, '__construct'), $args);<br />

    }<br />

    <br />

    function __construct(){}    <br />

    <br />

    function toString() {<br />

        $class = get_class($this);<br />

        return $class;<br />

    }<br />

}

ログイン後にコピー

について説明してください。

このコードでは、call_user_func_array(array(&$this, '__construct'), $args); なぜ $this の前に参照文字 & が付いているのでしょうか?私はそのようなコードを理解したことがありません。 &を付けずに独自の__constructメソッドを呼び出すことはできないのでしょうか?追加するとどんな効果があるのでしょうか?​

クラスオブジェクトを参照しますか? 引用 カテゴリ オブジェクト
-----解決策--------------------------------
call_user_func_array で呼び出される関数がクラスメソッドの場合、配列を使用してクラス (オブジェクト) とメソッド名の両方を渡す必要があります
あなたの $this がオブジェクトです
php4 では、オブジェクトはデフォルトで値によって渡されます。参照宣言 (&) がない場合、メソッド内でクラス属性が変更された場合、この変更は呼び出し元自体には影響しません。 > php5 では、オブジェクトは参照によって渡されるため、先頭に &
を付ける必要はありません。
コード内でクラス属性を宣言するには var を使用します。これは明らかに php4 スタイルです
php4 クラスにはデストラクターがないため、コードは register_shutdown_function を使用して
を 1 つ登録します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

解決策: 組織では PIN を変更する必要があります。 解決策: 組織では PIN を変更する必要があります。 Oct 04, 2023 pm 05:45 PM

解決策: 組織では PIN を変更する必要があります。

Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する Sep 22, 2023 am 11:37 AM

Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法 Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法 Sep 15, 2023 pm 03:57 PM

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法

Windows 11でタイトルバーの色を変更するにはどうすればよいですか? Windows 11でタイトルバーの色を変更するにはどうすればよいですか? Sep 14, 2023 pm 03:33 PM

Windows 11でタイトルバーの色を変更するにはどうすればよいですか?

Windows 11/10修復におけるOOBELANGUAGEエラーの問題 Windows 11/10修復におけるOOBELANGUAGEエラーの問題 Jul 16, 2023 pm 03:29 PM

Windows 11/10修復におけるOOBELANGUAGEエラーの問題

Windows 11 でのディスプレイ スケーリング ガイド Windows 11 でのディスプレイ スケーリング ガイド Sep 19, 2023 pm 06:45 PM

Windows 11 でのディスプレイ スケーリング ガイド

Windows 11で明るさを調整する10の方法 Windows 11で明るさを調整する10の方法 Dec 18, 2023 pm 02:21 PM

Windows 11で明るさを調整する10の方法

iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? Nov 29, 2023 pm 11:21 PM

iPhoneのSafariでプライベートブラウジング認証をオフにする方法は?

See all articles