小编alp*_*nyx的帖子

PHP - 是否可以声明静态和非静态方法

我可以将对象中的方法声明为静态和非静态方法,并且具有调用静态方法的相同名称吗?

我想创建一个具有静态方法"send"的类和一个调用静态函数的非静态方法.例如:

class test {
    private $text;
    public static function instance() {
        return new test();
    }

    public function setText($text) {
        $this->text = $text;
        return $this;
    }

    public function send() {
        self::send($this->text);
    }

    public static function send($text) {
        // send something
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在这两个上调用函数

test::send("Hello World!");
Run Code Online (Sandbox Code Playgroud)

test::instance()->setText("Hello World")->send();
Run Code Online (Sandbox Code Playgroud)

可能吗?

php oop

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

Extbase - 从查询中获取创建的sql

我想从我的typo3扩展中获取一些数据库表.扩展基于extbase.

查询始终只返回数据,但数据存在

我试过这个:

$query = $this->createQuery();
$query->statement('SELECT * FROM `my_table`
    WHERE field = ? ORDER BY date DESC LIMIT 1',
    array($condition));

$results = $query->execute();
Run Code Online (Sandbox Code Playgroud)

还有这个:

$query = $this->createQuery();

$query->matching($query->equals('field', $condition));
$query->setOrderings(array('date' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));
$query->setLimit(1);

$results = $query->execute();
Run Code Online (Sandbox Code Playgroud)

两者都返回null作为结果.

是否有可能获得该类创建的sql来查找bug的位置?

我查看了一些extbase持久化类,但没有找到线索

编辑:对于那些感兴趣的人..我找到了一个"解决方案".

如果使用statement()方法创建查询,则可以使用此函数打印查询

echo $query->getStatement()->getStatement();
Run Code Online (Sandbox Code Playgroud)

它不会取代占位符.但是你可以用这种方法得到变量

var_dump($query->getStatement()->getBoundVariables());
Run Code Online (Sandbox Code Playgroud)

这是我找到的最佳解决方案,无需编辑extbase扩展

sql typo3 extbase

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

extbase ×1

oop ×1

php ×1

sql ×1

typo3 ×1