PHP:从另一个扩展类文件调用另一个公共类方法
如何从另一个扩展类文件调用公共类函数,因为这个问题是api.php。我希望能够从api.php类api扩展rest调用track.php中的PHP:从另一个扩展类文件调用另一个公共类方法,php,Php,如何从另一个扩展类文件调用公共类函数,因为这个问题是api.php。我希望能够从api.php类api扩展rest调用track.php中的公共函数track_osc_delivery(){}。请看下面的代码,修复起来很困难,我尝试将api.php包含到track.php中,但这对解决它没有任何好处 //rest.php class Rest { protected $request; protected $serviceName; protected $param;
公共函数track_osc_delivery(){}
。请看下面的代码,修复起来很困难,我尝试将api.php包含到track.php中,但这对解决它没有任何好处
//rest.php
class Rest {
protected $request;
protected $serviceName;
protected $param;
public function __construct(){
if($_SERVER['REQUEST_METHOD'] !== 'POST'){
$this->throwError(REQUEST_METHOD_NOT_VALID, 'Request Method is not valid');
}
$handler = fopen('php://input', 'r');
$this->request = stream_get_contents($handler);
$this->validateRequest();
}
public function validateParameter($fieldName, $value, $dataType, $required = true){
}
public function processApi(){
$api = new API;
$rMethod = new reflectionMethod('API', $this->serviceName);
if(!method_exists($api, $this->serviceName)){
$this->throwError(API_DOST_NOT_EXIST, "API does not exist");
}
$rMethod->invoke($api);
}
}
//api.php
class Api extends Rest {
public $dbConn;
public function __construct(){
parent::__construct();
$db = new DbConnect;
$this->dbConn = $db->connect();
}
public function track_osc_delivery(){
$waybill_number = $this->validateParameter('track_waybill_number', $this->param['track_waybill_number'], STRING, true);
$password_for_shipments = $this->validateParameter('track_password_sent', $this->param['track_password_sent'], STRING, true);
}
}
//track.php
require_once('functions.php');
$api = new Api;
$api->processApi();
//WANT TO CALL public function track_osc_delivery() here
//functions.php
spl_autoload_register(function($className){
$path = strtolower($className) . ".php";
if(file_exists($path)){
require_once($path);
} else {
echo "File $path is not found.";
exit();
}
试试这个,在track.php中它应该可以工作,正如Loek所说,它是继承的,至于process api,它也可以包含在脚本中 从更改代码
require_once('functions.php');
$api = new Api;
$api->processApi();
到
快乐编码…试试这个,它应该可以工作,在track.php中,正如Loek所说,它是继承的,至于process api,它也可以包含在脚本中 从更改代码
require_once('functions.php');
$api = new Api;
$api->processApi();
到
愉快的编码…据我所知,我认为这将通过作用域解析操作符以及直接使用$api->track_osc_delivery()实现
我已经删除了一些函数的内部代码以防止出错 (1) rest.php
(2) api.php
(3) track.php
请随意询问。据我了解,您的问题是,我认为这将通过scope resolution operator和直接使用$api->track_osc_delivery()实现的
我已经删除了一些函数的内部代码以防止出错 (1) rest.php
(2) api.php
(3) track.php
请随意询问。
$api->track\u osc\u delivery()
。@loek谢谢,这是否意味着processAPi()无效否processApi()
是继承的,所以您可以像使用它一样使用它。请保持您的问题的原子性和简洁性,这完全是另一个问题,您自己也几乎完全回答了这个问题。为这个问题创建另一个问题是您确实遇到了问题。$api->track\u osc\u delivery()
。?@loek谢谢,这是否意味着processAPi()无效否processApi()
是继承的,所以您可以像使用它一样使用它。请保持您的问题的原子性和简洁性,这完全是另一个问题,您自己也几乎完全回答了这个问题。为此再提出一个问题:你真的遇到了问题。
<?php
class Rest {
protected $request;
protected $serviceName;
protected $param;
public function __construct(){
}
public function validateParameter($fieldName, $value, $dataType, $required = true)
{ }
public function processApi(){
$api = new API;
return $api;
}
}
?>
<?php
require_once('rest.php');
class Api extends Rest {
public $dbConn;
public function __construct(){
parent::__construct();
}
public function track_osc_delivery(){
return "function called";
}
}
?>
<?php
require_once('api.php');
$api = new Api;
echo "<pre>";
print_r($api);
echo "</pre>";
$api->processApi();
//echo $api->track_osc_delivery(); //this will also worked.
$test = $api::track_osc_delivery();
echo $test;
?>