suchen
HeimBackend-EntwicklungPHP-Tutorialoop - PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func()

诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——

因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。
那么在调用$obj->some_attr时就不能用__get来做了。。。

有没有什么更“魔术”一点的方法。。?
我实在不想弄个$obj->to_json()这种东西。。。

回复内容:

诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——

因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。
那么在调用$obj->some_attr时就不能用__get来做了。。。

有没有什么更“魔术”一点的方法。。?
我实在不想弄个$obj->to_json()这种东西。。。

你的意思是要在类内部指定哪些成员要被序列化吧:

1)让你的类去实现Serializable接口(5.1就支持了),自己写个serialize方法返回json_encode过的数据;

2)或者去实现JsonSerializable接口(5.4+)。

<?php class test
{
    public $var_a;
    public $var_b;

    public function __get($name)
    {
        //do something ...
        //ext:
        $pre    = substr($name,0,1);
        $var    = substr($name,1);

        if($pre !== '_') return;
        if(!property_exists($this,$var)) return;
        if(!method_exists($this,$name)) return;

        $this->$name();
    }

    protected function _var_a()
    {
        $this->var_a = 'a';
        return $this->var_a;
    }

}

$test   = new test();
$test->_var_a;
$str    = json_encode($test);
var_dump($str);

这是什么需求。还是我理解错了?
直接外部操作不就行了,何必这么繁。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was ist die vollständige Form von PHP?Was ist die vollständige Form von PHP?Apr 28, 2025 pm 04:58 PM

In dem Artikel werden PHP erörtert, in dem die vollständige Form, Hauptnutzungen in der Webentwicklung, der Vergleich mit Python und Java und seine Lernen des Lernens für Anfänger beschrieben werden.

Wie handelt es sich bei PHP um Formulardaten?Wie handelt es sich bei PHP um Formulardaten?Apr 28, 2025 pm 04:57 PM

PHP behandelt Formdaten mit $ \ _ post und $ \ _ GET Superglobals, wobei die Sicherheit durch Validierung, Bereinigung und sichere Datenbankinteraktionen gewährleistet ist.

Was ist der Unterschied zwischen PHP und ASP.NET?Was ist der Unterschied zwischen PHP und ASP.NET?Apr 28, 2025 pm 04:56 PM

Der Artikel vergleicht PHP und ASP.NET und konzentriert sich auf ihre Eignung für groß angelegte Webanwendungen, Leistungsunterschiede und Sicherheitsfunktionen. Beide sind für große Projekte lebensfähig, aber PHP ist Open-Source und plattformunabhängig, während ASP.NET,

Ist PHP eine Fallempfindlichkeit?Ist PHP eine Fallempfindlichkeit?Apr 28, 2025 pm 04:55 PM

Die Fallempfindlichkeit von PHP variiert: Funktionen sind unempfindlich, während Variablen und Klassen empfindlich sind. Zu den Best Practices gehören eine konsistente Benennung und Verwendung von Fall-unempfindlichen Funktionen für Vergleiche.

Wie leiten Sie eine Seite in PHP um?Wie leiten Sie eine Seite in PHP um?Apr 28, 2025 pm 04:54 PM

In dem Artikel werden verschiedene Methoden für die Umleitung von Seiten in PHP erörtert, wobei der Schwerpunkt auf der Funktion Header () und in Bezug auf gängige Probleme wie "bereits gesendete" Headers -Fehlern angegangen wird.

Erklären Sie den Typ, der in PHP angezeigt wirdErklären Sie den Typ, der in PHP angezeigt wirdApr 28, 2025 pm 04:52 PM

In Artikel wird der Typ in PHP angezeigt, eine Funktion zum Angeben erwarteter Datentypen in Funktionen. Das Hauptproblem ist die Verbesserung der Codequalität und der Lesbarkeit durch Typdurchsetzung.

Was ist PDO in PHP?Was ist PDO in PHP?Apr 28, 2025 pm 04:51 PM

In dem Artikel werden PHP -Datenobjekte (PDO) erörtert, eine Erweiterung für den Datenbankzugriff in PHP. Es zeigt die Rolle von PDO bei der Verbesserung der Sicherheit durch vorbereitete Aussagen und deren Vorteile gegenüber MySQLI, einschließlich Datenbankabstraktion und besserer Fehlerbehandlung.

Wie erstelle ich API in PHP?Wie erstelle ich API in PHP?Apr 28, 2025 pm 04:50 PM

In Artikel werden PHP -APIs erstellt und gesichert und Schritte von der Endpunktdefinition bis zur Leistungsoptimierung mithilfe von Frameworks wie Laravel und besten Sicherheitspraktiken beschrieben.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.