- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
最近,我习惯于将整数值分配给常量,并简单地使用常量名称作为识别其用途的一种方式。但是,在某些情况下,这导致需要在需要字符串表示时编写类似 typeToString($const) 的函数。显然,这是低效且不必要的,但这只是偶尔出现的问题。
所以我的问题是,是否还有其他我应该考虑的权衡?哪种情况被认为更清洁/更符合标准?此外,在大多数情况下,性能差异是否可以忽略不计?
情况 1:(当不需要字符串版本时更快?)
class Foo {
const USER_TYPE_ADMIN = 0;
const USER_TYPE_USER = 1;
const USER_TYPE_GUEST = 2;
public $userType = self::USER_TYPE_ADMIN;
public function __construct($type) {
$this->userType = $type;
}
public function typeToString() {
switch($this->userType) {
case self::USER_TYPE_ADMIN:
return 'admin';
break;
case self::USER_TYPE_USER:
return 'user';
break;
case self::USER_TYPE_GUEST:
return 'guest';
break;
default:
return 'unknown';
break;
}
}
}
$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->typeToString();
// Displays "guest"
情况 2:(当需要字符串版本时更快/更容易)
class Foo {
const USER_TYPE_ADMIN = 'admin';
const USER_TYPE_USER = 'user';
const USER_TYPE_GUEST = 'guest';
public $userType = self::USER_TYPE_ADMIN;
public function __construct($type) {
$this->userType = $type;
}
}
$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->userType();
// Displays "guest"
最佳答案
除非您存储大量数据,否则性能差异可以忽略不计。我会更简洁地编写 toString()
方法:
$strings = array
(
self::USER_TYPE_ADMIN => 'admin',
self::USER_TYPE_USER => 'user',
);
if (!isset($strings[$type]))
return 'unknown';
return $strings[$type];
此外,您可以将 $strings
数组设为 static
。
关于PHP 常量 : Advantages/Disadvantages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247936/
在 Advantage 中进行备份时,我们只想备份一些包含一些结构数据的表。这些表可能会在数据库更新中更改,但大多数表不会。其他表包含大量的 blob 数据:可能有 10 多场演出。 如果数据库更新出
我在 Advantage Database SQL 中遇到了一个简单的问题。 我有 M/D/YYYY 格式的日期,想将它们转换为 MM/DD/YYYY。通常在 SQL Server 中我只会使用 co
从这里安装 V10 64 位驱动程序后 http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=15在 64 位 Win
create table WEBLOG ( ORDERNO CHAR(9) NOT NULL, USERNAME CHAR(50) NOT NULL, ACTION CHAR(255) NOT NUL
我刚刚在安装 xcode 5 后第一次打开了一个 Storyboard。(通常我会打开一个带有 Storyboard的选项卡。显然 xcode 对此有所不同。现在我打开了它。)然后我被问到是否要转换
在 FoxPro 应用程序运行时使用 Advantage Local Server .Net 提供程序更新 DBF 文件是否安全,该应用程序也可能正在访问 DBF 文件?即 Advantage 是否负
如何使用 Advantage ODBC 或 OLEDB 创建从 Sql Server 到 .dbf 表的链接服务器? 最佳答案 您可以使用 OLE DB 或 ODBC 驱动程序。我通常使用 OLE D
如何使用 Advantage ODBC 或 OLEDB 创建从 Sql Server 到 .dbf 表的链接服务器? 最佳答案 您可以使用 OLE DB 或 ODBC 驱动程序。我通常使用 OLE D
我正在创建一个在 Advantage 数据库服务器上运行的 Web 应用程序,这不是我个人选择的武器,但这是公司使用的。 我有几个最终用户需要能够查看的大列表,但是我似乎无法找到一种在 SQL 中翻阅
所以我可以调用sp_ModifyDatabase( 'LOGINS_DISABLED','False' )修改LOGINS_DISABLED的状态,但我找不到您如何检查设置的当前状态。有谁知道那在哪里
将主键添加到现有生产数据库的语法是什么?我继承了一个没有为任何东西设置主键的数据库,我需要在每个表上有一个主键才能将我的 ORM 用于应用程序。 我尝试谷歌搜索无济于事,Advantage 的文档并不
我可以很容易地找到我正在使用的客户端版本,但我如何才能找到服务器版本? 有一个AdsMgGetInstallInfo ace 函数和相应的存储过程sp_mgGetInstallInfo . 这些是否需
我无法在我的程序的多个实例中打开某个表。发生的事情是我试图让用户打开并用旧表(不包含在数据字典中)替换当前表(数据字典的一部分 - FileForm.ImagesTable)。它适用于程序的一个实例,
我有一个与优势数据库配合使用的 Windows 服务,偶尔会进行一些 http 调用。在极少数情况下,这些调用可能会很长。调整我的数据库连接超时。我没有使用数据模块或任何东西。只需手动创建连接即可。
我的 Advantage 数据库中有类似的内容:- drop table #test; create table #test (x cichar(50)); insert into #test (x)
我保留了一个 Advantage TAdsConnection 对象池,并根据请求分发它们。有时我会收到一个失败信息,导致 6610 错误,我假设是因为它处于空闲状态并且连接被重置。我可以运行任何旧查
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我希望使用 DATEPART 查询 Sybase Advantage 数据库服务器。我收到一条错误消息,指出以下“未找到标量函数:datepart”。是否有另一个具有类似功能的函数?我正在寻找约会的季
我正在尝试使用 Advantage .Net 数据提供程序从 Advantage 数据库中读取数据。当我执行我的应用程序时,出现以下错误: "Error 5175 the index was crea
首先我想说,我是Java编程和Sybase的新手。 我在连接 Sybase 数据库时遇到问题。 建立连接我已经完成: 安装advantage db的jdbc驱动; 将名为 CLASSPATH 的环境变
我是一名优秀的程序员,十分优秀!