安全矩阵

 找回密码
 立即注册
搜索
楼主: Pluto

李佳瑞学习日记

[复制链接]

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-23 23:27:48 | 显示全部楼层
本帖最后由 Pluto 于 2020-4-23 23:31 编辑

今天学习了连接数据库
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = new mysqli($servername, $username, $password);

  7. // 检测连接
  8. if ($conn->connect_error) {
  9.     die("连接失败: " . $conn->connect_error);
  10. }
  11. echo "连接成功";
  12. ?>
复制代码
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = mysqli_connect($servername, $username, $password);

  7. // 检测连接
  8. if (!$conn) {
  9.     die("Connection failed: " . mysqli_connect_error());
  10. }
  11. echo "连接成功";
  12. ?>
复制代码



我们可以用一下办法来测试PHP的MySQL数据库的连接。
使用函数 parse_ini_file() 解析配置文件 config.ini 来获得数据库连接参数,然后使用 new 关键字对 mysqli 类进行实例化,最后使用函数 mysqli_connect_errno()来判断是否成功连接上了 MySQL 数据库,实现该过程的代码如下所示:
  1. try{
  2.     //解析config.ini文件
  3.     $config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini'));
  4.     //对mysqli类进行实例化
  5.     $mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']);   
  6.     if(mysqli_connect_errno()){    //判断是否成功连接上MySQL数据库
  7.         throw new Exception('数据库连接错误!');  //如果连接错误,则抛出异常
  8.     }else{
  9.         echo '数据库连接成功!';   //打印连接成功的提示
  10.     }
  11. }catch (Exception $e){        //捕获异常
  12.     echo $e->getMessage();    //打印异常信息
  13. }
复制代码

PHP  MySQL 创建数据库
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = new mysqli($servername, $username, $password);
  7. // 检测连接
  8. if ($conn->connect_error) {
  9.     die("连接失败: " . $conn->connect_error);
  10. }

  11. // 创建数据库
  12. $sql = "CREATE DATABASE myDB";
  13. if ($conn->query($sql) === TRUE) {
  14.     echo "数据库创建成功";
  15. } else {
  16.     echo "Error creating database: " . $conn->error;
  17. }

  18. $conn->close();
  19. ?>
复制代码
补充:
  1. //php7
  2. mysqli_query($conn, "set character set 'utf8'");//读库
  3. mysqli_query($conn,"set names 'utf8'");//写库
  4. //php5
  5. mysql_query("set character set 'utf8'");//读库
  6. mysql_query("set names 'utf8'");//写库
复制代码





回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-24 23:33:42 | 显示全部楼层
PHP

常量

设置常量,使用 define() 函数,函数语法如下:

  1. bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
复制代码

该函数有三个参数:
  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

区分大小写的常量

常量值为"欢迎访问 Runoob.com":

  1. <?php
  2. // 区分大小写的常量名
  3. define("GREETING", "欢迎访问 Runoob.com");
  4. echo GREETING;    // 输出 "欢迎访问 Runoob.com"
  5. echo '<br>';
  6. echo greeting;   // 输出 "greeting"
  7. ?>
复制代码

不区分大小写的常量, 常量值为 "欢迎访问 Runoob.com":

  1. <?php
  2. // 不区分大小写的常量名
  3. define("GREETING", "欢迎访问 Runoob.com", true);
  4. echo greeting;  // 输出 "欢迎访问 Runoob.com"
  5. ?>
复制代码

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

  1. <?php
  2. define("GREETING", "欢迎访问 Runoob.com");

  3. function myTest() {
  4.     echo GREETING;
  5. }

  6. myTest();    // 输出 "欢迎访问 Runoob.com"
  7. ?>
复制代码

   Testmail
  tes***i



使用常量时,不能在常量名前添加$ 符号,不然会将常量转换成新的未定义变量使用,会导致报错。
  1. <?php
  2. define('LOG','OPEN');//定义常量,常量使用不能添加$
  3. echo $LOG;
  4. ?>
复制代码

运行结果:
  1. Notice: Undefined variable: LOG in D:\Program Files\apache-tomcat-7.0.75\webapps\myweb\test.php on line 3
复制代码
字符串变量
字符串变量用于包含有字符的值
  1. <?php
  2. $txt="Hello world!";
  3. echo $txt;
  4. ?>
复制代码
PHP 并置运算符
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
下面的实例演示了如何将两个字符串变量连接在一起:
  1. <font size="3"><?php
  2. $txt1="Hello world!";
  3. $txt2="What a nice day!";
  4. echo $txt1 . " " . $txt2;
  5. ?></font>
复制代码
输出:
  1. Hello world! What a nice day!
复制代码
PHP strlen() 函数

strlen() 函数返回字符串的长度(字节数)
  1. <?php
  2. echo strlen("Hello world!");
  3. ?>
复制代码
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
下面的实例在字符串 "Hello world!" 中查找文本 "world":
  1. <font size="3"><?php
  2. echo strpos("Hello world!","world");
  3. ?></font>
复制代码
PHP
运算符
  1. <font size="3"><?php
  2. $x=10;
  3. $y=6;
  4. echo ($x + $y); // 输出16
  5. echo '<br>';  // 换行

  6. echo ($x - $y); // 输出4
  7. echo '<br>';  // 换行

  8. echo ($x * $y); // 输出60
  9. echo '<br>';  // 换行

  10. echo ($x / $y); // 输出1.6666666666667
  11. echo '<br>';  // 换行

  12. echo ($x % $y); // 输出4
  13. echo '<br>';  // 换行

  14. echo -$x;
  15. ?></font>
复制代码
整除运算符 intdiv():
  1. <?php
  2. var_dump(intdiv(10, 3));
  3. ?>
复制代码

输出:
  1. <font size="3">int(3)</font>
复制代码
  1. <font size="3"><?php
  2. $x=10;
  3. echo $x; // 输出10

  4. $y=20;
  5. $y += 100;
  6. echo $y; // 输出120

  7. $z=50;
  8. $z -= 25;
  9. echo $z; // 输出25

  10. $i=5;
  11. $i *= 6;
  12. echo $i; // 输出30

  13. $j=10;
  14. $j /= 5;
  15. echo $j; // 输出2

  16. $k=15;
  17. $k %= 4;
  18. echo $k; // 输出3
  19. ?></font>
复制代码
  1. <font size="3"><?php
  2. $a = "Hello";
  3. $b = $a . " world!";
  4. echo $b; // 输出Hello world!

  5. $x="Hello";
  6. $x .= " world!";
  7. echo $x; // 输出Hello world!
  8. ?></font>
复制代码
PHP 递增/递减运算符
  1. <font size="3"><?php
  2. $x=10;
  3. echo ++$x; // 输出11

  4. $y=10;
  5. echo $y++; // 输出10

  6. $z=5;
  7. echo --$z; // 输出4

  8. $i=5;
  9. echo $i--; // 输出5
  10. ?></font>
复制代码















回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-25 21:00:26 | 显示全部楼层
[size=1.8em]PHP - if 语句
[size=1.8em]
[size=1.8em]
if 语句用于仅当指定条件成立时执行代码。(与python基本是一样的)
语法
  1. if (条件)
  2. {
  3.     条件成立时要执行的代码;
  4. }
复制代码
如果当前时间小于 20,下面的实例将输出 "Have a good day!":
  1. <?php
  2. $t=date("H");
  3. if ($t<"20")
  4. {
  5.     echo "Have a good day!";
  6. }
  7. ?>
复制代码
PHP - if...else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if....else 语句。
语法
  1. if (条件)
  2. {
  3. 条件成立时执行的代码;
  4. }
  5. else
  6. {
  7. 条件不成立时执行的代码;
  8. }
复制代码
如果当前时间小于 20,下面的实例将输出 "Have a good day!",否则输出 "Have a good night!":
  1. <?php
  2. $t=date("H");
  3. if ($t<"20")
  4. {
  5.     echo "Have a good day!";
  6. }
  7. else
  8. {
  9.     echo "Have a good night!";
  10. }
  11. ?>
复制代码
PHP - if...elseif....else 语句
在若干条件之一成立时执行一个代码块,请使用 if....elseif...else 语句。.
语法
  1. if (条件)
  2. {
  3.     if 条件成立时执行的代码;
  4. }
  5. elseif (条件)
  6. {
  7.     elseif 条件成立时执行的代码;
  8. }
  9. else
  10. {
  11.     条件不成立时执行的代码;
  12. }
复制代码
如果当前时间小于 10,下面的实例将输出 "Have a good morning!",如果当前时间不小于 10 且小于 20,则输出 "Have a good day!",否则输出 "Have a good night!":
  1. <?php
  2. $t=date("H");
  3. if ($t<"10")
  4. {
  5.     echo "Have a good morning!";
  6. }
  7. elseif ($t<"20")
  8. {
  9.     echo "Have a good day!";
  10. }
  11. else
  12. {
  13.     echo "Have a good night!";
  14. }
  15. ?>
复制代码
PHP Switch 语句
如果希望有选择地执行若干代码块之一使用switch语句
  1. <?php
  2. switch (n)
  3. {
  4. case label1:
  5.     如果 n=label1,此处代码将执行;
  6.     break;
  7. case label2:
  8.     如果 n=label2,此处代码将执行;
  9.     break;
  10. default:
  11.     如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
  12. }
  13. ?>
复制代码
工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。
  1. <?php
  2. $favcolor="red";
  3. switch ($favcolor)
  4. {
  5. case "red":
  6.     echo "你喜欢的颜色是红色!";
  7.     break;
  8. case "blue":
  9.     echo "你喜欢的颜色是蓝色!";
  10.     break;
  11. case "green":
  12.     echo "你喜欢的颜色是绿色!";
  13.     break;
  14. default:
  15.     echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
  16. }
  17. ?>
复制代码
在 switch 语句中漏写 break, 可能会使你的输出在你意料之外,下面我来和你们仔细讲解 break 的作用:
面的代码是正确示范,结果将是只会输出:这里是a
倘若你忘敲了 case 'a',case 'b',case 'c' 后的 break,结果将是将代码中的每一条输出语句都输出。
倘若你只敲了 case 'c' 后的 break, 结果将会是输出包含 case 'c' 之前的所有输出语句。
  1. <?php
  2. $x='a';
  3. switch ($x){
  4. case 'a':                      //变量$x的值和该种情况匹配,将从此处开始执行。
  5.     echo "这里是a"."<br>";
  6.     break;
  7. case 'b':
  8.     echo "这里是b"."<br>";
  9.     break;
  10. case 'c':
  11.     echo "这里是c"."<br>";
  12.     break;
  13. default:
  14.     echo "这里是default";
  15. }
  16. ?>
复制代码
PHP 数组
数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,array() 函数用于创建数组:
  1. array();
复制代码
在 PHP 中,有三种类型的数组:
  • 数值数组 - 带有数字 ID 键的数组
      
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
      
  • 多维数组 - 包含一个或多个数组的数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
  1. $cars=array("Volvo","BMW","Toyota");
复制代码
人工分配 ID 键:
  1. $cars[0]="Volvo";
  2. $cars[1]="BMW";
  3. $cars[2]="Toyota";
复制代码
下面的实例创建一个名为 $cars 的数值数组,并给数组分配三个元素,然后打印一段包含数组值的文本
  1. <?php
  2. $cars=array("Volvo","BMW","Toyota");
  3. echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
  4. ?>
复制代码
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
  1. <?php
  2. $cars=array("Volvo","BMW","Toyota");
  3. echo count($cars);
  4. ?>
复制代码
遍历数值数组
遍历并打印数值数组中的所有值,可以使用 for 循环,如下所示:
  1. <?php
  2. $cars=array("Volvo","BMW","Toyota");
  3. $arrlength=count($cars);

  4. for($x=0;$x<$arrlength;$x++)
  5. {
  6.     echo $cars[$x];
  7.     echo "<br>";
  8. }
  9. ?>
复制代码
PHP 关联数组
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法:
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
复制代码
或者:
  1. $age['Peter']="35";
  2. $age['Ben']="37";
  3. $age['Joe']="43";
复制代码
随后可以在脚本中使用指定的键:
  1. <?php
  2. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
  3. echo "Peter is " . $age['Peter'] . " years old.";
  4. ?>
复制代码
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:
  1. <?php
  2. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

  3. foreach($age as $x=>$x_value)
  4. {
  5.     echo "Key=" . $x . ", Value=" . $x_value;
  6.     echo "<br>";
  7. }
  8. ?>
复制代码





















回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-26 23:19:03 | 显示全部楼层
[size=2.1em]PHP
超级全局变量

GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
以下实例介绍了如何使用超级全局变量 $GLOBALS:
  1. <?php
  2. $x = 75;
  3. $y = 25;

  4. function addition()
  5. {
  6.     $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
  7. }

  8. addition();
  9. echo $z;
  10. ?>
复制代码
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
以下实例中展示了如何使用$_SERVER中的元素:
  1. <?php
  2. echo $_SERVER['PHP_SELF'];
  3. echo "<br>";
  4. echo $_SERVER['SERVER_NAME'];
  5. echo "<br>";
  6. echo $_SERVER['HTTP_HOST'];
  7. echo "<br>";
  8. echo $_SERVER['HTTP_REFERER'];
  9. echo "<br>";
  10. echo $_SERVER['HTTP_USER_AGENT'];
  11. echo "<br>";
  12. echo $_SERVER['SCRIPT_NAME'];
  13. ?>
复制代码

PHP $_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:
(这个好像类似爬虫)
  1. <html>
  2. <body>

  3. <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  4. Name: <input type="text" name="fname">
  5. <input type="submit">
  6. </form>

  7. <?php
  8. $name = $_REQUEST['fname'];
  9. echo $name;
  10. ?>

  11. </body>
  12. </html>
复制代码
PHP $_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:
  1. <html>
  2. <body>

  3. <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  4. Name: <input type="text" name="fname">
  5. <input type="submit">
  6. </form>

  7. <?php
  8. $name = $_POST['fname'];
  9. echo $name;
  10. ?>

  11. </body>
  12. </html>
复制代码
PHP $_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
$_GET 也可以收集URL中发送的数据。
假定我们有一个包含参数的超链接HTML页面:
  1. <html>
  2. <body>

  3. <a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>

  4. </body>
  5. </html>
复制代码
当用户点击链接 "Test $GET", 参数 "subject" 和 "web" 将发送至"test_get.php",你可以在 "test_get.php" 文件中使用 $_GET 变量来获取这些数据。
以下实例显示了 "test_get.php" 文件的代码:
  1. <html>
  2. <body>

  3. <?php
  4. echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
  5. ?>

  6. </body>
  7. </html>
复制代码








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-27 23:31:27 | 显示全部楼层
再次看PHP创建数据库
我首先自己联系了一下

  1. <div>这是一个登录页面 ,连接数据库的内容</div><div><?php
  2. </div>$databaseConnection = null;
  3. function getConnection(){
  4.         $hostname = "localhost";
  5.         $database = "localhost_3306";
  6.         $username = "root";
  7.         $password = " ";
  8.         global $databaseConnection;
  9.         $databaseConnection = mysql_connect($hostname,$username,$password) or die (mysql_error());
  10.         mysql_query("set names 'utf8");
  11.         mysql_select_db($database,$databaseConnection) or die (mysql_error());
  12.        
  13. }
  14. function closeConnection(){
  15.           global $databaseConnection;
  16.           if($databaseConnection){
  17.                   mysql_close($databaseConnection) or die (mysql_error());
  18.           }
  19. }
复制代码
  1. <?php
  2. include_once("data/shujuku.php");
  3. getConnection();
  4. ?>
  5. <!DOCTYPE html>
  6. <html>
  7.          <head>
  8.                  <meta charset="utf-8">
  9.                  <title>登录界面</title>                 
  10.          </head>
  11.               <body>
  12.                           <p>登录界面</p>
  13.                           <br/><br/>
  14.               <span>用户名:</span>
  15.                           <select name = "username">
  16.                                   <option value = 0>--请选择--</option>
  17.                                   <?php
  18.                                   $sql= "select username fron users";
  19.                                   $result = mysql_qery($sql);
  20.                                   while($row + mysql_fetch_array($result))
  21.                                   {
  22.                                           echo"<option value = '$row[username]'>$row[username]</option>";
  23.                                   }
  24.                                   closeConnection();
  25.                                   ?>
  26.                           </select>
  27.                           <br/><br/>
  28.                           <span>登录密码:</span>
  29.                           <input type="password" name="password" size="20" maxlength="15"/>
  30.                           <br/><br/>
  31.                           <input class="btn"type="submit"value="登录"/>
  32.                   </body>
  33. </html>
复制代码
[size=2.1em]PHP
MySQL 创建数据库

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = new mysqli($servername, $username, $password);
  7. // 检测连接
  8. if ($conn->connect_error) {
  9.     die("连接失败: " . $conn->connect_error);
  10. }

  11. // 创建数据库
  12. $sql = "CREATE DATABASE myDB";
  13. if ($conn->query($sql) === TRUE) {
  14.     echo "数据库创建成功";
  15. } else {
  16.     echo "Error creating database: " . $conn->error;
  17. }

  18. $conn->close();
  19. ?>
复制代码
当你创建一个新的数据库时,你必须为 mysqli 对象指定三个参数 (servername, username 和 password)

如果你使用其他端口(默认为3306),为数据库参数添加空字符串,如: new mysqli("localhost", "username", "password", "", port)
  1. //php7
  2. mysqli_query($conn, "set character set 'utf8'");//读库
  3. mysqli_query($conn,"set names 'utf8'");//写库
  4. //php5
  5. mysql_query("set character set 'utf8'");//读库
  6. mysql_query("set names 'utf8'");//写库
复制代码
PHP 创建 MySQL 表
一个数据表有一个唯一名称,并有行和列组成。
CREATE TABLE 语句用于创建 MySQL 表。
创建表前,我们需要使用 use myDB 来选择要操作的数据库:
  1. use myDB;
复制代码
我们将创建一个名为 "MyGuests" 的表,有 5 个列: "id", "firstname", "lastname", "email" 和 "reg_date":
  1. CREATE TABLE MyGuests (
  2.     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3.     firstname VARCHAR(30) NOT NULL,
  4.     lastname VARCHAR(30) NOT NULL,
  5.     email VARCHAR(50),
  6.     reg_date TIMESTAMP
  7. )
复制代码
在设置了数据类型后,你可以为每个列指定其他选项的属性:

           
  • NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的。
           
  • DEFAULT value - 设置默认值
           
  • UNSIGNED - 使用无符号数值类型,0 及正数
           
  • AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1
           
  • PRIMARY KEY - 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与        AUTO_INCREMENT 一起使用。
每个表都应该有一个主键(本列为 "id" 列),主键必须包含唯一的值。
以下实例展示了如何在 PHP 中创建表:
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. $dbname = "myDB";

  6. // 创建连接
  7. $conn = new mysqli($servername, $username, $password, $dbname);
  8. // 检测连接
  9. if ($conn->connect_error) {
  10.     die("连接失败: " . $conn->connect_error);
  11. }

  12. // 使用 sql 创建数据表
  13. $sql = "CREATE TABLE MyGuests (
  14. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  15. firstname VARCHAR(30) NOT NULL,
  16. lastname VARCHAR(30) NOT NULL,
  17. email VARCHAR(50),
  18. reg_date TIMESTAMP
  19. )";

  20. if ($conn->query($sql) === TRUE) {
  21.     echo "Table MyGuests created successfully";
  22. } else {
  23.     echo "创建数据表错误: " . $conn->error;
  24. }

  25. $conn->close();
  26. ?>
复制代码






回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-28 23:01:02 | 显示全部楼层
[size=1.8em]从 MySQL 数据库读取数据

[size=1.8em]SELECT 语句用于从数据表中读取数据:(基本都是SQL语句 之前看过现在看很好理解)而且where等语句和数据库里的原理基本一致
  1. SELECT column_name(s) FROM table_name
复制代码
我们可以使用 * 号来读取所有数据表中的字段:
  1. SELECT * FROM table_name
复制代码
以下实例中我们从 myDB 数据库的  MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上:
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. $dbname = "myDB";

  6. // 创建连接
  7. $conn = new mysqli($servername, $username, $password, $dbname);
  8. // Check connection
  9. if ($conn->connect_error) {
  10.     die("连接失败: " . $conn->connect_error);
  11. }

  12. $sql = "SELECT id, firstname, lastname FROM MyGuests";
  13. $result = $conn->query($sql);

  14. if ($result->num_rows > 0) {
  15.     // 输出数据
  16.     while($row = $result->fetch_assoc()) {
  17.         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  18.     }
  19. } else {
  20.     echo "0 结果";
  21. }
  22. $conn->close();
  23. ?>
复制代码
以上代码解析如下:
首先,我们设置了 SQL 语句从 MyGuests数据表中读取 id, firstname 和 lastname 三个字段。之后我们使用该 SQL 语句从数据库中取出结果集并赋给复制给变量 $result。
函数 num_rows() 判断返回的数据。
如果返回的是多条数据,函数 fetch_assoc()  将结合集放入到关联数组并循环输出。 while() 循环出结果集,并输出 id, firstname 和 lastname 三个字段值。
以下实例使用 MySQLi 面向过程的方式,效果类似以上代码:
  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. $dbname = "myDB";

  6. // 创建连接
  7. $conn = mysqli_connect($servername, $username, $password, $dbname);
  8. // Check connection
  9. if (!$conn) {
  10.     die("连接失败: " . mysqli_connect_error());
  11. }

  12. $sql = "SELECT id, firstname, lastname FROM MyGuests";
  13. $result = mysqli_query($conn, $sql);

  14. if (mysqli_num_rows($result) > 0) {
  15.     // 输出数据
  16.     while($row = mysqli_fetch_assoc($result)) {
  17.         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  18.     }
  19. } else {
  20.     echo "0 结果";
  21. }

  22. mysqli_close($conn);
  23. ?>
复制代码
WHERE 子句
WHERE 子句用于提取满足指定标准的的记录。
语法
  1. SELECT column_name(s)
  2. FROM table_name
  3. WHERE column_name operator value
复制代码
实例
下面的实例将从 "Persons" 表中选取所有 FirstName='Peter' 的行:
  1. <?php
  2. $con=mysqli_connect("localhost","username","password","database");
  3. // 检测连接
  4. if (mysqli_connect_errno())
  5. {
  6.     echo "连接失败: " . mysqli_connect_error();
  7. }

  8. $result = mysqli_query($con,"SELECT * FROM Persons
  9. WHERE FirstName='Peter'");

  10. while($row = mysqli_fetch_array($result))
  11. {
  12.     echo $row['FirstName'] . " " . $row['LastName'];
  13.     echo "<br>";
  14. }
  15. ?>
复制代码
以上代码将输出:
  1. Peter Griffin
复制代码
ORDER BY 关键词用于对记录集中的数据进行排序。
RDER BY 关键词用于对记录集中的数据进行排序。
ORDER BY 关键词默认对记录进行升序排序。
如果你想降序排序,请使用 DESC 关键字。
语法
  1. SELECT column_name(s)
  2. FROM table_name
  3. ORDER BY column_name(s) ASC|DESC
复制代码
下面的实例选取 "Persons" 表中存储的所有数据,并根据 "Age" 列对结果进行排序:
  1. <?php
  2. $con=mysqli_connect("localhost","username","password","database");
  3. // 检测连接
  4. if (mysqli_connect_errno())
  5. {
  6.     echo "连接失败: " . mysqli_connect_error();
  7. }

  8. $result = mysqli_query($con,"SELECT * FROM Persons ORDER BY age");

  9. while($row = mysqli_fetch_array($result))
  10. {
  11.     echo $row['FirstName'];
  12.     echo " " . $row['LastName'];
  13.     echo " " . $row['Age'];
  14.     echo "<br>";
  15. }

  16. mysqli_close($con);
  17. ?>
复制代码
以上结果将输出:
  1. Glenn Quagmire 33
  2. Peter Griffin 35
复制代码
根据两列进行排序
可以根据多个列进行排序。当按照多个列进行排序时,只有第一列的值相同时才使用第二列:
  1. SELECT column_name(s)
  2. FROM table_name
  3. ORDER BY column1, column2
复制代码















回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-29 20:09:08 | 显示全部楼层
UPDATE 语句用于更新数据库表中已存在的记录。

语法
  1. UPDATE table_name
  2. SET column1=value, column2=value2,...
  3. WHERE some_column=some_value
复制代码
注意 UPDATE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要更新。如果您想省去 WHERE 子句,所有的记录都会被更新!

DELETE FROM 语句用于从数据库表中删除记录。

语法
  1. DELETE FROM table_name
  2. WHERE some_column = some_value
复制代码
注释:请注意 DELETE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要删除。如果您想省去 WHERE 子句,所有的记录都会被删除

PHP $_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

$_GET 也可以收集URL中发送的数据。

假定我们有一个包含参数的超链接HTML页面:
  1. <html>
  2. <body>

  3. <a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>

  4. </body>
  5. </html>
复制代码
当用户点击链接 "Test $GET", 参数 "subject" 和 "web" 将发送至"test_get.php",你可以在 "test_get.php" 文件中使用 $_GET 变量来获取这些数据。

以下实例显示了 "test_get.php" 文件的代码:
  1. <html>
  2. <body>

  3. <?php
  4. echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
  5. ?>

  6. </body>
  7. </html>
复制代码
do...while 语句
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环
语法
  1. do
  2. {
  3.     要执行的代码;
  4. }
  5. while (条件);
复制代码
for 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块
语法
  1. for (初始值; 条件; 增量)
  2. {
  3.     要执行的代码;
  4. }
复制代码
参数:

  • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
           
  • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
           
  • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。

注释:上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1:

  1. <?php
  2. for ($i=1; $i<=5; $i++)
  3. {
  4.     echo "The number is " . $i . "<br>";
  5. }
  6. ?>
复制代码
输出:
  1. The number is 1
  2. The number is 2
  3. The number is 3
  4. The number is 4
  5. The number is 5
复制代码






回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-4-30 22:56:11 | 显示全部楼层
[size=2.1em]PHP
函数

函数是通过调用函数来执行的。

你可以在页面的任何位置调用函数。
创建 PHP 函数
语法
  1. <font size="3"><?php
  2. function functionName()
  3. {
  4.     // 要执行的代码
  5. }
  6. ?></font>
复制代码
一个简单的函数,在其被调用时能输出我的名称:
  1. <font size="3"><?php
  2. function writeName()
  3. {
  4.     echo "Kai Jim Refsnes";
  5. }

  6. echo "My name is ";
  7. writeName();
  8. ?></font>
复制代码
输出:
  1. <font size="3">My name is Kai Jim Refsnes</font>
复制代码
PHP 函数 - 添加参数
为了给函数添加更多的功能,我们可以添加参数,参数类似变量。
参数就在函数名称后面的一个括号内指定。
下面的实例将输出不同的名字,但姓是相同的:
  1. <?php
  2. function writeName($fname)
  3. {
  4.     echo $fname . " Refsnes.<br>";
  5. }

  6. echo "My name is ";
  7. writeName("Kai Jim");
  8. echo "My sister's name is ";
  9. writeName("Hege");
  10. echo "My brother's name is ";
  11. writeName("Stale");
  12. ?>
复制代码
输出:
  1. My name is Kai Jim Refsnes.
  2. My sister's name is Hege Refsnes.
  3. My brother's name is Stale Refsnes.
复制代码
实例 2
下面的函数有两个参数:
  1. <?php
  2. function writeName($fname,$punctuation)
  3. {
  4.     echo $fname . " Refsnes" . $punctuation . "<br>";
  5. }

  6. echo "My name is ";
  7. writeName("Kai Jim",".");
  8. echo "My sister's name is ";
  9. writeName("Hege","!");
  10. echo "My brother's name is ";
  11. writeName("Ståle","?");
  12. ?>
复制代码
输出:
  1. My name is Kai Jim Refsnes.
  2. My sister's name is Hege Refsnes!
  3. My brother's name is Ståle Refsnes?
复制代码
PHP 函数 - 返回值

如需让函数返回一个值,请使用 return 语句。
  1. <?php
  2. function add($x,$y)
  3. {
  4.     $total=$x+$y;
  5.     return $total;
  6. }

  7. echo "1 + 16 = " . add(1,16);
  8. ?>
复制代码
输出:
  1. 1 + 16 = 17
复制代码
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:
__LINE__
文件中的当前行号。
  1. <?php
  2. echo '这是第 " '  . __LINE__ . ' " 行';
  3. ?>
复制代码
以上实例输出结果为:
  1. 这是第 “ 2 ” 行
复制代码
__FILE__
         
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
实例:
  1. <?php
  2. echo '该文件位于 " '  . __FILE__ . ' " ';
  3. ?>
复制代码
以上实例输出结果为:
  1. 该文件位于 “ E:\wamp\www\test\index.php ”
复制代码
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
  1. <?php
  2. echo '该文件位于 " '  . __DIR__ . ' " ';
  3. ?>
复制代码
以上实例输出结果为:
  1. 该文件位于 “ E:\wamp\www\test ”
复制代码
__FUNCTION__
         
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

以上实例输出结果为:
  1. 函数名为:test
复制代码
__CLASS__
         
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
  1. <?php
  2. class test {
  3.     function _print() {
  4.         echo '类名为:'  . __CLASS__ . "<br>";
  5.         echo  '函数名为:' . __FUNCTION__ ;
  6.     }
  7. }
  8. $t = new test();
  9. $t->_print();
  10. ?>
复制代码
以上实例输出结果为:
  1. 类名为:test
  2. 函数名为:_print
复制代码
__TRAIT__
       
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
  1. <?php
  2. class Base {
  3.     public function sayHello() {
  4.         echo 'Hello ';
  5.     }
  6. }

  7. trait SayWorld {
  8.     public function sayHello() {
  9.         parent::sayHello();
  10.         echo 'World!';
  11.     }
  12. }

  13. class MyHelloWorld extends Base {
  14.     use SayWorld;
  15. }

  16. $o = new MyHelloWorld();
  17. $o->sayHello();
  18. ?>
复制代码
以上例程会输出:
  1. Hello World!
复制代码
__METHOD__
         
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
实例:
  1. <?php
  2. function test() {
  3.     echo  '函数名为:' . __METHOD__ ;
  4. }
  5. test();
  6. ?>
复制代码
以上实例输出结果为:
  1. 函数名为:test
复制代码
__NAMESPACE__
         
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
实例:
  1. <?php
  2. namespace MyProject;

  3. echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
  4. ?>
复制代码
以上实例输出结果为:
  1. 命名空间为:"MyProject"
复制代码




























回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-1 20:21:58 | 显示全部楼层
[size=2.1em]PHP 命名空间(namespace)

[size=2.1em]
PHP 命名空间可以解决以下两类问题:
  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
定义命名空间
默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。语法格式如下;

  1. <?php  
  2. // 定义代码在 'MyProject' 命名空间中  
  3. namespace MyProject;  

  4. // ... 代码 ...  
复制代码
也可以在同一个文件中定义不同的命名空间代码,如:
  1. <?php  
  2. namespace MyProject;

  3. const CONNECT_OK = 1;
  4. class Connection { /* ... */ }
  5. function connect() { /* ... */  }

  6. namespace AnotherProject;

  7. const CONNECT_OK = 1;
  8. class Connection { /* ... */ }
  9. function connect() { /* ... */  }
  10. ?>
复制代码
不建议使用这种语法在单个文件中定义多个命名空间。建议使用下面的大括号形式的语法。
  1. <?php
  2. namespace MyProject {
  3.     const CONNECT_OK = 1;
  4.     class Connection { /* ... */ }
  5.     function connect() { /* ... */  }
  6. }

  7. namespace AnotherProject {
  8.     const CONNECT_OK = 1;
  9.     class Connection { /* ... */ }
  10.     function connect() { /* ... */  }
  11. }
  12. ?>
复制代码
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,例如:
  1. <?php
  2. namespace MyProject {

  3. const CONNECT_OK = 1;
  4. class Connection { /* ... */ }
  5. function connect() { /* ... */  }
  6. }

  7. namespace { // 全局代码
  8. session_start();
  9. $a = MyProject\connect();
  10. echo MyProject\Connection::start();
  11. }
  12. ?>
复制代码
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
  1. <?php
  2. declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
  3. namespace MyProject {

  4. const CONNECT_OK = 1;
  5. class Connection { /* ... */ }
  6. function connect() { /* ... */  }
  7. }

  8. namespace { // 全局代码
  9. session_start();
  10. $a = MyProject\connect();
  11. echo MyProject\Connection::start();
  12. }
  13. ?>
复制代码
以下代码会出现语法错误:
  1. <html>
  2. <?php
  3. namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
  4. ?>
复制代码
子命名空间
与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:
  1. <?php
  2. namespace MyProject\Sub\Level;  //声明分层次的单个命名空间

  3. const CONNECT_OK = 1;
  4. class Connection { /* ... */ }
  5. function Connect() { /* ... */  }

  6. ?>
复制代码
上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。
命名空间使用
PHP 命名空间中的类名可以通过三种方式引用:
  • 非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。
  • 限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo。
  • 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。

下面是一个使用这三种方式的实例:
file1.php 文件代码
  1. <?php
  2. namespace Foo\Bar\subnamespace;

  3. const FOO = 1;
  4. function foo() {}
  5. class foo
  6. {
  7.     static function staticmethod() {}
  8. }
  9. ?>
复制代码
file2.php 文件代码
  1. <?php
  2. namespace Foo\Bar;
  3. include 'file1.php';

  4. const FOO = 2;
  5. function foo() {}
  6. class foo
  7. {
  8.     static function staticmethod() {}
  9. }

  10. /* 非限定名称 */
  11. foo(); // 解析为函数 Foo\Bar\foo
  12. foo::staticmethod(); // 解析为类 Foo\Bar\foo ,方法为 staticmethod
  13. echo FOO; // 解析为常量 Foo\Bar\FOO

  14. /* 限定名称 */
  15. subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
  16. subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
  17.                                   // 以及类的方法 staticmethod
  18. echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
  19.                                  
  20. /* 完全限定名称 */
  21. \Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
  22. \Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
  23. echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
  24. ?>
复制代码

命名空间和动态语言特征
PHP 命名空间的实现受到其语言自身的动态特征的影响。因此,如果要将下面的代码转换到命名空间中,动态访问元素。
example1.php 文件代码:
  1. <?php
  2. class classname
  3. {
  4.     function __construct()
  5.     {
  6.         echo __METHOD__,"\n";
  7.     }
  8. }
  9. function funcname()
  10. {
  11.     echo __FUNCTION__,"\n";
  12. }
  13. const constname = "global";

  14. $a = 'classname';
  15. $obj = new $a; // prints classname::__construct
  16. $b = 'funcname';
  17. $b(); // prints funcname
  18. echo constant('constname'), "\n"; // prints global
  19. ?>
复制代码
必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。
动态访问命名空间的元素
  1. <?php
  2. namespace namespacename;
  3. class classname
  4. {
  5.     function __construct()
  6.     {
  7.         echo __METHOD__,"\n";
  8.     }
  9. }
  10. function funcname()
  11. {
  12.     echo __FUNCTION__,"\n";
  13. }
  14. const constname = "namespaced";

  15. include 'example1.php';

  16. $a = 'classname';
  17. $obj = new $a; // 输出 classname::__construct
  18. $b = 'funcname';
  19. $b(); // 输出函数名
  20. echo constant('constname'), "\n"; // 输出 global

  21. /* 如果使用双引号,使用方法为 "\\namespacename\\classname"*/
  22. $a = '\namespacename\classname';
  23. $obj = new $a; // 输出 namespacename\classname::__construct
  24. $a = 'namespacename\classname';
  25. $obj = new $a; // 输出 namespacename\classname::__construct
  26. $b = 'namespacename\funcname';
  27. $b(); // 输出 namespacename\funcname
  28. $b = '\namespacename\funcname';
  29. $b(); // 输出 namespacename\funcname
  30. echo constant('\namespacename\constname'), "\n"; // 输出 namespaced
  31. echo constant('namespacename\constname'), "\n"; // 输出 namespaced
  32. ?>
复制代码
namespace关键字和__NAMESPACE__常量
PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAMESPACE__ 魔术常量和namespace关键字。
常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
__NAMESPACE__ 示例, 在命名空间中的代码
  1. <?php
  2. namespace MyProject;

  3. echo '"', __NAMESPACE__, '"'; // 输出 "MyProject"
  4. ?>
复制代码
__NAMESPACE__ 示例,全局代码
  1. <?php

  2. echo '"', __NAMESPACE__, '"'; // 输出 ""
  3. ?>
复制代码
常量 __NAMESPACE__ 在动态创建名称时很有用,例如:
使用__NAMESPACE__动态创建名称
  1. <?php
  2. namespace MyProject;

  3. function get($classname)
  4. {
  5.     $a = __NAMESPACE__ . '\\' . $classname;
  6.     return new $a;
  7. }
  8. ?>
复制代码

关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。
namespace操作符,命名空间中的代码
  1. <?php
  2. namespace MyProject;

  3. use blah\blah as mine; // see "Using namespaces: importing/aliasing"

  4. blah\mine(); // calls function blah\blah\mine()
  5. namespace\blah\mine(); // calls function MyProject\blah\mine()

  6. namespace\func(); // calls function MyProject\func()
  7. namespace\sub\func(); // calls function MyProject\sub\func()
  8. namespace\cname::method(); // calls static method "method" of class MyProject\cname
  9. $a = new namespace\sub\cname(); // instantiates object of class MyProject\sub\cname
  10. $b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b
  11. ?>
复制代码













回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-1 20:43:15 | 显示全部楼层
PHP 面向对象

在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

在现实世界里我们所面对的事情都是对象,如计算机、电视机、自行车等。

对象的主要三个特性:

  • 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
  • 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
  • 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

比如 Animal(动物) 是一个抽象类,我们可以具体到一只狗跟一只羊,而狗跟羊就是具体的对象,他们有颜色属性,可以写,可以跑等行为状态。
面向对象内容
  • − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
  • 对象 − 是类的实例。
  • 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
  • 成员函数 − 定义在类的内部,可用于访问对象的数据。
  • 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
  • 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
  • 子类 − 一个类继承其他类称为子类,也可称为派生类。
  • 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
  • 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
  • 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
  • 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
  • 构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
  • 析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。


下图中我们通过 Car 类 创建了三个对象:Mercedes, Bmw, 和 Audi。
  1. $mercedes = new Car ();
  2. $bmw = new Car ();
  3. $audi = new Car ();
复制代码
PHP 类定义
PHP 定义类通常语法格式如下:
  1. <?php
  2. class phpClass {
  3.   var $var1;
  4.   var $var2 = "constant string";
  5.   
  6.   function myfunc ($arg1, $arg2) {
  7.      [..]
  8.   }
  9.   [..]
  10. }
  11. ?>
复制代码
解析如下:
  • 类使用 class 关键字后加上类名定义。
  • 类名后的一对大括号({})内可以定义变量和方法。
  • 类的变量使用 var 来声明, 变量也可以初始化值。
  • 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

实例:
  1. <?php
  2. class Site {
  3.   /* 成员变量 */
  4.   var $url;
  5.   var $title;
  6.   
  7.   /* 成员函数 */
  8.   function setUrl($par){
  9.      $this->url = $par;
  10.   }
  11.   
  12.   function getUrl(){
  13.      echo $this->url . PHP_EOL;
  14.   }
  15.   
  16.   function setTitle($par){
  17.      $this->title = $par;
  18.   }
  19.   
  20.   function getTitle(){
  21.      echo $this->title . PHP_EOL;
  22.   }
  23. }
  24. ?>
复制代码
变量 $this 代表自身的对象。
PHP_EOL 为换行符。
PHP 中创建对象
类创建后,我们可以使用 new 运算符来实例化该类的对象:
  1. $runoob = new Site;
  2. $taobao = new Site;
  3. $google = new Site;
复制代码
以上代码我们创建了三个对象,三个对象各自都是独立的,接下来我们来看看如何访问成员方法与成员变量。
调用成员方法
在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量:
  1. // 调用成员函数,设置标题和URL
  2. $runoob->setTitle( "菜鸟教程" );
  3. $taobao->setTitle( "淘宝" );
  4. $google->setTitle( "Google 搜索" );

  5. $runoob->setUrl( 'www.runoob.com' );
  6. $taobao->setUrl( 'www.taobao.com' );
  7. $google->setUrl( 'www.google.com' );

  8. // 调用成员函数,获取标题和URL
  9. $runoob->getTitle();
  10. $taobao->getTitle();
  11. $google->getTitle();

  12. $runoob->getUrl();
  13. $taobao->getUrl();
  14. $google->getUrl();
复制代码
完整代码如下:
  1. <?php
  2. class Site {
  3.   /* 成员变量 */
  4.   var $url;
  5.   var $title;
  6.    
  7.   /* 成员函数 */
  8.   function setUrl($par){
  9.      $this->url = $par;
  10.   }
  11.    
  12.   function getUrl(){
  13.      echo $this->url . PHP_EOL;
  14.   }
  15.    
  16.   function setTitle($par){
  17.      $this->title = $par;
  18.   }
  19.    
  20.   function getTitle(){
  21.      echo $this->title . PHP_EOL;
  22.   }
  23. }

  24. $runoob = new Site;
  25. $taobao = new Site;
  26. $google = new Site;

  27. // 调用成员函数,设置标题和URL
  28. $runoob->setTitle( "菜鸟教程" );
  29. $taobao->setTitle( "淘宝" );
  30. $google->setTitle( "Google 搜索" );

  31. $runoob->setUrl( 'www.runoob.com' );
  32. $taobao->setUrl( 'www.taobao.com' );
  33. $google->setUrl( 'www.google.com' );

  34. // 调用成员函数,获取标题和URL
  35. $runoob->getTitle();
  36. $taobao->getTitle();
  37. $google->getTitle();

  38. $runoob->getUrl();
  39. $taobao->getUrl();
  40. $google->getUrl();
  41. ?>
复制代码








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 03:58 , Processed in 0.033217 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表