• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
smileyqp
https://github.com/smileyqp
博客园    首页    新随笔    联系   管理    订阅  订阅

PHP基础回顾(一)

PHP 能做什么?
PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据
通过 PHP,您不再限于输出 HTML。您可以输出图像、PDF 文件,甚至 Flash 电影。您还可以输出任意的文本,比如 XHTML 和 XML。


为什么使用 PHP?
* PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
* PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
* PHP 提供了广泛的数据库支持
* PHP 是免费的,可从官方的 PHP 资源下载它: www.php.net
* PHP 易于学习,并可高效地运行在服务器端

PHP 变量
与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
* 变量以$符号开始,后面跟着变量的名称
* 变量名必须以字母或者下划线字符开始
* 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
* 变量名不能包含空格
* 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

PHP 是一门弱类型语言

PHP 变量作用域
变量的作用域是脚本中变量可被引用使用的部分。
PHP 有四种不同的变量作用域:
local
global
static
parameter

PHP global 关键字
global 关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字。PHP 将所有全局变量存储在一个名为$GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

  function myTest()
{
    global $x,$y;
    $y=$x+$y;
}

  function myTest()
{
  $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 

static 关键字
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字。

echo 和 print 区别:
echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

**数组
var_dump() 函数返回数组的数据类型和值

 <?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

对象
使用class关键字声明类对象。类是可以包含属性和方法的结构。

  <?php
    class Car
  {
  var $color;
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>

常量

<?php
define("GREETING", "欢迎访问 Runoob.com");
function myTest() {
echo GREETING;
} 
myTest();    // 输出 "欢迎访问 Runoob.com"
?>

字符串连接
并置运算符 (.) 用于把两个字符串值连接起来。

PHP strlen() 函数
strlen() 函数返回字符串的长度(字符数)。

 <?php
  echo strlen("Hello world!");
?> 

PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

 <?php
  echo strpos("Hello world!","world");
 ?> 

遍历数组for循环

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars); 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

遍历关联数组foreach

<?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

数组排序(冒泡排序)
PHP 数组排序函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

<?php
// 从大到小排序。冒泡排序。
$numArray =array(3,2,6,5,8,10);
$numCount = count($numArray);
for($i=$numCount-1;$i>=0;$i--){
    for($j=0;$j<$i;$j++){
        if($numArray[$j]< $numArray[$j+1]){
            $aa = $numArray[$j+1];
            $numArray[$j+1]=$numArray[$j];
            $numArray[$j]=$aa;
        }
    }
}
print_r($numArray);
?>

超级全局变量
PHP中预定义了几个超级全局变(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 不需要特别说明,就可以在函数及类中使用。PHP 超级全局变量列表:
$GLOBALS $_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION

PHP $GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

<?php 
$x = 75; 
$y = 25; 
function addition() 
{ 
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
} 
addition(); 
echo $z; 
?>

PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

PHP $_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据(通过$_REQUES[’ ‘]拿到表单提交的数据):

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>

PHP $_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”post”。用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件

PHP $_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”get”。
$_GET 也可以收集URL中发送的数据。

foreach 循环

 <?php
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "<br>";
}
?>

PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:
- __LINE__文件中的当前行号。
- __FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
- __DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
- __FUNCTION__函数名称
- __CLASS__类的名称
- __TRAIT__***代码复用的一个方法,称为 traits(相当于java中继承,继承父类的方法,以及重写父类的方法等*)。

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
} 
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
class MyHelloWorld extends Base {
    use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();
?>
//输出Hello World!
  • __METHOD__类的方法名。返回该方法被定义时的名字(区分大小写)。
  • __NAMESPACE__当前命名空间的名称(区分大小写)。此常量是在编译时定义的

PHP 命名空间(namespace)
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

  • 命名空间通过关键字namespace 来声明
  • 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
  • 与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。

PHP 面向对象(类比java)
- PHP 类定义: class Site(){…}
- PHP 中创建对象: $runoob = new Site;
- 调用成员方法: $runoob->getUrl();
- PHP 构造函数: void __construct (){…}
- 析构函数: 对象结束其生命周期时系统自动执行析构函数。
function __destruct() {
print “销毁 ” . $this->name . “\n”;
}
- 继承:
class Child extends Parent {…}
- 方法重写: 对父类的方法进行改写覆盖override)
- 访问控制: 关键字 public,protected或 private
- 接口: 用interface指定,其类用implements实现。接口像定义一个标准的类一样,但其中定义所有的方法都是空的。
- 常量: 定义和使用常量的时候不需要使用 $ 符号
- 抽象类:
1、至少有一个方法是被声明为抽象的
2、不能被实例化
3、继承(extend)一个抽象类的时候,子类必须定义父类中的所有抽象方法
- Static 关键字:
1、声明类属性或方法为 static(静态),就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
2、由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
3、静态属性不可以由对象通过 -> 操作符来访问。
- Final 关键字:父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承
- 调用父类构造方法:需要在子类的构造方法中调用 parent::__construct()

posted @ 2018-09-15 16:02  smileyqp  阅读(140)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3