PHP忘れてしまいそう。

こういう書き方とか書かなかったら忘れてしまいそうですね。
クラスの多重継承とか職場ではそもそもしない。Functionで十分な感じで
この頃、ろくなコードを書いていません。FunctionからFunctionへなんて
コードを書いてたりしています。

 

<?php

function demo1(int $val=0):int
{
    return 3 * 3 * $val;
}

print demo1(3);


class demo2
{
    public static function test1():string
    {
        return "ABC";
    }
}

$demo2  = "demo2";
print $demo2::test1();


trait demo3
{
    public static function test2($val=""){
        return $val;
    }
    
}

class demo4 
{
    public static function test3($val = "")
    {
        return $val;
    }
}

class demo5 extends demo4
{
    use demo3;
    public static function test4($val = "")
    {
        return $val;
    }
}

$demo5 = 'demo5';
print $demo5::test2(1);
print $demo5::test3(2);
print $demo5::test4(3);

PHPで怒られる怒られない2

PHPで怒られる怒られないの違いはさて何でしょうか?
selfの使い道がポイントです。selfは静的な要素だと動作し
$thisは動的な要素だと動作します。

<?php
class demo1 
{
    static function test1()
    {
        return __METHOD__.self::test2();
    }

    static function test2()
    {
        return __FUNCTION__;
    }


}

class demo2
{
    static function  test1()
    {
        return __METHOD__.self::test2();
    }

    function test2()
    {
        return __FUNCTION__;
    }

}
$demo1 = 'demo1';
print $demo1::test1()."\n";
$demo2 = 'demo2';
print $demo2::test1()."\n";

PHPで怒られる怒られない。

PHPで怒られる書き方と怒られない書き方です。
下記のコードを参照ください。

<?php

class demo_php1{

    function demo1($val=""){
        return $val;
    }

    public function demo2($val=""){
        return $val;
    }

    static function demo3($val=""){
        return $val;
    }
}

print demo_php1::demo1("DEMO1\n");
print demo_php1::demo2("DEMO2\n");
print demo_php1::demo3("DEMO3\n");

下記のようにインスタンス(instance)すればこのコードはすべて怒られないです
それだけの違い。ちなみにdemo3は怒られない書き方です。

オブジェクトを単体で使う場合は気をつけましょう。
PHPのバージョンアップするにつれjavaのような動きになってきています。
PHP、Pythonに負けないようにかこの頃開発が活発化してます。
最新はPHP7.4ですからね・・・。

$demo_php1 = new demo_php1();
print $demo_php1->demo1("DEMO1\n");
print $demo_php1->demo2("DEMO2\n");
print $demo_php1->demo3("DEMO3\n");