小编Jul*_*mur的帖子

Why does PHP prefer __call() to __callStatic()?

When I try this :

<?php
class myParent {
    public function __call($method, $params) {
        echo "from __call";
    }

    public function __callStatic($method, $params) {
        echo "from __callStatic";
    }
}

class mySon extends myParent {
    public function bar() {
        myParent::foo();
    }
}

(new mySon())->bar();
Run Code Online (Sandbox Code Playgroud)

I expect this output : from __callStatic ...

Instead it gives : from __call.

有人可以解释一下为什么吗?


编辑:确切地说,我想知道为什么如果删除该__call函数,它就会触发__callStatic,以及是否有办法__callStatic__call声明时触发。

php

6
推荐指数
1
解决办法
269
查看次数

在执行时上溢/下溢是否为未定义的行为?

我正在阅读有关未定义行为的内容,我不确定它是否只是一个编译时功能,或者它是否可以在执行时发生.

我很好理解这个例子(这是从维基百科未定义行为页面中提取的):

C语言的一个例子:

int foo(unsigned x)
{
    int value = 5;
    value += x;
    if (value < 5)
        bar();
    return value;
}
Run Code Online (Sandbox Code Playgroud)

x不能为负,并且由于有符号整数溢出是C中未定义的行为,编译器可以假设在if检查行value >= 5.因此编译器可以忽略if和调用该函数bar,因为if它没有副作用,并且它的条件永远不会被满足.因此,上面的代码在语义上等同于:

int foo(unsigned x)
{
     int value = 5;
     value += x;
     return value;
}
Run Code Online (Sandbox Code Playgroud)

但这发生在编译时.

如果我写,例如:

void foo(int x) {
    if (x + 150 < 5)
         bar();
}

int main() {
    int x;
    std::cin >> x;
    foo(x);
}
Run Code Online (Sandbox Code Playgroud)

然后用户键入 …

c c++ integer-overflow undefined-behavior

5
推荐指数
1
解决办法
493
查看次数

在markdown中显示链接URL

我有一个markdown文件,其中我多次使用链接,例如:

This [website][an_awesome_website_link] is awesome.

You will never use anything else than this [website][an_awesome_website_link].

[an_awesome_website_link]: https://stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

格式化,看起来像:

这个网站太棒了.

除了这个网站,你绝不会使用任何其他东西.


我想显示链接网址,[an_awesome_website_link]而不必再次写入所述网址.

例如,我想要这个,并在我的markdown文件中只写一次stackoverflow的url:

这个网站(https://stackoverflow.com).

除了这个网站,你绝不会使用任何其他东西.

查看https://stackoverflow.com以获得更多乐趣.

可能吗 ?怎么样 ?

markdown

4
推荐指数
2
解决办法
4711
查看次数

检查指针的可空性:!指针或指针== nullptr?

假设我有一个指针:int *pointer.

如果我想测试它的可空性,我应该这样做:

bool nullability = !pointer;
Run Code Online (Sandbox Code Playgroud)

或者:

bool nullability = (pointer == nullptr);
Run Code Online (Sandbox Code Playgroud)

两个表达都是等价的吗 如果没有,为什么以及副作用是什么?

c++ pointers

4
推荐指数
1
解决办法
1886
查看次数

如何在 Linux 上挂钩 send() / recv() 函数?

我正在尝试在 Linux 上用 C++挂钩recv()send()函数。

我知道如何挂钩函数 (github: zeek/subhook)。但是我想要一些帮助来学习如何查找recv()send()函数的地址(在运行时,或使用独立版本的解决方案)。

我愿意接受任何可以帮助我理解此处涉及的机制的文档或建议。


[编辑] 澄清:我不想使用,LD_PRELOAD=因为我用这个工具注入了我的共享库:linux-inject

c c++ unix elf abi

2
推荐指数
1
解决办法
4790
查看次数

调用程序时覆盖第一个参数

当我调用二进制文件时,我需要覆盖第一个参数.

由于这是程序名称,我有两个解决方案:

  • 移动二进制文件并使用其新名称调用它; 要么
  • 创建一个别名(如果shell允许).

但是,有时我需要完全删除第一个参数.

我用C编写了一个简单的程序来完成这项工作:

#include <unistd.h>

int main(int argc, char **argv)
{
    return execve(argv[1], NULL, NULL);
}
Run Code Online (Sandbox Code Playgroud)

我有一个内置的方式来做shell吗?首选bash的解决方案.

bash shell

0
推荐指数
1
解决办法
46
查看次数

标签 统计

c++ ×3

c ×2

abi ×1

bash ×1

elf ×1

integer-overflow ×1

markdown ×1

php ×1

pointers ×1

shell ×1

undefined-behavior ×1

unix ×1