Table des matières
周一干不干活-PHP+MySQLi,-phpmysqli
Maison php教程 php手册 周一干不干活-PHP+MySQLi,-phpmysqli

周一干不干活-PHP+MySQLi,-phpmysqli

Jun 13, 2016 am 08:50 AM
mysqli

周一干不干活-PHP+MySQLi,-phpmysqli

hi

本来是雄心壮志的要干活的,哪知天有不测,早上大阴天起不来,中午又回寝室折腾衣服(做女工啊,牛不牛)没睡午觉,这样的迷糊状态,怎么科研,写这个好了。

1、PHP的OOP编程

4.7 多态

--定义

由于接口的方法实现有多种多样,这种特性称之为多态

--栗子

function eat($obj){
if($obj instanceof ICanEat){
$obj->eat("FOOD"); // 不需要知道到底是Human还是Animal,直接吃就行了
}else{
echo "Can't eat!\n";
}
}

$man = new Human();
$monkey = new Animal();

// 同样的代码,传入接口的不同实现类的时候,表现不同。这就是为什么成为多态的原因。
eat($man);
eat($monkey);

--小结

/**
* 多态
* 1. 只要某个对象实现了接口(instanceof),就可以直接在对象上调用接口的方法
*/

4.8 抽象类

--问题

连接接口的类,某些方法都是相同的,那么是否能够允许类中不实现,而是在接口中实现。

比如,人和动物吃东西不同,但呼吸相同。

--栗子

abstract class ACanEat{ //关键字改变
abstract public function eat($food);//需要类自行实现的,前面加上abstract关键字

public function breath(){
echo "Breath use the air.
";
}

}

class Human extends ACanEat{ //实现接口用implenments,这里用extends
public function eat($food){
echo "Human eating ".$food."
";
}
}

class Animal extends ACanEat{ //实现接口用implenments,这里用extends
public function eat($food){
echo "Animal eating ".$food."
";
}
}

$xiaoming=new Human();
$xiaohei=new Animal();

$xiaoming->breath();$xiaoming->eat("food");
$xiaohei->breath();$xiaohei->eat("shit");

--小结

/**
* 抽象类
* 1. 抽象类允许类里面的部分方法暂时没有具体实现,这些方法我们成为抽象方法
* 2. 一旦类里面有抽象方法,这个类就必须是抽象类
* 3. 抽象类跟接口一样,不能直接实例化为对象
*/

五、魔术方法

5.1 简介

注意所有的魔术方法前面都是两个下划线__

PHP中的OOP特有的。

比如构造函数和析构函数。

5.2 __tostring()和__invoke()

--定义

__tostring(),当对象被当作String使用时,这个方法会被自动调用;echo $obj;

__invoke(),当对象被当作方法(函数)调用时,这个方法被自动调用;$obj(4);

--栗子

/*
* tostring()魔术方法
* invoke()魔术方法
*/

class MagicTest{
public function __toString(){
return "This is the class magictest.";
}
public function __invoke($x){
echo "
".$x;
}
}
$obj=new MagicTest();
echo $obj;

$obj(5);

用法和构造函数析构函数类似。比较自动化(自动调用,即使没有声明也会调用),但同时比较容易出错,小心。

5.3 __call()和__callStatic()或重载(overloading)

--定义

当对象访问不存在的方法名称时,__call()会被自动调用;

当对象访问不存在的静态方法名称时,__callStatic()会被自动调用;

这两个方法,又称为重载(不同于重写);通过这两个方法,同一个方法的名称的调用可以对应不同的方法实现

--栗子

/*
* tostring()魔术方法
* invoke()魔术方法
*/

class MagicTest{
public function __toString(){
return "This is the class magictest.";
}
public function __invoke($x){
echo "
".$x."
";
}
public function __call($name,$arguments){ //__call的格式是固定的,第一个是方法名,第二个是方法内的参数
echo "Calling ".$name." with parameters: ".implode(",", $arguments)."
";
}
public static function __callstatic($name,$arguments){ 
echo "Static calling ".$name." with parameters: ".implode(",", $arguments)."
";
}
}
$obj=new MagicTest();
echo $obj;

$obj(5);

$obj->runTest("para1","para2");
$obj::runTest("para3","para4");

注意这里要求定义方法的时候格式是固定的。

5.4 __get()__set()__isset()__unset

--定义

这几个方法也被称为属性重载的魔术方法。

__set(),在给不可访问属性(一种是属性未定义,另一种是没有访问权限,如private)赋值时调用;

__get(),读取不可访问属性的值时调用;

__isset(),当对不可访问属性调用isset()或empty()时调用;

__unset(),。。。。。。。。。unset()。。。。。。。。。。

--栗子

/*
* tostring()魔术方法
* invoke()魔术方法
*/

class MagicTest{
public function __toString(){
return "This is the class magictest.";
}
public function __invoke($x){
echo "
".$x."
";
}
public function __call($name,$arguments){ //__call的格式是固定的,第一个是方法名,第二个是方法内的参数
echo "Calling ".$name." with parameters: ".implode(",", $arguments)."
";
}
public static function __callstatic($name,$arguments){
echo "Static calling ".$name." with parameters: ".implode(",", $arguments)."
";
}
public function __get($name){ //get要有name
return "Getting the property ".$name."
";
}
public function __set($name,$value){ //set要有名有值
echo "Setting the property ".$name." to value ".$value.".
";
}
public function __isset($name){ //判断是否定义了属性
echo "__isset invoked
";
return true;
}
public function __unset($name){ //撤销
echo "unsetting protery ".$name."
";
return true;
}
}
$obj=new MagicTest();
echo $obj;

$obj(5);

$obj->runTest("para1","para2");
$obj::runTest("para3","para4");

echo $obj->classname;
$obj->classname="shit";

echo isset($obj->classname)."
";
unset($obj->classname);echo "
";
echo empty($obj->classname)."
";

结果是

This is the class magictest.
5
Calling runTest with parameters: para1,para2
Static calling runTest with parameters: para3,para4
Getting the property classname
Setting the property classname to value shit.
__isset invoked
1
unsetting protery classname

__isset invoked

可以看到,其实isset和empty调用__isset时一对相反的操作。

然后,__set($name,$value)和__unset($name)是一对相反的操作,但所要元素不一样;

__isset($name),__get($name)都只需要名字(记住每个魔术方法的作用,理解了,就好记了)。

5.5 __clone()

--定义

就是克隆,或克隆

--栗子

先给出clone关键字的用法。

/*
* 克隆魔术方法
*/

class nbaPlayer{
public $name;
}

$james=new nbaPlayer();
$james->name='James';
echo $james->name."
";

$kobe=clone $james;
$kobe->name='Kobe';
echo $kobe->name;

clone后的,就是个单独的对象,对其操作不影响原对象。

加上__clone()

/*
* 克隆魔术方法
*/

class nbaPlayer{
public $name;

public function __clone(){
$this->name="shit";
}

}

$james=new nbaPlayer();
$james->name='James';
echo $james->name."
";

$kobe=clone $james;
echo $kobe->name."
";

$kobe->name='Kobe';
echo $kobe->name."
";

一般来说,用处在于clone后的初始化;或者说,当复制后,不想透露的某些信息的掩盖。

在工作中常用到这一个,因为常有对某个对象的操作,又不想影响原有数据,就克隆/复制一个出来。

----------------------------------------

2、MySQLi扩展

一、安装及下载

1.1 优势及简介

更新更好,PHP5及以后推荐使用(或者PDO)。

--优点

基于OOP和面向过程的使用;

支持预处理语句;

支持事务。

--其他

速度更快。安全性更好

1.2 安装及配置

--安装

配置php,开启php_mysqli.dll;

配置extension_dir='ext目录位置';

重启服务器。

(我用的是WAMP,直接打对勾就行)

--验证

/*
* 验证mysqli是否开启
*/

//phpinfo();
//2.检测扩展是否已经加载
var_dump(extension_loaded('mysqli'));
var_dump(extension_loaded('curl'));
echo '


';
//3.检测函数是否存在
var_dump(function_exists('mysqli_connect'));
echo '
';
//4.得到当前已经开启的扩展
print_r(get_loaded_extensions());
echo '
';

 

---

困了,回去洗洗睡觉。。。

 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution à l'erreur fatale PHP : appel à la fonction non définie mysqli_connect() Solution à l'erreur fatale PHP : appel à la fonction non définie mysqli_connect() Jun 23, 2023 am 09:40 AM

Lors de l'écriture d'applications Web à l'aide de PHP, une base de données MySQL est souvent utilisée pour stocker les données. PHP fournit un moyen d'interagir avec la base de données MySQL appelé MySQLi. Cependant, parfois lors de l'utilisation de MySQLi, vous rencontrerez un message d'erreur, comme indiqué ci-dessous : PHPFatalerror:Calltoundefinedfunctionmysqli_connect() Ce message d'erreur signifie que PHP ne peut pas trouver mon

Que dois-je faire si php ne parvient pas à se connecter à mysqli ? Que dois-je faire si php ne parvient pas à se connecter à mysqli ? Nov 09, 2022 am 10:07 AM

Solution à PHP incapable de se connecter à mysqli : 1. Ouvrez le fichier "php.ini" ; 2. Recherchez "mysqli.reconnect" ; 3. Remplacez "mysqli.reconnect = OFF" par "mysqli.reconnect = on".

PHP PDO vs mysqli : comparer et contraster PHP PDO vs mysqli : comparer et contraster Feb 19, 2024 pm 12:24 PM

PDOPDO est une couche d'abstraction d'accès aux bases de données orientée objet qui fournit une interface unifiée pour PHP, vous permettant d'utiliser le même code pour interagir avec différentes bases de données (telles que Mysql, postgresql, oracle). PDO masque la complexité des connexions à la base de données sous-jacente et simplifie les opérations de la base de données. Avantages et inconvénients Avantages : Interface unifiée, prend en charge plusieurs bases de données, simplifie les opérations de base de données, réduit les difficultés de développement, fournit des instructions préparées, améliore la sécurité, prend en charge le traitement des transactions. Inconvénients : les performances peuvent être légèrement inférieures à celles des extensions natives, reposent sur des bibliothèques externes, peuvent augmenter la surcharge. le code de démonstration utilise PDO Connectez-vous à la base de données MySQL : $db=newPDO("mysql:host=localhost;dbnam

Quel est le fichier en cours d'exécution de MySQL Quel est le fichier en cours d'exécution de MySQL Apr 11, 2023 am 10:38 AM

Le fichier en cours d'exécution de mysql est mysqld ; mysqld est un fichier exécutable, qui représente le programme serveur Mysql. L'exécution de ce fichier peut démarrer directement un processus serveur ; et mysqld_safe est un script de démarrage, qui appellera indirectement mysqld et démarrera également un processus de surveillance. .

Avertissement PHP : mysqli_connect() : (HY000/2002) : Solution de connexion refusée Avertissement PHP : mysqli_connect() : (HY000/2002) : Solution de connexion refusée Jun 23, 2023 am 08:54 AM

Si vous rencontrez le message d'erreur suivant lorsque vous utilisez PHP pour vous connecter à une base de données MySQL : PHPWarning:mysqli_connect():(HY000/2002):Connectionrefused, vous pouvez essayer de résoudre ce problème en suivant les étapes ci-dessous. Pour confirmer si le service MySQL fonctionne normalement, vous devez d'abord vérifier si le service MySQL fonctionne normalement. Si le service ne fonctionne pas ou ne démarre pas, cela peut provoquer une erreur de refus de connexion. peux-tu

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Solution à l'erreur fatale PHP : appel à la méthode non définie mysqli::prepare() Solution à l'erreur fatale PHP : appel à la méthode non définie mysqli::prepare() Jun 23, 2023 am 11:21 AM

Lorsque vous utilisez l'extension mysqli pour vous connecter et exploiter une base de données MySQL, vous rencontrez parfois l'erreur PHPFatalerror:Calltoundefinedmethodmysqli::prepare(). Cette erreur est généralement causée par les raisons suivantes : PHP n'a pas une prise en charge suffisante pour l'extension mysqli ; l'extension mysqli n'est pas chargée ou configurée correctement ; il y a des erreurs de syntaxe dans le code PHP ; le serveur MySQL n'est pas correctement configuré ou en cours d'exécution ;

Solution à l'erreur fatale PHP : appel à la fonction non définie mysqli_stmt_bind_param() Solution à l'erreur fatale PHP : appel à la fonction non définie mysqli_stmt_bind_param() Jun 23, 2023 am 10:43 AM

Lors du développement de sites Web utilisant PHP, les opérations de base de données sont très courantes. MySQLi est une extension couramment utilisée en PHP pour faire fonctionner les bases de données MySQL. Elle fournit une interface orientée objet relativement complète, une interface procédurale et prend en charge les opérations des instructions préparées. Mais parfois, lorsque nous utilisons les instructions préparées par mysqli, nous rencontrons une telle erreur : PHPFatalerror:Calltoundefinedfunctionmysqli_stmt_bin

See all articles