我在OOP中非常新,并试图澄清一些事情。
这是一个带有一些属性的简单类,在代码的末尾我从类中调用了新实例$ me。我理解这一点。
<?php
// The code below creates the class
class Person {
// Creating some properties (variables tied to an object)
public $isAlive = true;
public $firstname;
public $lastname;
public $age;
// Assigning the values
public function __construct($firstname, $lastname, $age) {
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->age = $age;
}
// Creating a method (function tied to an object)
public function greet() {
return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
}
}
// Creating a new person called "boring 12345", who is 12345 years old ;-)
$me = new Person('boring', '12345', 12345);
// Printing out, what the greet method returns
echo $me->greet();
?>
通过Mysqli,我开始使用新的实例定义。类定义部分在哪里?我发现这个link并且有许多属性和方法,但我找不到属性(我相信它们是属性)$ servername,$ username等。谁定义了它们,谁定义了我必须的顺序在新的mysqli中键入它们?
$conn = new mysqli($servername, $username, $password, $dbname);
总结:如果我理解正确,Mysqli就像预定义的类,它存储在PHP的某个地方,但我仍然缺少$ servername,$ username等属性。
答案 0 :(得分:2)
PHP带来了大量所谓的“扩展”。 PHP引擎的一种插件,提供类,常量和函数的定义和实现。这些扩展(通常)是用C语言编写的,必须进行编译,因此您无法轻松修改它们。扩展通常与PHP发行版捆绑在一起,许多扩展都在标准安装中激活。
对于mysqli
课程,确实有一个mysqli
分机。必须将此类扩展加载到PHP引擎中,然后才能使用扩展提供的功能。 PHP配置文件控制在启动PHP引擎时加载哪些扩展。
存在另外两个概念,为了完整起见,我将添加它们。尽管如此说mysqli
是由扩展提供的。
某些软件包也是用PHP本身实现的,并且是这样分发的,例如“PEAR”类。这些可以安装在服务器上,您可以使用它们,但您必须通过require()
调用或类似方式从包中包含一个中心文件。
然后有一个伟大的概念“自动加载”,它允许您设置您的东西,以便PHP可以在需要时自动包含PHP代码。这通常基于您用于类的严格命名方案来完成。然后解析类名,从该信息中识别要加载的文件。 PHP然后自动加载文件,并在后台及时加载。因此名称为“自动加载”。对于更大的项目非常方便。
最后有一个“自动前置”策略有时用于此目的:您可以配置PHP,使其始终在开始解释http请求请求的实际文件之前自动加载一个或多个文件。这可以在php配置或http主机配置中完成。派上用场,可以神奇地加载数据库凭据等内容。
但如前所述:mysqli
是一个PHP扩展,通常与每个标准安装捆绑和激活。
答案 1 :(得分:1)
$ servername和$ username不是属性。该功能参数与您的Person::__construct()
一样。
如果您以相同的随机顺序将变量发送到您的person类,您将获得相同的奇怪结果,例如
&#34;您好,我的名字是33 Joe。很高兴见到你! : - )&#34 ;;
它与mysqli,属性或OOP无关。这只是函数将按功能声明中预定义的顺序使用的函数参数。
答案 2 :(得分:0)
CREATE TABLE `database_mgr`
(
`database_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`prim_cat` INT UNSIGNED NOT NULL,
`database_name` VARCHAR(20),
PRIMARY KEY (`databaseID`)
)ENGINE = InnoDB;
类是mysqli
PHP扩展的一部分。出于所有目的,您可以将其视为内置类。mysqli
附带PHP。它是捆绑式扩展。源代码位于此处:https://github.com/php/php-src/tree/master/ext/mysqli mysqli
PHP扩展为MySQL设计的API的作者,这是他/她决定应该如何:
mysqli
$conn = new mysqli($servername, $username, $password, $dbname);
(http://php.net/manual/en/mysqli.affected-rows.php)