一、序言

由于新公司的需要,我也就从原来的asp专向了,php的学习中。希望通过自己的学习能够尽快的熟悉了解php

二、php独特的语法特色

 1、引号问题

在php中单引号和双引号的作用基本相同,但是有些场合却又是不同的

都可以用来包含要引用字符串

<meta charset="utf-8">
<?php
$str1="xiecanyong";
$str2='xcy';
echo $str1;
echo "<br />";
echo $str2;
?>

但是单引号中的内容只被解析成为字符串,而双引号可以在字符串中加入变量

<meta charset="utf-8">
<?php
$age=",I am age 22";
$str1="xiecanyong$age";
$str2='xcy$age';
echo $str1;
echo "<br />";
echo $str2;
?>

结果就自行运行一下,这里不解释

2、PHP常量

PHP相比于ASP,存在一些系统封装好的常量,这些有利于我们的使用,同时还支持我们自行封装常量

常见的常量有:

如下一些常用的PHP系统常量:

__FILE__ 当前PHP文件名

__LINE__ 当前PHP文件中所在的行数

__FUNCTION__ 当前所执行的函数

__CLASS__ 当前所执行的类

PHP_VERSION PHP的版本

PHP_OS 当前服务器的操作系统

TRUE 同true

FALSE 同false

E_ERROR 到最近的错误处

E_WARNING 到最近的警告处

E_PARSE 语法有错误处

E_NOTICE PHP语言中有异常处

M__PI 圆周率

M__E 科学常数e

M__LOG2E 以2为底e的对数

M_LOG10E 以10为底e的对数

M_LN2 2的自然对数

M_LN10 10的自然对数

PHP系统常量的内容就介绍到这里,希望对大家有所帮助。

举个例子:

<meta charset="utf-8">
<?php
echo __Line__;
?>

打印出来的结果是:3,表示当前是在第三行执行

在常量的使用中,我们一般是这样使用的

1、使用define方法来定义

<meta charset="utf-8">
<?php
//模拟圆的面积计算
define("R", 5);
$area=R*R*pi();
echo $area;
?>

2、使用const关键字来定义
例如:const p=2;这样就确定了一个常量p,值为2

3、常量的检验

对于一个大型项目而言,我们不知道某个参数是否为变量还是常量,如果是常量的话,那么重新赋值会发生错误,所以我们要通过defined方法来检验是否为某个参数是否为常量

<meta charset="utf-8">
<?php
//$CONSTANT="2";
define("CONSTANT","2");
if (defined('CONSTANT')) {
echo CONSTANT;
}
?>

3、PHP字符串操作

下面以一个综合的PHP字符串操作来讲解一下

<meta charset="utf-8">
<?php
$str = "Hello PHP";
//获取指定字符在字符串中的位置
echo strpos($str,"P")."<br>";
//截取指定位置的字符串(从第2个字符到最后)
$str1 = substr($str,2);
//截取指定位置的字符串(从第2个字符开始往后截取3位)
$str2 = substr($str,2,2);
//以指定间距分割字符串
$str3 = str_split($str);
$str4 = str_split($str,2);
print_r($str4)."<br>";
//以指定字符分割字符串
$str = "PHP JAVA JS HTML CSS";
$str5 = explode(" ",$str);
print_r($str5)."<br>";
?>

字符串连接符

这里的字符串连接符跟其他语言的连接符有些不同,是通过"."来起到连接的,而在PHP中.=相当于其他语言的+=

错误控制运算符

PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。

<?php
$conn = @mysql_connect("localhost","username","password");
echo "出错了,错误原因是:".$php_errormsg;
?>

error_reporting(0); 禁止显示PHP警告提示

更多的字符串操作详见:http://www.jianshu.com/p/91ed5dc67977

4、可变函数

<meta charset="utf-8">
<?php
function name(){
echo "xcy";
}
$n="name";
$n();
?>

原理是:首先定义个一个name方法,然后是定义一个变量内容为name,最后一句其实就是$n()=name+(),也就是相当于执行了name这个方法

5、常见的内置函数

str_replace 可以实现字符串的替换

function_exists 判断一下函数是否存在

method_exists 可以用来检测类的方法是否存在

class_exists类是否定义可以使用

6、PHP面向对象

一个简单的PHP面向对象

<meta charset="utf-8">
<?php
//定义一个类
class Person{
//定义一个属性
public $name="liLei";
//定义一个方法
public function Hobby(){
return $this->name;
}
}
  //实例化
$per=new Person();
$per->name='xiaoLi';
echo $per->Hobby();
?>

特别注意->后面的变量不能加上"$"

一般我们常见的有public、private、protected这三个修饰符

要注意的是方法和属性也可以被static修饰,但是被修饰的方法或者是属性不可以使用->来调用,应该要换成::

<meta charset="utf-8">
<?php
//定义一个类
class Person{
//定义一个属性
static $name="LiLei";
}
error_reporting(0);
$per=new Person();
$per::name;
?>

构造函数

在PHP中也存在构造函数,但是书写上与asp有些不通过

<meta charset="utf-8">
<?php
//定义一个构造类
class Person{
public function __construct(){
echo "this is construct";
}
}
$per=new Person(); ?>

如果是继承关系中,子类可以通过parent::__construct()来调用父类的构造函数

<meta charset="utf-8">
<?php
//定义一个构造类
class Person{
public function __construct(){
echo "父类构造函数\n";
}
}
class LiLei extends Person{
public function __construct(){
parent::__construct();
echo "子类构造函数\n"; }
}
$per=new LiLei(); ?>

在static方法中,不允许使用$this来对自身的调用,应该要写成self,同时我们应该还要注意::这个符号后面的$是不能省略的

<meta charset="utf-8">
<?php
//定义一个构造类
class Person{
public function __construct(){
echo "父类构造函数\n";
}
}
class LiLei extends Person{ public function __construct(){
parent::__construct();
echo "子类构造函数\n";
}
public static $name='LiLei';
public static function GoodAt(){
return self::$name;
}
}
$per=new LiLei();
echo "<br />";
echo $per::GoodAt();
?>

_destruct(),这个方法为析构函数,但是由于PHP中存在垃圾回收机制,所以这个不常用

重载

这里的重载跟C#中方法的重载不是同一个定义,这里的重载指的是,对属性的相关操作

class Car {
private $ary = array();
//创建属性
public function __set($key, $val) {
$this->ary[$key] = $val;
}
//获取属性
public function __get($key) {
if (isset($this->ary[$key])) {
return $this->ary[$key];
}
return null;
}
//判断属性是否存在
public function __isset($key) {
if (isset($this->ary[$key])) {
return true;
}
return false;
}
//释放属性
public function __unset($key) {
unset($this->ary[$key]);
}
}
$car = new Car();
$car->name = '汽车'; //name属性动态创建并赋值
echo $car->name;

方法的重载通过 call 来实现,当调用不存在的方法的时候,将会转为参数调用call方法,当调用不存在的静态方法时会使用 __callStatic 重载。

class Car {
public $speed = 0;
public function __call($name, $args) {
if ($name == 'speedUp') {
$this->speed += 10;
}
}
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载
echo $car->speed;

其他高级的操作详见:http://www.jianshu.com/p/26ac93b6bf32

php基础入门的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. 「译」JUnit 5 系列:基础入门

    原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...

  3. .NET正则表达式基础入门

    这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...

  4. 从零3D基础入门XNA 4.0(2)——模型和BasicEffect

    [题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...

  5. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  6. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  7. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  8. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

  9. RobotFramework - 基础入门

    Robot Framework Wiki HomePage Robot Framework User Guide Robot Framework documentation Robot Framewo ...

  10. .NET ORM 的 “SOD蜜”--零基础入门篇

    PDF.NET SOD框架不仅仅是一个ORM,但是它的ORM功能是独具特色的,我在博客中已经多次介绍,但都是原理性的,可能不少初学的朋友还是觉得复杂,其实,SOD的ORM是很简单的.下面我们就采用流行 ...

随机推荐

  1. Open Auth辅助库(使用ImitateLogin实现登录)

    网络上越来越多的公司进行着自己的平台化策略,其中绝大多数都已Web API的方式对外提供服务,为了方便的使用这些服务,你不得不引用许多相关的类库,但是API的本质其实仅仅是一些约定的网络请求,我们大多 ...

  2. 使用Spring MVC 实现 国际化

    使用Spring MVC 实现 国际化     博客分类: Spring   1. 版本 Spring 3.1   2. 配置 LocaleResolver     LocaleResolver 是指 ...

  3. 单片机温度控制系统DS18B20

    单片机温度控制系统核心 由895X系列单片机来控制来驱动18b20温度传感器模块,通过编写C语言代码,来实现对模块的控制驱动,不断的接收读取18b20传过来的温度信号.将传过来的高低位字节经过个人代码 ...

  4. 怎么使PUTTY一直连接

    如何才能保证PUTTY一直连接,即使我们好长时间不去敲命令,也让它一直连接着? PuTTY的设置方法是:在Connection里面有个Seconds between keepaliaves.这里就是每 ...

  5. ubuntu编译最新版本WebKit

    好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本.可能是大家都去搞高大上的谷歌浏览器了吧. 今天就以ubuntu14.04版本作为编译环境来讲讲 ...

  6. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  7. [转]Oracle Form 触发器执行顺序

    Trigger 不是数据库中的触发器,不过功能类似,都是当某个事件发生的时候会触发. Trigger中可以编写代码,当对应事件发生的时候就会执行该Trigger中的代码. Oracle Form中的T ...

  8. LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)

    Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...

  9. 单机搭建Android开发环境(五)

    前文介绍了Android系统开发环境的搭建,本文将简单介绍Android应用开发环境的搭建. 基于Android Studio搭建应用开发环境,相比使用Eclipse简单得多.Android Stud ...

  10. POJ 1696 Space Ant --枚举,模拟,贪心,几何

    题意: 有很多点,从最右下角的点开始走起,初始方向水平向右,然后以后每步只能向左边走,问最多能走多少个点. 解法: 贪心的搞的话,肯定每次选左边的与它夹角最小的点,然后走过去. 然后就是相当于模拟地去 ...