مخفف PHP Standards Recommendation یا «توصیه های استاندارد PHP» است. 21 گروه استاندارد تعریف شده از PSR-0 تا PRS-20 که برخی هاش دیپریکت شده اند
$color = "red";
echo "My car is " . $color . "<br>";
- $GLOBALS
$GLOBALS['my_var'] = "hello world!";
echo $my_var;
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
define("Hello", "Hello world!");
echo Hello;
- String
- Integer
- Float (floating point numbers - also called double)
- Boolean
- Array
- Object // classes Or objects
- NULL
- Resource
دیتاتایپ Resource یک نوع داده نیست، بلکه ذخیره reference ها در توابع و منابع خارج از php است. مثلا resource درخواست های پایگاه داده.
if (condition) {
} elseif (condition) {
} else {
}
function writeMsg() {
echo "Hello world!";
}
writeMsg();
switch (n) {
case label1:
break;
...
default:
}
$cars = array("Volvo", "BMW", "Toyota");
$firstCar = $cars[0];
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
$age['Peter'] = "35";
$multiDimensional = array ( array("Volvo",22,18), array("BMW",15,13) );
$Volvo = $multiDimensional[0][0];
while (condition is true) {
}
do {
} while (condition is true);
for ($x = 0; $x <= 10; $x++) {
if ($x != 4) {
break;
} elseif ($x == 4) {
continue;
}
}
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach($age as $x => $x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
}
<html>
<body>
<?php include 'header.php';?>
<?php require 'body.php'; ?>
<?php include 'footer.php';?>
</body>
</html>
زمانی از include استفاده میکنیم که اگر به هر دلیلی خطا خورد ( آدرس اشتباه بود یا هرچیزی) برنامه متوقف نشود ولی در require اگر خطا بخورد برنامه fatal error خورد و متوقف میشود.
توابع include_once و require_once کاملا مشابه تابع include و require عمل می کنند فقط با این تفاوت که اگر فایل قبلا یکبار خوانده شده باشد در دفعه دوم و سوم و ... دوباره خوانده نمی شوند.
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
echo json_encode($age); // {"Peter":35,"Ben":37,"Joe":43}
$cars = array("Volvo", "BMW", "Toyota");
echo json_encode($cars); // ["Volvo","BMW","Toyota"]
try {
echo divide(5, 0);
} catch(Exception $ex) {
$message = $ex->getMessage();
} finally {
echo "Process complete.";
}
class Fruit {
public $name;
protected $color;
private $weight;
// Constructor
function __construct($name) {
$this->name = $name;
}
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
// Destructor
function __destruct() {
echo "The fruit is {$this->name} and the color is {$this->color}.";
}
}
$apple = new Fruit();
$apple->set_name('Apple');
echo $banana->get_name();
$apple->color = 'Yellow'; // ERROR
if($apple instanceof Fruit) { }; // بررسی اینکه یک آبجکت مشتق شده یک کلاس است یا نه
class Apple extends Fruit { } // Inheritance
}
class SocialNetwork {
const TELEGRAM = "telegram";
const TWITTER = "twitter";
}
echo SocialNetwork::TELEGRAM;
به کلاسی که حداقل یک متد ابسترکت داشته باشد میگویند کلاس ابسترکت کلاسی است که برای تکمیل وظایفش حتما باید کلاسی از آن ارث بری کند.
abstract class ParentClass {
abstract public function someMethod1();
abstract public function someMethod2($name, $color);
}
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
متدهایی و ویژگی هایی که بدون نمونه سازی از کلاس مستقیم میشه فراخوانی کرد.
class ClassName {
public static $staticProp = "My Static Prop";
public static function staticMethod() {
echo "Hello World!";
}
}
ClassName::staticMethod();
ClassName::$staticProp;
- زبان PHP سینگل اینهرتنس است با ویژگی Traits میتوان چند اینهرتنس داشته باشیم.
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use message1;
}
$obj = new Welcome();
$obj->msg1();
- امکان ایجاد گروه بندی کلاس را محیا میکند
- اجازه میدهد دو کلاس با نام یکسان داشته باشیم.
namespace Html;
برای اتصال به پایگاه داده از دو کتابخانه PDO و MySQli میتوان استفاده کرد PDO با 12 پایگاه داده سازگار است ولی MySQLi فقط با MySQL کار میکند.
کتابخانه MySQli را میتوان به دو صورت شی گرا و رویه ای استفاده کرد مثل های زیر نوع شی گرا آن است.
$conn = new mysqli($servername, $username, $password);
$conn->connect_error; // بررسی اتصال موفقیت آمیز به دیتابیس
$conn->query($sql) // اجرای تک کوئری خروجی بولین و اگر سلکت باشد لیست برمیگرداند
$conn->multi_query($sql) // اجرای چند کوئری خورجی بولین
$conn->close();
قابلیت موثر برای مقابله با حملات SQL Injection هستند و نحوه ی کار در سه گام prepare و bind_param و execute است.
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
$stmt->execute();