cari

Rumah  >  Soal Jawab  >  teks badan

Mengapakah PHP boleh secara langsung memanggil kaedah bukan statik kelas melalui ::?

Kod adalah seperti berikut:

<?php

class Demo
{
    public function testing()
    {
        echo "testing\n";
    }
}

Demo::testing();

php7.0 output pelaksanaan:

$ php demo.php 
testing

php5.6 output pelaksanaan

$ php demo.php
PHP Strict Standards:  Non-static method Demo::testing() should not be called statically in /home/runner/Code/funny/demo.php on line 11

testing

Ada juga operasi macam ni??

滿天的星座滿天的星座2731 hari yang lalu550

membalas semua(7)saya akan balas

  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    http://www.laruence.com/2012/...

    Hahaha, terima kasih atas jawapan anda atas sebab-sebab tertentu, sila baca artikel Brother Bird di atas

    balas
    0
  • 高洛峰

    高洛峰2017-06-10 09:49:28

    Jika kelas di bawah versi 5.6 memanggil terus kaedah dan atribut tanpa instantiasi, kaedah dan atribut mestilah kaedah statik, iaitu, jika kelas Demo memanggil kaedah ujian secara langsung, ujian mestilah public static function testing() { }. Jika tidak, ralat akan dilaporkan.
    Saya tidak tahu jika tidak perlu mengisytiharkan apa-apa yang melebihi 7.0

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-10 09:49:28

    Saya melihatnya, tetapi php-cli boleh melaksanakannya, tetapi php-fpm masih tidak boleh

    Deprecated: Non-static method Demo::testing() should not be called statically in test.php on line 11
    
    testing

    balas
    0
  • 某草草

    某草草2017-06-10 09:49:28

    Walaupun ini boleh digunakan, ia tidak digalakkan.

    balas
    0
  • 習慣沉默

    習慣沉默2017-06-10 09:49:28

    php7.0 boleh ditulis seperti ini, tetapi php5.6 pasti tidak boleh ditulis sebagai self::testing

    balas
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    __callStatic()

    balas
    0
  • 学习ing

    学习ing2017-06-10 09:49:28

    Boleh dianggap perlaksanaan PHP tidak ketat.

    Jika $ini tidak digunakan dalam kaedah bukan statik, anda boleh menggunakan:: untuk memanggilnya.

    balas
    0
  • Batalbalas