几周前开始玩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()
希望这能给你一个想法。