簡體   English   中英

取消設置或更改已定義的常量PHP

[英]unset or change a defined constant PHP

假設我定義了一個這樣的變量:

<?php
define("page", "actual-page");
?>

現在我必須將這個內容從actual-page更改為second-page我怎么能意識到這一點?

我嘗試以下方法:

<?php
// method 1
    page = "second-page";

// method 2
    define("page", "second-page");

// method 3
    unset(page);
    define("page", "second-page");
?>

現在我的想法消失了......我還能做什么?

當你使用PHP的define()函數時,你沒有定義一個變量,你正在定義一個常量。 一旦腳本開始執行,常量就不能修改它們的值。

你可以使用runkit PECL擴展:

runkit_constant_remove('page');

http://php.net/runkit_constant_remove
http://github.com/zenovich/runkit

sudo pecl install https://github.com/downloads/zenovich/runkit/runkit-1.0.3.tgz

更新:此模塊似乎會導致其他各種問題,例如會話系統。

也許是一個非常晚的答案,但問題是“現在我的想法消失了......我還能做什么呢?”

這是你可以做的“其他” - 使用$ GLOBALS:

<?php
// method 1
    $GLOBALS['page'] = 'first-page';

// method 2
    $GLOBALS['page'] = "second-page";

// method 3
    $GLOBALS['page'] = 'third-page';
?>

我希望它有所幫助。 我在進行導入時使用它,如果導入標志打開,我希望不觸發特定事件:)

define有一個第三個參數(boolean),它將第一個定義的常量覆蓋到第二個定義的常量。 將第一個定義的常量設置為true

<?php
define("page", "actual-page", true);
// Returns page = actual-page

define("page", "second-page");
// Returns page = second-page
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM