首页 > 解决方案 > 在初始化期间在另一个常量中使用一个常量

问题描述

我有以下课程:

class RemoteService {

    const BASE_URL = "...";
    const SEARCH_URL = self::BASE_URL . "search";

    const MIN_PAGE_SIZE = 0;
    const MAX_PAGE_SIZE = 100;

    const ERROR_INVALID_PAGE_SIZE = sprintf('page size must be between %d and %d', self::MIN_PAGE_SIZE, self::MAX_PAGE_SIZE);

    ...
}

我可以BASE_URL在初始化时使用SEARCH_URL。但是,我不能使用MIN_PAGE_SIZEand MAX_PAGE_SIZEinsprintf()来初始化ERROR_INVALID_PAGE_SIZE并得到以下错误:

Fatal error: Constant expression contains invalid operation

这是什么原因?第一部分中的串联是克服这个问题的唯一方法吗?

标签: php

解决方案


你必须使用连接。文档说:

该值必须是常量表达式,而不是(例如)变量、属性或函数调用

所以你不能打电话sprintf()


推荐阅读