ホームページ >バックエンド開発 >PHPチュートリアル >php の基本を始める
1. はじめに
新しい会社のニーズにより、私は元の ASP から php の学習に切り替えました。自分自身の勉強を通じて、できるだけ早く php に慣れることができれば幸いです
2. 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 定数
ASP と比較して、PHP にはシステムでカプセル化された定数がいくつかあり、これは使用に有益であり、以下のこともサポートします。定数を自分でカプセル化します
Common 定数は次のとおりです:
以下は、一般的に使用される 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 Pi
M__E 科学定数 e
M__LOG2E 底が 2 の e の対数
M_LOG10E 底が 10 の e の対数
M _LN2 2 の自然対数
M_LN10 10の自然対数
以上、PHPのシステム定数の内容をご紹介しましたが、皆様のお役に立てれば幸いです。
例:
rrree
出力される結果は次のとおりです: 3、現在 3 行目で実行されていることを示します
定数を使用する場合、通常は次のように使用します
1 を使用します。rrree
を定義するメソッド
を定義するには、const キーワードを使用します。例: const p=2; これは、定数 2
大規模なプロジェクトの場合、特定のパラメータが変数なのか定数なのかがわからないため、定数の場合は再代入時にエラーが発生するため、定義されたメソッドを使用して特定のパラメータが変数であるかどうかを確認する必要があります。は定数です
<meta charset="utf-8"><?php echo __Line__;?>
3. PHP 文字列操作
包括的な PHP 文字列操作で説明しましょう <meta charset="utf-8"><?php //模拟圆的面积计算 define("R", 5); $area=R*R*pi(); echo $area;?>
文字列連結子
ここでの文字列コネクタは、他の言語のコネクタとは多少異なります。「.」を介して接続され、PHP では、.= は他の言語の +=
に相当します。エラー制御演算子「@」。操作中にエラーが発生する可能性のある一部の式については、エラーが発生したときに顧客にエラー メッセージを表示したくありません。これはユーザーフレンドリーではありません。式によって生成されたエラー メッセージは変数 $php_errormsg に保存されます。この変数はエラーが発生するたびに上書きされるため、使用する場合はできるだけ早く確認する必要があります。
<meta charset="utf-8"><?php //$CONSTANT="2"; define("CONSTANT","2");if (defined('CONSTANT')) { echo CONSTANT;}?>
error_reporting(0); PHP 警告プロンプトの表示を抑制します 文字列操作の詳細については、http://www.jianshu.com/p/91ed5dc67977
4 を参照してください。
<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>";?>
原則は
: 最初に name メソッドを定義し、次にその内容を name として持つ変数を定義します。最後の文は実際には $n()=name+() を実行するのと同じです。名前メソッド
5. 共通の組み込み関数 str_replaceは文字列置換を実現できます
function_exists関数が存在するかどうかを判断します
method_existsはクラスのメソッドかどうかを検出するために使用できますクラス定義を使用できるかどうかは存在します"$" を付けます 一般に、一般的な修飾子は public、private、protected の 3 つです
メソッドとプロパティは静的に変更することもできますが、変更されたメソッドやプロパティは -> を使用して呼び出すことはできないことに注意してください。次のように置き換える必要があります:: <?php $conn = @mysql_connect("localhost","username","password");echo "出错了,错误原因是:".$php_errormsg;?>
Constructor
在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