php手册阅读记录


参见:http://www.phpnotes.top/2017/11/27/uncategorized/59/

可变变量:一个变量的变量名可以动态的设置和使用,例如$a='csc';$$a = 'test';echo $csc;超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用

和 superglobals 一样,常量的范围是全局的。不用管作用区域就可以在脚本的任何地方访问常量

goto 操作符仅在 PHP 5.3及以上版本有效。

以下代码结构会进入全局命名空间:

  • functions(函数)

  • classes(类)

  • interfaces(接口)

  • constants(常量,并非类常量)

  • 在函数/方法之外定义的变量

要避免递归函数/方法调用超过 100-200 层,因为可能会使堆栈崩溃从而使当前脚本终止。 无限递归可视为编程错误

类型声明:

类型声明允许函数在调用时要求参数为特定类型。 如果给出的值类型不对,那么将会产生一个错误: 在PHP 5中,这将是一个可恢复的致命错误,而在PHP 7中将会抛出一个TypeError异常。

为了指定一个类型声明,类型应该加到参数名前。这个声明可以通过将参数的默认值设为NULL来实现允许传递NULL

调用类中的可变函数时,调用静态方法时,函数调用要比静态属性优先:

<?php
class Foo
{
static $variable = 'static property';
static function Variable()
{
echo 'Method Variable called';
}
}

echo Foo::$variable; // This prints 'static property'. It does need a $variable in this scope.
$variable = "Variable";
Foo::$variable();  // This calls $foo->Variable() reading $variable in this scope.

而且还TM有这种用法

<?php
class Foo
{
static function bar()
{
echo "bar\n";
}
function baz()
{
echo "baz\n";
}
}

$func = array("Foo", "bar");
$func(); // prints "bar"
$func = array(new Foo, "baz");
$func(); // prints "baz"
$func = "Foo::bar";
$func(); // prints "bar" as of PHP 7.0.0; prior, it raised a fatal error

使用dl()函数代替在php.ini中引入扩展

<?php
// 加载一个扩展的例子,基于操作系统
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}

7.0.0PHP-FPM 模式下已禁用 dl()
5.3.9尽管不推荐,但 PHP-FPM 模式下启用了 dl()
5.3.0由于稳定性,dl() 在某些 SAPI 中被禁用。仅仅允许 dl() 的 SAPI 为 CLI 和 Embed。 使用 扩展加载指令 作为替代。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值