Go 语言面向对象编程系列教程(四) —— 通过组合实现类的继承和方法重写

Go 语言不是像 PHP 等传统面向编程实现那样通过 extends 关键字来显式定义子类与父类之间的继承关系,而是通过组合方式实现类似功能,显式定义继承关系的弊端有两个:一个是导致类的层级复杂,另一个是影响了类的扩展性,设计模式里面推荐的也是通过组合来替代继承提高类的扩展性。 我们来看一个例子,现在有一个父类 Animal,有一个属性 name 用于表示名称,和三个成员方法,分别用来获...

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-...