【问题标题】:Can you Force Type Casting in PHP?你能在 PHP 中强制类型转换吗?
【发布时间】:2014-03-10 02:38:03
【问题描述】:

我一直在网上做一些研究,似乎我的问题的答案是否定的,但我意识到有时我可能会错过某些东西或错误地搜索某些东西。我知道在像 C++ 这样的语言中,当一个变量被声明时,它可以被声明为 int 或 string。是否可以在 PHP 中强制执行此操作?

例如:

<?php
(int)$var = 5;
?>

将被验证并且不会在 PHP 中导致错误,但是:

<?php
$var = 5;
?>

将导致错误,因为它没有被转换为类型字符串、int、对象等...

我知道 PHP 的类型很松散,所以这可能不是一个选项,但是我想以这种方式使用它,以确保我适当地清理数据并通过让其他人确切知道代码发生了什么来提高可读性。我希望有一种方法可以在 php.ini 文件中强制执行此操作,或者将其加载到始终由我的程序执行的脚本中。

感谢您提供的任何帮助!

【问题讨论】:

  • 您可以创建将返回正确类型的转换变量值的类。没有使之成为可能的 ini 指令或任何其他机制。
  • 投射变量?是的。输入提示?有时。强类型变量?没有。
  • PHP 的编写是为了让我们能够简单快速地编写页面。因此,每当您声明一个变量时,PHP 都会自动将其转换为您需要的数据类型。
  • 我有一种感觉,不会有,因为这就是我最初的研究所显示的。谢谢你的回答!
  • @Wiggler Jtag:“因此,每当您声明一个变量时,PHP 都会自动将其转换为您需要的数据类型”——这实际上并不完全正确

标签: php php-ini


【解决方案1】:

PHP 是松散类型的,在声明变量时不需要您声明变量类型。你不能用神奇的php.ini 指令来改变这种行为。

“松散类型”的好处是它允许灵活性。它允许您创建动态应用程序而不必担心变量的类型——PHP 通过强制变量类型使这成为可能。

但是,如果您必须将变量转换为特定格式,只需将其转换:

$int   = (int) $foo;
$str   = (string) $foo;
$bool  = (bool) $foo;
$float = (float) $foo;
...

有一些功能可以做到这一点,例如intval()strval()boolval() - 它们都执行相同的任务,但是当您想将函数用作另一个函数的回调时,它非常有用。

【讨论】:

  • 谢谢你,我知道松散打字的好处,我个人不喜欢它们,但我认为这归结为偏好问题。我一直在寻找的主要方法是强迫自己和与我一起编程的团队在没有人为干预的情况下遵守某些原则。
  • @kccoers:嗯,PHP 是松散类型的,你无法改变它。如果你觉得 PHP 的特性违背了你的编码原则,那么千万不要使用它。
  • 这是我们正在研究的问题。我知道我们有更多的项目即将推出使用 PHP 进行销售,但未来将使用其他平台。
猜你喜欢
  • 2018-07-23
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多