Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问类方法/函数_Php_Oop - Fatal编程技术网

Php 访问类方法/函数

Php 访问类方法/函数,php,oop,Php,Oop,我有一个index.php和一个Regions.php,这是一个类。我试图从Regions类调用一个方法到我的index.php,但似乎无法访问它。它说: 调用第7行C:\xampp\htdocs\exercise4\index.php中未定义的函数getRegionInfo() 但是我已经包括了我需要的文件。这是密码 index.php $regions = new Regions; $regions = getRegionInfo(); $regions = get_regions();

我有一个index.php和一个Regions.php,这是一个类。我试图从Regions类调用一个方法到我的index.php,但似乎无法访问它。它说:

调用第7行C:\xampp\htdocs\exercise4\index.php中未定义的函数getRegionInfo()

但是我已经包括了我需要的文件。这是密码

index.php

$regions = new Regions;
$regions = getRegionInfo();
$regions = get_regions();
这是我的区域课程

class Regions
{

 public function getRegionInfo()
 {
    $this->get_regions();
 }

 private function get_regions()
 {
    global $db;
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}

使用
->
符号访问类方法。因此,请使用:

$regions = new Regions();
$regions->getRegionInfo();
$regions->get_regions();

如果要在外部调用,请将您的
get_regions()
从private更改为public。

类方法可以使用
->
符号访问。因此,请使用:

$regions = new Regions();
$regions->getRegionInfo();
$regions->get_regions();

如果要在外部调用,请将您的
get_regions()
从private更改为public。

类方法可以使用
->
符号访问。因此,请使用:

$regions = new Regions();
$regions->getRegionInfo();
$regions->get_regions();

如果要在外部调用,请将您的
get_regions()
从private更改为public。

类方法可以使用
->
符号访问。因此,请使用:

$regions = new Regions();
$regions->getRegionInfo();
$regions->get_regions();

如果您想在外部调用它,请将您的
get_regions()
从private更改为public。

这样如何。。在使用该文件之前,您需要将_包含在该文件中一次

index.php

include_once("Regions.php");

$regions = new Regions;
$x = $regions->getRegionInfo(); //this is temp var name

这个怎么样。。在使用该文件之前,您需要将_包含在该文件中一次

index.php

include_once("Regions.php");

$regions = new Regions;
$x = $regions->getRegionInfo(); //this is temp var name

这个怎么样。。在使用该文件之前,您需要将_包含在该文件中一次

index.php

include_once("Regions.php");

$regions = new Regions;
$x = $regions->getRegionInfo(); //this is temp var name

这个怎么样。。在使用该文件之前,您需要将_包含在该文件中一次

index.php

include_once("Regions.php");

$regions = new Regions;
$x = $regions->getRegionInfo(); //this is temp var name

首先,正确的index.php如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
您需要指出您正在对
区域
对象的特定实例调用
getRegionInfo
函数(
$regionsObj
,在上面的示例中)

其次,在这种情况下,创建公共和私有方法是没有意义的。包括额外的私有方法是不必要的,因为公共方法只调用私有方法。只需将所有代码放在public方法中。你可以:

class Regions
{

 public function getRegionInfo()
 {
    global $db;
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
第三,你不应该让你的
$db
成为一个全局变量。相反,将其作为参数发送给
区域
类的构造函数:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");
然后创建区域对象,如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
第四,您不需要自己填充结果数组。相反,您可以在
$stmt
对象上返回
fetchAll
函数的结果:

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }
您的最后一堂课,以及所有更改,将如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
最后一点,我不确定您是否只是没有包含代码的这一部分,这在另一个答案中提到过,我将在这里包含它只是为了完整,请确保在引用
Regions
类之前,在
index.php
中包含
Regions.php
文件:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");

首先,正确的index.php如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
您需要指出您正在对
区域
对象的特定实例调用
getRegionInfo
函数(
$regionsObj
,在上面的示例中)

其次,在这种情况下,创建公共和私有方法是没有意义的。包括额外的私有方法是不必要的,因为公共方法只调用私有方法。只需将所有代码放在public方法中。你可以:

class Regions
{

 public function getRegionInfo()
 {
    global $db;
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
第三,你不应该让你的
$db
成为一个全局变量。相反,将其作为参数发送给
区域
类的构造函数:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");
然后创建区域对象,如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
第四,您不需要自己填充结果数组。相反,您可以在
$stmt
对象上返回
fetchAll
函数的结果:

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }
您的最后一堂课,以及所有更改,将如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
最后一点,我不确定您是否只是没有包含代码的这一部分,这在另一个答案中提到过,我将在这里包含它只是为了完整,请确保在引用
Regions
类之前,在
index.php
中包含
Regions.php
文件:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");

首先,正确的index.php如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
您需要指出您正在对
区域
对象的特定实例调用
getRegionInfo
函数(
$regionsObj
,在上面的示例中)

其次,在这种情况下,创建公共和私有方法是没有意义的。包括额外的私有方法是不必要的,因为公共方法只调用私有方法。只需将所有代码放在public方法中。你可以:

class Regions
{

 public function getRegionInfo()
 {
    global $db;
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
第三,你不应该让你的
$db
成为一个全局变量。相反,将其作为参数发送给
区域
类的构造函数:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");
然后创建区域对象,如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
第四,您不需要自己填充结果数组。相反,您可以在
$stmt
对象上返回
fetchAll
函数的结果:

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }
您的最后一堂课,以及所有更改,将如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
最后一点,我不确定您是否只是没有包含代码的这一部分,这在另一个答案中提到过,我将在这里包含它只是为了完整,请确保在引用
Regions
类之前,在
index.php
中包含
Regions.php
文件:

class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
include_once("Regions.php");

首先,正确的index.php如下所示:

$regionObj = new Regions();
$regions = $regionObj->getRegionInfo();
$regionsObj = new Regions($db);
class Regions
{

 private $database;

 public function __construct(PDO $database) {
     $this->database = $database;
 }

 public function getRegionInfo()
 {
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $this->database->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt->fetchAll();
 }

}
您需要指出您正在对
区域
对象的特定实例调用
getRegionInfo
函数(
$regionsObj
,在上面的示例中)

其次,在这种情况下,创建公共和私有方法是没有意义的。包括额外的私有方法是不必要的,因为公共方法只调用私有方法。只需将所有代码放在public方法中。你可以:

class Regions
{

 public function getRegionInfo()
 {
    global $db;
    $result = array();
    $sql  = "SELECT RegionID, RegionName, IslandID FROM ref_regions";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()) 
    {
      array_push($result,array($row['RegionID'], $row['RegionName'], $row['IslandID']));
    }     
    return $result;
 }

}
第三,,