Php 访问类方法/函数
我有一个index.php和一个Regions.php,这是一个类。我试图从Regions类调用一个方法到我的index.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();
调用第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;
}
}
第三,,