小编Mac*_*ber的帖子

私有静态方法与静态方法

我理解这static意味着不需要实例化对象以使该属性/方法可用.我也理解这如何适用于私有属性和方法以及公共方法.我想要了解的是静态私有函数会让你获益.例如:

class Beer {
    static private $beertype = "IPA";

    private function getBeerType() {
            return self::$beertype;
    }

    static public function BeerInfo() {
            return self::getBeerType();
    }
}

print Beer::BeerInfo() . "\n";
Run Code Online (Sandbox Code Playgroud)

私有方法getBeerType()在没有实例化对象的情况下执行就好了,只要它是从静态公共方法调用即可.如果静态公共方法可以访问所有私有方法(静态和非静态),那么声明静态私有方法有什么好处?

打开严格的错误报告后,我会收到警告,我应该创建getBeerType()静态,尽管它仍然允许我运行代码.我做了一些研究,似乎其他语言(Java)会强制您在静态公共方法调用时将私有方法声明为静态.看起来像PHP让你逃脱这一点.有没有办法强制它抛出错误而不执行

php

37
推荐指数
4
解决办法
5万
查看次数

重定向的意外输出

我在重定向STDOUT和STDERR时遇到了一个奇怪的问题.以下按预期工作:

$ gvim --version > /tmp/version.out
$ ls -l /tmp/version.out
-rw-r--r--. 1 blah blah 3419 Jun 27 17:28 /tmp/version.out
Run Code Online (Sandbox Code Playgroud)

输出文件中有3419个字符,当我查看文件时,它包含了我所期望的内容.

但是,当我执行以下操作时,它无法正常工作:

$ gvim --version > /tmp/version.out 2> /tmp/version.err
$ ls -latr /tmp/version.*
-rw-r--r--. 1 blah blah 0 Jun 27 17:29 /tmp/version.out
-rw-r--r--. 1 blah blah 0 Jun 27 17:29 /tmp/version.err
Run Code Online (Sandbox Code Playgroud)

请注意,.out和.err文件这次都是零长度.我尝试使用ls命令,它按预期工作:

$ ls . /ZZZ > /tmp/ls.out 2> /tmp/ls.err
$ ls -l /tmp/ls.*
-rw-r--r--. 1 blah blah 50 Jun 27 17:45 /tmp/ls.err
-rw-r--r--. 1 blah blah …
Run Code Online (Sandbox Code Playgroud)

vim bash io-redirection

8
推荐指数
1
解决办法
148
查看次数

标签 统计

bash ×1

io-redirection ×1

php ×1

vim ×1