2017-08-12 25 views
-4

PHP是否有像jquery $(this)那樣縮短代碼和重複的關鍵字或特性?

例如

// How to avoid typing same variable twice 
echo isset($_POST['foo']) ? $_POST['foo'] : ''; 

jQuery中

<script> 
    // Avoid typing $("#button-element") again 
    $("#button-element").click(function() { 
     $(this).css("border-color", "#000"); 
    }); 
</script> 
+1

但是PHP不是由ECMAScript構建的......?如果你想避免重複,使用[null coalesce operator](https://wiki.php.net/rfc/isset_ternary),即'echo $ _POST ['foo'] ?? '';',但這只是在PHP 7中。 – Terry

+1

你的'this'現在被視爲一個常量,只是你知道「this」;-)你可能正在尋找一個(PHP)OOP'$ this '但很難真正說出你想在這裏實現的目標。 –

+0

在你問這個問題之前,你有沒有試圖研究你的問題?我敢肯定,谷歌會有一些東西......如果不是,那麼這也是「不」的標誌。我真的不明白你想達到什麼或真正的目的... – NewToJS

回答

2

號和代碼不會在JS工作,要麼。

在JS中,this是 - 粗略地說 - 當前函數被稱爲方法的對象。這不是「我提到的最後一件事」。該JS相當於你的第二個代碼:如果_POST['foo']設定

_POST['foo'] ? this : '' 

會返回一個對象。它不會返回_POST['foo']的值。

有沒有像你在尋找任何語言我曾經使用過的變量。

+0

「當前函數被稱爲方法「如果我沒有錯,它在PHP中是一樣的 – btc4cash

+1

@ btc4cash PHP的'$ this'與JS'this'大致相似,但JS'this'有很多奇怪的邊緣情況,它們不適用於PHP 。 – duskwuff

-2

當然它!你需要在一個班級中構建這個。 它的工作原理與javascript ES6類中的相同。

$number = 4; 
$This = new demoThis($number); 
$This->multiplyThis(4); 

class demoThis { 

private $number; 
private $factor; 
public $result; 

    public function __construct($number) { 
     $this->number = $number; 
    } 

    function multiplyThis($factor) { 
     $this->factor = $factor; 
     $this->result = $this->number * $this->factor; 
     return $this->result; 
    } 
} 

echo isset($_POST['foo']) ? $This->result : ''; 
+2

這應該是什麼?這個問題顯然要求提供一個「內置關鍵字或功能」,而這個代碼不是。 (即使如此,我也沒有看到這個代碼與問題中的問題有什麼關係,這個問題與乘以數字無關......) – duskwuff

相關問題