在 PHP 类中传递登录详细信息


Passing login details in PHP class

几周前开始玩php类。我取得了进展,并且几乎了解它是如何工作的。但我仍然难以从另一个文件中获取数据。

我读了很多例子,但仍然不明白。

我的例子:

<?php
class test
{
   private $server;
   private $db;
   private $user;
   private $pass;
     function __construct($var1, $var2)
         {
        // do something... validate var1 and var2
        // do $this->var1=$var1; etc

          }
       // other functions
            ... 
       public function login($parameter1)
     {
       $this->new=$parameter1;
      my connection and here i would like to use 
     $this->server,
     $this->db,
        ...
     }
}
?>

我的索引.php文件:

<?php
include 'connections.php';
$class = new test(var1, var2);
$class -> login($parameter1);
?>

连接.php:

<?php
  $server = 'something';
  $db = 'something';
  $user = 'something';
  $pass = 'something';
?>

我的问题是如何从外部源在类中使用和声明连接字符串?只有一种方法可以通过new test(var1, var2, $server, ...);传递这些详细信息?还是我做错了什么?

请不要,但这个问题是重复的,因为我在问解释。

class Database{
   public static function newConnection(){
      return mysqli_connect("localhost","my_user","my_password","my_db");
   }
}
$db = new Database;
$conn = Database::newConnection
$test = new test();
$test->login($conn);

在您的登录方式

public function login($conn){
   $sql = "SELECT id, firstname, lastname FROM MyGuests";
   $result = $conn->query($sql);
   ..........
}

在 OO 中,这是一种非常常见的模式,相反,在您的类中创建新的数据库连接使其成为其他人的工作,并且只是将引用作为参数传递

如何将数据传递给类变量

class Foo{
   public $classVar1;
   public $classVar2;
   public function __construct($var1, $var2){
      $this->classVar1 = $var1;
      $this->classVar2 = $var2;
   }

现在让我们初始化 Foo clas

$foo = new Foo('var1', 'var2');

从现在开始,如果你回声

echo $foo->classVar1

您将获得输出 var1

你也可以像这样在类中使用你的类变量

public function anotherFooclass(){
   echo $this->classVar1;
}

如果调用类

$foo->otherFooClass();

您将获得输出 var1

我想到了

什么......

1) 使用定义

define('db_server', 'something');
define('db_db', 'something');
....

这定义了一个常量,该常量在任何地方都是已知的。

2) 使用参数

function login($parameter1, $server, ...)     

3)使用静态功能

public class Config {
  public static function getDbConfig() {
    return ['server' => 'something', 'db' => 'something']; 
  }
}
$dbconfig = Config::getDbConfig()

希望这能给你一个想法。