如何'在PHP后端API中使用angular.js的$http服务


How to 'hit' specific function in PHP backend API with angular.js $http service?

我想知道是否有可能击中特定的功能(只是功能,而不是孔文件)与$http服务?我的$http服务看起来像这样:

$http.get('../classes/githubusers.php').then(function(response){
 $scope.gitUsers = response.data;
 console.log($scope.gitUsers);
 });

和后端API看起来像这样:

 //function to show users on Admin
 public function showGithubUsers(){
  $sql = "SELECT * FROM githubusers ORDER BY id DESC";
  $connect = new Database($username="",$password="");
  $connect->connect();
  $result = $connect->db->query($sql);
  while($row = $result -> fetch(PDO::FETCH_ASSOC)){
        $jsonVar[] = $row;
  }
  echo json_encode($jsonVar);
  //var_dump($jsonVar);
  }
  //function to show unique users from dB
  public function showUniqueUsers(){
  $sql = "SELECT * FROM githubusers";
  $connect = new Database($username="",$password="");
  $connect->connect();
  $result = $connect->db->query($sql);
  $nameArray = [];
  while($row = $result -> fetch(PDO::FETCH_ASSOC)){
      $this -> name = $row['name'];
      array_push($nameArray,  $this -> name);
  }
  $uniqueNameArray = [];
  $uniqueNameArray = array_unique($nameArray);
  echo json_encode($uniqueNameArray);
  }
  }

我想做的是从这两个PHP函数中单独获取数据,但是$http服务从githubusers.php文件中获取数据并在UI上应用错误。我试图在URL $http.get('../classes/githubusers.php/showUniqueUsers')中添加函数名,但它不起作用。

Angular http服务指向一个可访问的url,这意味着通常在后端你必须使用基于控制器的机制,在那里你可以在访问url时整理出你想要发生的每种操作。每个现有的php框架都可以做到这一点。

如果你正在创建你的自定义php文件,要么你需要使用php类和基本的__construct()函数,它将被自动调用,或者如果你不想使用类,那么你需要把函数放在单独的php文件中,并分别调用它们

不能调用函数。然而PHP足够聪明。您可以创建一个新文件或将代码添加到现有的php文件中,这些文件将根据您作为POST或GET参数传递的内容为您调用函数。

例如,你可以把js代码改成:

$http.get('../classes/githubusers.php?show=unique').then(function(response){
 $scope.gitUsers = response.data;
 console.log($scope.gitUsers);
 });

, PHP代码变成

//Can use a switch case here
if($_GET['show'] == 'unique')
  showUniqueUsers();
else if ($_GET['show'] == 'github')
  showGithubUsers();

//function to show users on Admin
 public function showGithubUsers(){
  $sql = "SELECT * FROM githubusers ORDER BY id DESC";
  $connect = new Database($username="",$password="");
  $connect->connect();
  $result = $connect->db->query($sql);
  while($row = $result -> fetch(PDO::FETCH_ASSOC)){
        $jsonVar[] = $row;
  }
  echo json_encode($jsonVar);
  //var_dump($jsonVar);
  }
  //function to show unique users from dB
  public function showUniqueUsers(){
  $sql = "SELECT * FROM githubusers";
  $connect = new Database($username="",$password="");
  $connect->connect();
  $result = $connect->db->query($sql);
  $nameArray = [];
  while($row = $result -> fetch(PDO::FETCH_ASSOC)){
      $this -> name = $row['name'];
      array_push($nameArray,  $this -> name);
  }
  $uniqueNameArray = [];
  $uniqueNameArray = array_unique($nameArray);
  echo json_encode($uniqueNameArray);
  }
  }