Download the PHP package watish/watishweb without Composer

On this page you can find all versions of the php package watish/watishweb. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package watishweb

Watish WEB

一个swoole驱动的多进程全协程的轻量Web框架

技术栈

Swoole,PHP

框架特点

环境要求

快速开始

使用Git

使用Composer

启动项目

项目的入口文件为 项目/bin/CoServer.php

使用swoole-cli (推荐)

使用php(需安装swoole拓展)

目录结构

编写一个Hello World

src/Controller目录下新建一个类,这里我们定义为HelloController

保存后,启动项目,访问 http://127.0.0.1:9502/ 便能看到

是不是很简单 😜

注解 Attribute

上下文管理 Context

不同于传统的php-fpm形式,多进程之间存在内存隔离,这意味着在进程A设定的变量进程B是无法获取的,此外,请求与请求之间并不是隔离的,也就是说,在同一进程下的两个请求,尽管在不同的协程中处理逻辑,如果都对全局变量A修改,那么全局变量会被修改两次

具体可查阅swoole文档中的 编程须知#严重错误

使用 Watish\Components\Includes\Context 可以有效规避上述问题

Context是一个静态类,不仅提供了简单的GetSet方法,还通过进程通信提供了多worker进程全局变量的GlobalSet,GlobalGet等方法

注:多worker进程全局变量设定(Context::Global_Set等方法)是基于UnixSocket异步实现的,不能保证某一时刻的数据一致,这里可以使用 Watish\Components\Utils\Table ,一个对 Swoole\Table 的封装KV内存表,可以充分利用每一行资源,并支持闭包序列化

请求 Request

当浏览器发送请求至服务器,服务器会调用handle方法,随后通过路由调度器判断请求路由是否存在,存在解析路由参数,封装至 Watish\Components\Struct\Request,传入 全局中间件 -> 局部中间件 -> 控制器

路由 Route

注册路由的两种方式

通过Prefix,Path注解注册

注:需要在 /config/server.php 中修改 register_route_auto true

Prefix类注解,定义该类下路由的前缀

Path方法注解,定义路由路径

举个栗子:

上述代码的路由如下

路径 控制器 方法 中间件
/hello/index HelloController@index ANY
/hello/user/{name} HelloController@msg GET,POST TestMiddleware
通过配置文件注册路由

路由配置文件路径为:项目/config/route.php

复用上面的栗子,则上述路由配置应如下

register方法传参如下

中间件 Middleware

注:中间件都要implement MiddlewareInterface接口

全局中间件

通过注解注册

可以通过使用 GlobalMiddleware类注解 实现全局中间件的注册

举个例子:

通过路由注册

配置文件路径为:项目/config/route.php

局部中间件

通过注解注册

可以使用 Middleware 来对控制器或者某个方法进行注解

先创建一个 TestMiddleware

然后修改 HelloController

如上,index方法和msg方法都有了局部中间件 TestMiddleware

当然,上述代码还能一下这样写,直接给HelloController添加 Middleware 注解

通过配置文件注册

参考路由章节中的配置文件路由注册方法 register 传参 ,此处不做赘述

控制器 Controller

控制器是整个业务项目的核心,负责处理请求,调用服务,返回数据

比较简单,不多描述

配合依赖注入,举个栗子:

注:暂不支持构造方法注入,后续会完善(挖坑)

服务 Service

直接贴代码

在Service中,仍然可以进行依赖注入,此外,还可以对方法进行Async注解(注意,被Async注解的方法必须是void类型)使其成为一个异步方法

命令 Command

Command类文件存放于 项目/src/Command/

注:Command类需要implement CommandInterface 接口

命令类只能使用注解注册命令

示例代码如下:

上述代码,可以通过以下方式执行

swoole-cli

PHP

注解Command的用法

Task 定时任务

Task类存放于 项目/src/Task/

注:所有的Task类都要implement TaskInterface

Task类只支持使用Crontab注解注册定时任务

示例代码如下:

这是一个每秒都会输出Hello的定时任务

Crontab注解使用方法

其中,rule为标准的crontab表达式

数据库 Database

注:暂只有mysql,redis(可自己加)

本框架使用了连接池来维护mysql,redis连接,并于启动初完成了连接池的创建,现只需在业务逻辑中使用即可

Watish\Components\Includes\Database::mysql() 返回一个对Laravel查询构造器的封装(主要是改变了底层Pdo逻辑,正常使用无差异)

Watish\Components\Includes\Database::redis() 返回一个Predis的Client

请先配置数据库! 配置文件:项目/config/database.php

其它工具

框架使用了以下组件,并对某些组件进行了封装

Watish\Components\Constructor 命名空间下,提供了对一些组件的快速构造

异步任务

AsyncTaskConstructor::make() 异步任务投递

文件系统

LocalFilesystemConstructor::getFilesystem() 本地文件系统构造器

表单验证

ValidatorConstructor::make(array $data , array $rules) Validator构造器

关于框架

框架用到的组件

感谢优秀的组件开发者

框架性能表现

测试环境:Ubuntu22.0.4 LTS

测试硬件:虚拟机(VirtualBox) 6c6t , 8192M ,开启虚拟化支持

测试工具:ApacheBench

注:不要太在意性能,真正的业务逻辑往往是复杂的,对demo进行压测并不能表明什么(图个乐)

如果好用可以点个star,如果有问题请提issue,作者会积极维护

更新于2022-12-28 16:01

常见问题

git clone下来之后怎么跑不了?

请先运行一遍composer install


All versions of watishweb with dependencies

PHP Build Version
Package Version
Requires ext-mbstring Version *
predis/predis Version ^2.0
illuminate/database Version ^9.43
ext-sockets Version *
opis/closure Version ^3.6
league/flysystem Version ^3.0
ext-pdo Version *
dragonmantank/cron-expression Version ^3.3
league/climate Version ^3.8
filp/whoops Version ^2.14
ulrichsg/getopt-php Version ^4.0
illuminate/validation Version ^9.44
nikic/fast-route Version ^1.3
swoole/ide-helper Version ~5.0.1
illuminate/contracts Version ^9.46
illuminate/view Version ^9.46
illuminate/filesystem Version ^9.51
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package watish/watishweb contains the following files

Loading the files please wait ....