PHP 扩展类属性

标签 php class mysqli extend

我在 PHP 应用程序中有两个类,例如 B 扩展了 A。 A 类有一个函数,它以 SQL 插入查询数组的形式返回一些其他属性,例如

Class A {
$property_a;
$property_b;
$property_c;
$property_d;

function queries() {
$queries = array();
$queries[] = "INSERT INTO xxx VALUES " . $this->property_a . ", " . $this->property_b";
$queries[] = "INSERT INTO yyy VALUES " . $this->property_b . ", " . $this->property_d";
}
}

我希望 B 类有一个类似的(相同的)函数,它对 B 类的属性执行相同的操作,同时仍然保留 A 类的值。这个想法是每个查询都将通过最终函数传递同时即:

$mysqli->query("START TRANSACTION");
foreach($queries as $query) {
if(!$mysqli($query)) {
$mysqli->rollback();
}
}

如果一切正常 $mysqli->commit();

实现这一目标的最简单方法是什么? 任何建议和想法都表示赞赏。 谢谢!

最佳答案

在 B::queries() 中,您可以调用 parent该方法的实现并将您的数据附加到 a::queries() 返回的数组中。

class B extends A {
  protected $property_e=5;
  public function queries() {
    $queries = parent::queries();
    // In a real application property_e needs to be sanitized/escaped
    // before being mixed into the sql statement.
    $queries[] = "INSERT INTO zzz VALUES " . $this->property_e;
    return $queries;
  }
}
$b = new B;
foreach( $b->queries() as $q ) {
  echo $q, "\n";
}

但是您可能(也)想研究一个 ORM 库,例如doctrine .

关于PHP 扩展类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597300/

相关文章:

PHP数组循环+MySQL数据

php - 如何在JavaScript函数中激活PHP文件

php - 是否可以在 Laravel 中使用 mysqli 作为数据库驱动程序?

php - Codeigniter SSH 连接到远程 MySQL 数据库

php - php通过什么接口(interface)连接mysql

PHP:用购物车中的值(value)更新库存

python - 获取使用 __init__ 重新创建对象所需的对象变量

c++ - 头文件中的类声明

java - 加载jar库 加载库

php mysqli 真正的转义字符串添加反斜杠