【问题标题】:How can i call functions of a class inside a php script?如何在 php 脚本中调用类的函数?
【发布时间】:2019-09-19 07:49:00
【问题描述】:

我有另一个脚本“DBSetting.php”,我在其中分配了连接到我的 MySQL 数据库所需的数据。 但是,当我尝试编写“fetchAll();”时,我究竟怎样才能让我的脚本调用一个函数?最后,它向我显示以下错误:

PHP 解析错误:语法错误意外 'fetchAll' (T_STRING),期望函数 (T_FUNCTION) 或 const (T_CONST) 在 /path/to/script/DBclass.php 第 x 行

<?php    
require_once( 'DBSettings.php' );
class DBClass extends DatabaseSettings
{
    var $classQuery;
    var $link;

    var $errno = '';
    var $error = '';

    // Connects to the database
    function DBClass()
    {

        $settings = DatabaseSettings::getSettings();

        $host = $settings['dbhost'];
        $name = $settings['dbname'];
        $user = $settings['dbusername'];
        $pass = $settings['dbpassword'];

        $this->link = new mysqli( $host , $user , $pass , $name );
    }
    function fetchAll( $result , $resultType = MYSQLI_ASSOC )
    {
        return $result->fetch_all( $resultType );
    }   
}

?>

我只想得到一些输出,如果我通过 PHP DBclass.php 每个命令行运行脚本,它不会给我错误并且行为正常 -> 因为它当然只包含函数

【问题讨论】:

  • 你在考虑方法链吗?
  • 如何“运行”该脚本?它不应该执行任何操作

标签: php function class


【解决方案1】:

不确定它是否理解你想要达到的目标,所以有两件事:

您可以通过执行以下操作调用fetchAll() 方法(未经测试!):

<?php    
require_once( 'DBSettings.php' );
class DBClass extends DatabaseSettings
{
    var $classQuery;
    var $link;

    var $errno = '';
    var $error = '';

    // Connects to the database
    function __construct()
    {

        $settings = DatabaseSettings::getSettings();

        $host = $settings['dbhost'];
        $name = $settings['dbname'];
        $user = $settings['dbusername'];
        $pass = $settings['dbpassword'];

        $this->link = new mysqli( $host , $user , $pass , $name );
    }

    function query( $link )
    {
        return mysqli_query($link, 'SELECT * FROM your_table');
    }

    function fetchAll( $result , $resultType = MYSQLI_ASSOC )
    {
        return $result->fetch_all( $resultType );
    }   
}

?>

在另一个文件中:

$db_class = new DBClass();
$query = $db_class->query($db_class->link);
var_dump($db_class->fetchAll($query));

【讨论】:

  • 什么是'var'?据我所知 PHP 没有 'var' 命令。
  • 这是定义类属性的老方法,默认会被翻译成“public”:php.net/manual/en/language.oop5.properties.php
  • 感谢您的链接。由于我没有在版本 4 中做 PHP,所以我不知道它。
猜你喜欢
  • 2021-12-11
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2018-12-02
  • 2015-02-27
相关资源
最近更新 更多