Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich die Servermethode nicht direkt aufrufen, anstatt nur Zwischenvariablen hinzuzufügen?

Warum kann ich die Servermethode nicht direkt aufrufen, anstatt nur Zwischenvariablen hinzuzufügen?

WBOY
WBOYnach vorne
2024-02-09 09:36:111130Durchsuche

Warum kann ich die Servermethode nicht direkt aufrufen, anstatt nur Zwischenvariablen hinzuzufügen?

Warum können Sie in PHP die Servermethode nicht direkt aufrufen, anstatt nur Zwischenvariablen hinzuzufügen? Dies ist eine häufige Frage. Der PHP-Editor Apple beantwortet die Frage für Sie. In PHP verwenden wir normalerweise Front-End-Seiten, um mit Back-End-Servern zu interagieren. Das direkte Aufrufen von Servermethoden kann einige Sicherheitsrisiken bergen, z. B. die Verwendung durch Hacker zur Durchführung böswilliger Vorgänge. Um die Sicherheit zu erhöhen, führen wir das Konzept der Zwischenvariablen ein. Indem die Front-End-Anfrage an den Server gesendet wird und der Server dann entsprechende Vorgänge basierend auf dem Wert der Zwischenvariablen ausführt, können potenzielle Sicherheitsrisiken wirksam reduziert werden. Darüber hinaus kann die Verwendung von Zwischenvariablen auch die Wartbarkeit und Skalierbarkeit des Codes erhöhen und den Code klarer und verständlicher machen. Zusammenfassend lässt sich sagen, dass das Hinzufügen von Zwischenvariablen eine sichere und zuverlässige Vorgehensweise ist, die die Qualität und Zuverlässigkeit Ihres Codes verbessern kann.

Frageninhalt

Ich schreibe einen Client für mqtt. Ich habe einen Rückruf für mqtt.OnConnectHandler geschrieben. Ich möchte die Verbindungsadresse des Druckservers schreiben.

var connectHandler mqtt.OnConnectHandler = func(c mqtt.Client) {
    
        // this is ok 
    options := c.OptionsReader()
    s := options.Servers()
        fmt.Printf("conn: %s success\n", s)

        // --------------------------------------
        // But it won't work like this
        // here have error: On servers。
        // cannot call pointer method Servers on mqtt.ClientOptionsReadercompilerInvalidMethodExpr

    o := c.OptionsReader().Servers()    
    fmt.Printf("conn: %s success\n", o)


}

Also habe ich festgestellt, dass ich es nicht direkt verwenden kann. Warum? Sind sie nicht dasselbe? Warum können zum Empfangen nur Zwischenvariablen verwendet werden?

Ich habe zwei Methoden ausprobiert. Sie haben nur einmal Erfolg. Ich dachte, beides wäre in Ordnung.

Workaround

Dies liegt daran, dass Servers 方法是用指针接收器声明的。这意味着为了调用 Servers der Empfänger adressierbar sein muss:

https://www.php.cn/link/753a043674f0193523abc1bbce678686

Temporäre Variablen sind nicht adressierbar. Hier:

c.OptionsReader().Servers()

c.OptionsReader() 返回一个不可寻址的值,因此您无法使用该值作为接收者来调用 Servers。当您将 c.OptionsReader 的返回值分配给一个变量时,它就变得可寻址,并且您可以使用该变量调用 Servers() .

Das obige ist der detaillierte Inhalt vonWarum kann ich die Servermethode nicht direkt aufrufen, anstatt nur Zwischenvariablen hinzuzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen