• 技术文章 >后端开发 >PHP问题

    php是强类型语言吗

    王林王林2019-09-19 17:56:59原创2663

    php入门到就业线上直播课:进入学习

    PHP 是一门弱类型语言

    我们注意到,不必向 PHP 声明该变量的数据类型。

    PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

    1. 先定义一些基础概念

    Program Errors

    trapped errors。导致程序终止执行,如除0,Java中数组越界访问untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址

    Forbidden Behaviours

    语言设计时,可以定义一组forbidden behaviors. 它必须包括所有untrapped errors, 但可能包含trapped errors.

    Well behaved、ill behaved

    well behaved: 如果程序执行不可能出现forbidden behaviors, 则为well behaved。

    ill behaved: 否则为ill behaved...

    2. 有了上面的概念,再讨论强、弱类型,静态、动态类型

    强、弱类型

    强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors,则该语言为strongly typed。

    弱类型weakly typed: 否则为weakly typed。比如C语言的缓冲区溢出,属于trapped errors,即属于forbidden behaviors..故C是弱类型前面的人也说了,弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生forbidden behaviours,所以是弱类型的

    动态、静态类型

    静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed;

    动态类型dynamiclly: 如果在运行时拒绝ill behaviors, 则是dynamiclly typed。

    3. 误区
    大家觉得C语言要写int a, int b之类的,Python不用写(可以直接写a, b),所以C是静态,Python是动态。这么理解是不够准确的。譬如Ocaml是静态类型的,但是也可以不用明确地写出来。Ocaml是静态隐式类型

    静态类型可以分为两种:
    如果类型是语言语法的一部分,在是explicitly typed显式类型;如果类型通过编译时推导,是implicity typed隐式类型, 比如ML和Haskell
    4.下面是些例子
    无类型: 汇编
    弱类型、静态类型 : C/C++
    弱类型、动态类型检查: Perl/PHP
    强类型、静态类型检查 :Java/C#
    强类型、动态类型检查 :Python, Scheme
    静态显式类型 :Java/C
    静态隐式类型 :Ocaml, Haskell

    以上内容仅供参考!

    推荐教程:PHP视频教程

    以上就是php是强类型语言吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php 强类型语言
    上一篇:php是面向对象还是面向过程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 对php中弱类型转换的实现• 浅谈PHP变量的8种类型以及弱类型• 谈谈PHP弱类型安全问题• PHP新分支:P++,你还敢说php是弱类型语言吗?
    1/1

    PHP中文网