PHP对象属性赋值丢失问题?
<code><?php class demo { public $name; public function test1() { $this->name = 'zhangsan'; } public function test2() { print_r($this->name); } } $obj = new demo(); $obj->test1(); $obj->test2(); // 输出 zhangsan 我在一个PHP文件里面执行结果如上,但是我用框架开发网站测试调用的时候执行流程如下: 1.我的test1方法跳到模板 ,并且方法里将$name 赋值了 'lisi' 2.模板提交的时候提交到了test2,并且打印出属性$name为空 这是为啥呢?? </code>
回复内容:
<code><?php class demo { public $name; public function test1() { $this->name = 'zhangsan'; } public function test2() { print_r($this->name); } } $obj = new demo(); $obj->test1(); $obj->test2(); // 输出 zhangsan 我在一个PHP文件里面执行结果如上,但是我用框架开发网站测试调用的时候执行流程如下: 1.我的test1方法跳到模板 ,并且方法里将$name 赋值了 'lisi' 2.模板提交的时候提交到了test2,并且打印出属性$name为空 这是为啥呢?? </code>
想到的几种可能
1.不是同一个实例
前后引用对象的方式是否真的引用到同一个实例上?
2.有魔术方法改变了行为
<code>php</code><code><?php class BadAss { function __set($name, $value) { $this->{self::confuse($name)} = $value; } private static function confuse($name) { return substr($name, 0, 4) !== 'bad_' ? "bad_$name" : $name; } } $o = new BadAss; $o->name = 'value'; var_dump($o);//bad_name => value </code>
是一个实体么
你要获取$name 直接使用$obj->name 不就获取了。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
