提问人:Jilco Tigchelaar 提问时间:11/17/2023 更新时间:11/17/2023 访问量:53
PHP 8.2 使用函数声明填充变量
PHP 8.2 fill variable with function declaration
问:
我对下面的代码部分感到困惑
$fp = function ($name) use ($adapter) {
return $adapter->driver->formatParameterName($name);
};
上面的代码中发生了什么,是填充变量的函数(声明)吗?
<?php
namespace School;
use Laminas\Db\Adapter\Adapter;
use Laminas\Db\Adapter\AdapterInterface;
class SchoolClass
{
public int $code = 0;
public string $name = '';
public function __construct(int $code = 0,string $name = '')
{
$this->code = $code;
$this->name = $name;
}
public function save(): bool
{
$adapter = self::getAdapter();
//vullen van een variabele met een functie?
$fp = function ($name) use ($adapter) {
return $adapter->driver->formatParameterName($name);
};
if (empty($this->code)){
$statement = $adapter->query('INSERT INTO classes(name) VALUES (' . $fp('name') . ')');
$params = ['name' => $this->name];
} else {
$statement = $adapter->query('UPDATE classes SET name=' . $fp('name') . ' WHERE code=' . $fp('code'));
$params = [
'code' => $this->code,
'name' => $this->name
];
}
try {
$statement->execute($params);
} catch (\Exception $e) {
error_log($e->getMessage());
return false;
}
return true;
}
private static function getAdapter(): AdapterInterface
{
$config = require (realpath(__DIR__ . '/../config') . '/config.php');
$adapter = new Adapter($config['db']);
return $adapter;
}
}
答: 暂无答案
评论
$fp('name')
$adapter->driver->formatParameterName('name')