Go 语言面向对象编程系列教程(三) —— 为基本数据类型添加成员方法

在 Go 语言中,你可以给任意类型(包括基本类型,但不包括指针类型)添加成员方法,但是如果是基本类型的话,需要借助 type 关键字对类型进行再定义,例如: type Integer int func (a Integer) Equal(b Integer) bool { return a == b } 注意,这个时候 Integer 已经是一个新的类型了,这与 type I...

基于 Swoole 构建高性能 Laravel 应用系列 —— Swoole 驱动的 Laravel 应用优化原理及注意事项

上篇教程学院君给大家简单介绍了 Swoole 底层组件和运行原理,今天我们结合 Laravel 框架来介绍基于 Swoole 驱动的 Laravel 应用开发与传统的基于 PHP-FPM 的 Laravel 应用开发有哪些区别,在开发过程中要注意些什么。 Swoole vs. PHP-FPM 我们先来看看传统的基于 PHP-FPM 的 Laravel 应用启动和请求处理流程: 如上图所...

基于 Swoole 构建高性能 Laravel 应用系列 —— Swoole 的底层架构及运行原理

前面我们已经陆续介绍了 Swoole 提供的各种功能,回过头来再看 Swoole 官网的那句 Slogan:「面向生产环境的 PHP 异步网络通信引擎」,想必你会有更加深切的体会,有了 Swoole 扩展,我们可以在 PHP 中轻松实现多进程、异步编程和并发编程,从而开发出高性能、可扩展的 Web 应用。 接下来,我们来探讨下 Swoole 的底层架构和运行原理,以便你可以在开发过程中更...

Go 语言面向对象编程系列教程(二) —— 类的定义、初始化和成员方法

上篇教程我们简单给大家介绍了 Go 语言的类型系统,关于基础类型、复合类型以及值语义和引用语义我们前 面在数据类型系列里面已经基本都介绍过了,接下来,我们就与 Go 语言面向对象编程相关的特性展开介绍。 类的定义和初始化 Go 语言的面向对象编程与我们之前所熟悉的 PHP、Java 那一套完全不同,没有 class、extends、implements 之类的关键字和相应的概念,而是借助...

Go 语言面向对象编程系列教程(一) —— 类型系统概述

对于面向对象编程的支持,Go 语言的实现可以说是完全颠覆了以往我们对面向对象编程的认知,下面我们先通过对 Go 语言类型系统的介绍让你有一个整体的认知。 Go 语言面向对象编程设计得简洁而优雅。 简洁之处在于,Go 语言并没有沿袭传统面向对象编程中的诸多概念,比如类的继承、接口的实现、构造函数和析构函数、隐藏的 this 指针等,也没有 public、protected、private ...

基于 Laravel Prequel 扩展包通过 Web 界面管理 MySQL 数据库

简介 Laravel Prequel 是一个数据库管理工具,可以在某个 Laravel 项目中安装该扩展包,从而实现对数据库的在线管理,这样一来就可以通过它替代掉那些与项目本身分离的、需要独立安装的其它数据库管理工具了,比如 phpMyAdmin、Sequel Pro、Navicat 以及 MySQL Workbench 等。 和 phpMyAdmin 一样,Prequel 需要在浏览器...

Go 语言函数式编程系列教程(二十三) —— 函数篇:递归函数与性能优化

递归函数的编写思路 很对编程语言都支持递归函数,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多个小问题,再各个击破,在实际开发过程中,某个问题满足以下条件就可以通过递归函数来解决: 一个问题的解可以被拆分成多个子问题的解 拆分前的原问题与拆分后的子问题除了数据规模不同,求解思路完全一样 子问题存在递归终止条件 需要注意的是,编写递归函...

Go 语言函数式编程系列教程(二十二) —— 函数篇:系统内置函数

Go 语言提供了一些不需要导入任何包就可以直接使用的内置函数。我们把这些内置函数做一个简单的分类,如下表所示: 名称 说明 close 用于在管道通信中关闭一个管道 len、cap len 用于返回某个类型的长度(字符串、数组、切片、字典和管道),cap 则是容量的意思,用于返回某个类型的最大容量(只能用于数组、切片和管道) new、make new 和 make ...

Go 语言函数式编程系列教程(二十一) —— 函数篇:匿名函数与闭包

匿名函数 熟悉 Laravel 框架(一个 PHP Web 框架)的同学对匿名函数应该很熟悉,Laravel 框架中有着大量匿名函数的应用场景,比如路由定义、绑定实现到接口等: // 路由定义 Route::get('hello', function () { return '你好,欢迎访问 Laravel 学院!'; }); // 绑定实现到接口 $this->app-...

Go 语言函数式编程系列教程(二十) —— 函数篇:变长参数

所谓变长参数指的是函数参数的数量不确定,可以按照需要传递任意数量的参数到指定函数,比如 fmt.Printf 函数的参数列表显然就是个变长参数。 PHP 中的变长参数简介 PHP 函数也支持变长参数,在 PHP 5.5 及更早版本中,可以在定义函数时设置参数为空,然后在函数体中通过 func_num_args()、func_get_arg() 以及 func_get_args() 之类的...