小编Lou*_*ier的帖子

PHP定义var = one或其他(又名:$ var =($ a || $ b);)

有没有办法将php变量定义为一个或另一个就像你var x = (y||z)在javascript中一样?

获取屏幕大小,当前网页和浏览器窗口.

var width = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var height = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
Run Code Online (Sandbox Code Playgroud)

我正在发送一个post变量,我想存储它以供以后在会话中使用.我想要完成的是设置$x$_POST['x'](如果存在的话)的值,然后检查并使用$_SESSION['x']它是否存在,$x如果它们都没有设置则保留undefined;

$x = ($_POST['x'] || $_SESSION['x');
Run Code Online (Sandbox Code Playgroud)

根据http://php.net/manual/en/language.operators.logical.php

$ a = 0 || "阿瓦克"; 打印"A:$ a \n";

将打印:

答:1

在PHP中 - 而不是像Perl或JavaScript这样的语言打印"A:avacado".

这意味着你不能使用'||' 运算符设置默认值:

$ a = $ fruit || '苹果';

相反,你必须使用'?:'运算符:

$ a =($ fruit?$ fruit:'apple');

所以我必须使用额外的,如果封装?:操作如下:

if($_POST['x'] || $_SESSION['x']){ 
  $x = ($_POST['x']?$_POST['x']:$_SESSION['x']);
}
Run Code Online (Sandbox Code Playgroud)

或同等的工作:

if($_POST['x']){
  $x=$_POST['x']; …
Run Code Online (Sandbox Code Playgroud)

php variables operators

6
推荐指数
1
解决办法
668
查看次数

如果存在,如何有条件地使类使用特征?

如果可用,我希望能够使用use该特性。

显然我不能在类本身内部定义它(语法错误)

//fails
include_once('myTrait.php');

class foo
{ 
    var $bar; 

    if (trait_exists('myTrait')) {
        use myTrait;
    }
}

//also fails
foo use myTrait;

//also fails
$f = new foo();
$f use myTrait;

//also fails
$f = new foo() use myTrait;
Run Code Online (Sandbox Code Playgroud)

理想的情况是这样的:

class foo
{
    var $bar;
}

if (file_exists('myTrait.php')) {
   include_once('myTrait.php');
   //make class foo use myTrait;
}

$f=new foo();
Run Code Online (Sandbox Code Playgroud)

很难找到文档和特征似乎不是很受欢迎,但在我的特殊情况下,它们非常有用。我还尝试通过仅在需要时包含文件来尽可能降低资源。

像往常一样欢迎提示、文档和解释。


我的搜索带给我的最接近的是这篇文章http://brendan-bates.com/traits-the-right-way/

假设其中一些控制器(但不是全部)需要数据库连接。为了保持性能,我们不应该为每个控制器提供数据库连接。我们可以做的是编写一个抽象类,它扩展了提供数据库连接的 BaseController。但是,将来,如果不是控制器的对象需要数据库连接怎么办?我们可以使用水平重用,而不是复制这个逻辑。

可以创建一个简单的特征:

trait DatabaseAware 
{    
    protected $db;

    public function setDatabase($db) 
    {
        $this->db = $db;
    } …
Run Code Online (Sandbox Code Playgroud)

php traits

2
推荐指数
2
解决办法
3018
查看次数

标签 统计

php ×2

operators ×1

traits ×1

variables ×1