- #1734 Fixed the bug that the morph association is empty and cannot be queried.
- #1739 Fixed the wrong bitwise operator in oss hook.
- #1743 Fixed the wrong
refId
forgrafana.json
. - #1748 Fixed
concurrent.limit
does not works when using another pool. - #1750 Fixed the incorrent number of current connections when close failed.
- #1754 Fixed the wrong start info for base server.
- #1764 Fixed datetime validate failed when the value is null.
- #1769 Fixed a notice when client initiate disconnects in
socketio-server
.
- #1724 Added
Model::orWhereHasMorph
,Model::whereDoesntHaveMorph
andModel::orWhereDoesntHaveMorph
. - #1741 Added
Hyperf\Command\Command::choiceMultiple(): array
method, because the return type ofchoice
method isstring
, so the methed cannot handle the multiple selections, even though setted$multiple
argument. - #1742 Added Custom Casts for model.
- Added interface
Castable
,CastsAttributes
andCastsInboundAttributes
. - Added
Model\Builder::withCasts
. - Added
Model::loadMorph
,Model::loadMorphCount
andModel::syncAttributes
.
- Added interface
- #1723 Added filp/whoops integration in hyperf/exception-handler component.
- #1730 Added shortcut
-R
of--refresh-fillable
for commandgen:model
.
- #1696 Fixed
Context::copy
does not works when use keys. - #1708 #1718 Fixed a series of issues for
hyperf/socketio-server
.
- #1710 Don't set process title in Darwin OS.
- #1616 Added
morphWith
andwhereHasMorph
for hyperf/database component. - #1651 Added socket.io-server component.
- #1666 #1669 Added support for AMQP RPC mode.
- #1682 Fixed the connection pool does not works in JSONRPC pool transporter.
- #1683 Fixed JSONRPC client connection reset failed, when the connection was closed in context.
- #1670 Optimized a meaningless redis delete instruction for cache component.
- #1645 Added parameter injection support for closure route.
- #1647 Added
Hyperf\ModelCache\Handler\RedisStringHandler
for hyperf/model-cache component, store the cache data in string type. - #1654 Added
Hyperf\View\Exception\RenderException
to rethrow render exceptions in view.
- #1639 Fixed bug that the unhealthy node will be got from
consul
. - #1641 Fixed request exception will be thrown when the JSONRPC result is null.
- #1641 Fixed service health check does not works for
jsonrpc-tcp-length-check
protocol. - #1650 Fixed bug that command
describe:routes
will show the wrong list. - #1655 Fixed
MysqlProcessor::processColumns
does not work when the MySQL server is 8.0 version.
- #1636 Optimized
co-phpunit
do not broken in coroutine environment, when cases failed.
- #1575 Added document of property with relation, scope and attributes.
- #1586 Added conflict of symfony/event-dispatcher which < 4.3.
- #1597 Added
maxConsumption
for amqp consumer. - #1603 Added WebSocket Context to save data from the same fd.
- #1553 Fixed the rpc client do not work, when jsonrpc server register the same service to consul with jsonrpc and jsonrpc-http protocol.
- #1589 Fixed unsafe file locks in coroutines.
- #1607 Fixed bug that the return value of function
go
is not adaptive withswoole
. - #1624 Fixed
describe:routes
failed when router handler isClosure
.
- #1578 Support
getStream
method inUploadedFile.php
.
- #1603 Added connection level context for
hyperf/websocket-server
.
- #1563 Fixed crontab's
onOneServer
option not resetting mutex on shutdown. - #1565 Reset transaction level to zero, when reconnent to mysql server.
- #1572 Fixed parent class does not exists in
Hyperf\GrpcServer\CoreMiddleware
. - #1577 Fixed
describe:routes
command'sserver
option not take effect. - #1579 Fixed
migrate:refresh
command'sstep
is int.
- #1560 Changed functions of file to
filesystem
forFileSystemDriver
inhyperf/cache
. - #1568 Changed
\Redis
toRedisProxy
forRedisDriver
inasync-queue
.
- #1532 Fixed interface 'Symfony\Component\EventDispatcher\EventDispatcherInterface' not found.
- #1501 Bridged Symfony command events to Hyperf event dispatcher.
- #1502 Added
maxAttempts
parameter forHyperf\AsyncQueue\Annotation\AsyncQueueMessage
annotation to control the maximum retry time of job. - #1510 Added
Hyperf/Utils/CoordinatorManager
to better handling of graceful start and graceful stop. - #1517 Added support lazy-loading over interface inheritance and abstract method inheritance etc.
- #1529 Handled SameSite property of response cookies.
- #1494 Ignore
@mixin
annotation in redis component. - #1499 Fixed dynamic parameter does not work after requiring translation for
hyperf/constants
. - #1504 Fixed the proxy client of RPC does not handle the Nullable return type.
- #1507 Fixed consul catalog register method, modified to PUT from GET.
- #1467 Added default configuration for filesystem component.
- #1469 Added method
getHandler()
forHyperf/Guzzle/HandlerStackFactory
and usemake()
function to create the handler instead ofnew
operator when it is possible. - #1480 RPC client will generate the methods of inherited interface automatically now.
- #1471 Fixed data recved failed, when the body is larger than max-output-buffer-size.
- #1472 Fixed consume failed when publish message in consumer of NSQ.
- #1474 Fixed the consumer of NSQ will restart when requeue message.
- #1477 Fixed Invalid argument supplied for
Hyperf\Testing\Client::flushContext
.
- #1481 Creating message with
make
instead ofnew
forasync-queue
.
- #1440 Added config
enable
of every NSQ connection to control the consumer whether they start automatically. - #1451 Added Filesystem component.
- #1459 Support macroable model, as laravel does.
- #1463 Added option
on_stats
for guzzle handler.
- #1445 Fixed command describe:route missing variable route.
- #1449 Fixed memory overflow for high cardinality request path.
- #1454 Fixed
flatten()
failed, bacauseINF
isfloat
. - #1458 Fixed guzzle handler not support elasticsearch which version is larger than 7.0.
- #1393 Implemented more methods for
Hyperf\HttpMessage\Stream\SwooleStream
. - #1419 Allow config fetcher to start in a coroutine instead of a process.
- #1424 Allow user modify the session_name by configuration file.
- #1435 Added config
use_default_value
for model-cache to correct the cache data with database data automatically. - #1436 Added
isEnable()
for NSQ Consumer to control the consumer whether they start automatically.
- #1402 Added
Hyperf\DbConnection\Annotation\Transactional
annotation to begin a transaction automatically. - #1412 Added
Hyperf\View\RenderInterface::getContents()
method to get the contents of view render directly. - #1416 Added Swoole event constant
ON_WORKER_ERROR
.
- #1405 Fixed the cached attributes are not right, when the model has property
hidden
. - #1410 Fixed tracer cannot trace the call chains of redis connection that created by
Hyperf\Redis\RedisFactory
. - #1415 Fixed the bug that Aliyun acm client decode sts token failed when optional header
SecurityToken
is empty.
- #1339 #1394 Added
describe:routes
command to describe the routes information by command. - #1354 Added ecs ram authorization for
config-aliyun-acm
. - #1362 Added
getPoolNames()
method forHyperf\Pool\SimplePool\PoolFactory
. - #1371 Added
Hyperf\DB\DB::connection()
to use the specified connection.
- #1384 Added option
property-case
for commandgen:model
.
- #1386 Fixed variadic arguments do not work in async message annotation.
- #1305 Added pre-made
Grafana
dashboard forhyperf\metric
. - #1328 Added
ModelRewriteInheritanceVisitor
to rewrite the model inheritance for commandgen:model
. - #1331 Added
Hyperf\LoadBalancer\LoadBalancerInterface::getNodes()
. - #1335 Added event
AfterExecute
forcommand
. - #1361 Added config of
processors
for logger.
- #1324
Hyperf\AsyncQueue\Listener\QueueLengthListener
is no longer as the default listener of hyperf/async-queue.
- #1305 Optimize edge cases in
hyperf\metric
. - #1322 HTTP Server Handle HEAD request automatically, now will not response the body on HEAD request.'
- #1303 Deleted useless
$httpMethod
forHyperf\RpcServer\Router\Router
.
- #1330 Fixed bug when using
(new Parallel())->add($callback, $key)
and the parameter$key
is a not string index, the returned result will sort$key
from 0. - #1338 Fixed bug that root settings do not works when the slave servers set their own settings.
- #1344 Fixed bug that queue length check every time when not set max messages.
- #1288 Added driver object into
Hyperf\AsyncQueue\Event\QueueLength
event as the first parameter - #1292 Added
Hyperf\Database\Schema\ForeignKeyDefinition
for return type ofHyperf\Database\Schema\Blueprint::foreign()
method. - #1313 Added Command mode support to
hyperf\crontab
. - #1321 Added hyperf/nsq component, NSQ is a realtime distributed messaging platform.
- #1291 Fixed
$_SERVER
has lower keys for super-globals. - #1302 Fixed JSONRPC reconnect failed, when the node is invalid.
- #1308 Fixed some missing traslation of validation, like gt, gte, ipv4, ipv6, lt, lte, mimetypes, not_regex, starts_with, uuid.
- #1310 Fixed register failed because has the exactly same service.
- #1315 Fixed the missing config variable for
Hyperf\AsyncQueue\Process\ConsumerProcess
.
- #1263 Added Event
QueueLength
for async-queue. - #1276 Added ACL token for Consul client.
- #1277 Added NoOp Driver to hyperf/metric.
- #1262 Fixed bug that socket of keepaliveIO always exhausted.
- #1266 Fixed bug that process does not restart when use timer.
- #1272 Fixed bug that request id will be checked failed, when the id is null.
- #1273 Optimized grpc client.
- gRPC client now automatically reconnects to the server after disconnection.
- When gRPC client is garbage collected, the connection is automatically closed.
- Fixed a bug where a closed gRPC client still holds the underlying http2 connection.
- Fixed a bug where channel pool for gRPC may contain non-empty channels.
- gRPC client now initializes itself lazily, so it can be used in constructor and container.
- #1286 Removed phpstan/phpstan requires from require-dev.
- #1258 Fixed CRITICAL error that socket of process is unavailable when amqp send heartbeat failed.
- #1260 Fixed json rpc connection confused.
- #1166 Added KeepaliveIO for amqp.
- #1208 Added exception code
error.data.code
to json-rpc response. - #1208 Added
recv
method toHyperf\Rpc\Contract\TransporterInterface
. - #1215 Added super-globals component.
- #1219 Added property
enable
for amqp consumer, which controls whether consumers should start along with the service.
- #1208 Fixed bug that exception and error cannot be resolved successfully in TcpServer.
- #1208 Fixed bug that json-rpc has not validated the request id whether is equal to response id.
- #1223 Fixed the scanner will missing the packages at require-dev of composer.json
- #1254 Fixed bash not found on some environment like Alpine when execute
init-proxy.sh
.
- #1208 Optimized json-rpc logical.
- #1174 Adjusted the format of exception printer of
Hyperf\Utils\Parallel
. - #1224 Allows config fetcher of Aliyun ACM parse UTF-8 charater, and fetch configuration once after worker start automatically, also allows pass the configutation to user process.
- #1235 Release connection after declared for amqp producers.
- #1227 Upgraded jcchavezs/zipkin-php-opentracing to 0.1.4.
- #1137 Added translator for constants.
- #1165 Added a method
route
forHyperf\HttpServer\Contract\RequestInterface
. - #1195 Added max offset for
Cacheable
andCachePut
. - #1204 Added
insertOrIgnore
for database. - #1216 Added default value for
$data
ofRenderInterface::render()
. - #1221 Added
traceId
andspanId
of theswoole-tracker
component.
- #1175 Fixed
Hyperf\Utils\Collection::random
does not works when the number is null. - #1199 Fixed variadic arguments do not work in task annotation.
- #1200 Request path shouldn't include query parameters in hyperf/metric middleware.
- #1210 Fixed validation
size
does not works withoutnumeric
orinteger
rules when the type of value is numeric.
- #1211 Convert app name to valid prometheus namespace.
- #1217 Replaced
zendframework/zend-mime
intolaminas/laminas-mine
.
- #1177 Added protocol
jsonrpc-tcp-length-check
forjsonrpc
.
- #1175 Fixed
Hyperf\Utils\Collection::random
does not works when the number is null. - #1178 Fixed
Hyperf\Database\Query\Builder::chunkById
does not works when the collection item is array. - #1189 Fixed default operator does not works for
Hyperf\Utils\Collection::operatorForWhere
.
- #1186 Automatically added default constructor's configuration, when you forgetton to set it.
- #849 Added configuration of span tag for
tracer
component.
- #1142 Fixed bug that Register::resolveConnection will return null.
- #1144 Fixed rate-limit config does not works.
- #1145 Fixed error return value for method
CoroutineMemoryDriver::delKey
. - #1153 Fixed validation rule
alpha_num
does not works.
- #1104 Fixed guzzle will be retried when the response has the correct status code 2xx.
- #1105 Fixed Retry Component not restoring pipeline stack before retry attempts.
- #1106 Fixed bug that sticky mode will affect the next request.
- #1119 Fixed JSONRPC on TCP Server cannot response the expected error response when cannot unpack the data.
- #1124 Fixed Session middleware does not store the current url correctly when the path of url end with a slash.
- #1108 Renamed
Hyperf\Tracer\Middleware\TraceMiddeware
toHyperf\Tracer\Middleware\TraceMiddleware
. - #1108 Upgrade the access level of methods and properties of
Hyperf\ServiceGovernance\Listener\ServiceRegisterListener
, for better override it.
- #948 Added Lazy loader to DI.
- #1044 Added
basic_qos
for amqp consumer. - #1056 #1081 Added
define()
andset()
to Container. AddedHyperf\Contract\ContainerInterface
. - #1059 Added constructor for
job.stub
. - #1084 Added php 7.4 support.
- #1049 Fixed
Hyperf\Cache\Driver\RedisDriver::clear
sometimes fails to delete all caches. - #1055 Fixed image extension validation failed.
- #1085 #1091 Fixed broken retry annotation.
- #1007 Optimized
vendor:: publish
return value does not support null.
- #1013 Fixed config of JsonRpcPoolTransporter merge failed.
- #1006 Fixed the order of properties of Model.
- #1021 Added default port to WebSocket client.
- #1014 Optimized
Command:: execute
return value does not support null. - #1022 Provided cleaner connection pool error message without implementation details.
- #1039 Updated the ServerRequest object to context in CoreMiddleware automatically.
- #1034 The property
arguments
ofHyperf\Amqp\Builder\Builder
not only support array.
- #860 Added retry component.
- #952 Added think template engine for view.
- #973 Added
Hyperf\JsonRpc\JsonRpcPoolTransporter
. - #976 Added params
close_on_destruct
forhyperf/amqp
.
- #955 Fixed bug that port and charset do not work for
hyperf/db
. - #956 Fixed bug that
RedisHandler::incr
fails in cluster mode for model cache. - #966 Fixed type error, when use paginator in non-worker process.
- #968 Fixed aspect does not works when class and annotation exist at the same time.
- #980 Fixed
migrate
,save
andhas
methods of Session do not work as expected. - #982 Fixed
Hyperf\GrpcClient\GrpcClient::yield
does not get the correct channel pool. - #987 Fixed missing method call
parent::configure()
ofcommand.stub
.
- #991 Optimized
Hyperf\DbConnection\ConnectionResolver::connection
.
- #944 Replaced annotation
@Listener
and@Process
into config whichlisteners
andprocesses
inConfigProvider
. - #977 Changed
init-proxy.sh
command to only delete theruntime/container
directory.
- #827 Added a simple db component.
- #905 Added twig template engine for view.
- #911 Added support for crontab task run on one server.
- #913 Added
Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler
. - #931 Added
strict_mode
for config-apollo. - #933 Added plates template engine for view.
- #937 Added consume events for nats.
- #941 Added an zookeeper adapter for Hyperf config component.
- #897 Fixed connection pool of
Hyperf\Nats\Annotation\Consumer
does not works as expected. - #901 Fixed Annotation
Factory
does not works for GraphQL. - #903 Fixed execute
init-proxy
command can not stop whenhyperf/rpc-client
component exists. - #904 Fixed the hooked I/O request does not works in the listener that listening
Hyperf\Framework\Event\BeforeMainServerStart
event. - #906 Fixed
port
property of URI ofHyperf\HttpMessage\Server\Request
. - #907 Fixed the expire time is double of the config for
requestSync
in nats. - #909 Fixed a issue that causes staled parallel execution.
- #925 Fixed the dead cycle caused by socket closed.
- #932 Fixed
Translator::setLocale
does not works in coroutine evnironment. - #940 Fixed WebSocketClient::push TypeError, expects integer, but boolean given.
- #907 Optimized nats consumer process restart frequently.
- #928 Optimized
Hyperf\ModelCache\Cacheable::query
to delete the model cache when batch update - #936 Optimized
increment
to atomic operation for model-cache.
- #934 WaitGroup inherit \Swoole\Coroutine\WaitGroup.
- #812 Added singleton crontab task support.
- #820 Added nats component.
- #832 Added
Hyperf\Utils\Codec\Json
. - #833 Added
Hyperf\Utils\Backoff
. - #852 Added a
clear()
method forHyperf\Utils\Parallel
to clear added callbacks. - #854 Added
GraphQLMiddleware
. - #859 Added Consul cluster mode support, now available to fetch the service information from Consul cluster.
- #873 Added redis cluster.
- #831 Fixed Redis client can not reconnect the server after the Redis server restarted.
- #835 Fixed
Request::inputs
default value does not works. - #841 Fixed migration does not take effect under multiple data sources.
- #844 Fixed the reader of
composer.json
does not support the root namespace. - #846 Fixed
scan
hScan
zScan
andsScan
don't works for Redis. - #850 Fixed logger group does not works when the name is same.
- #832 Optimized that response will throw a exception when json format failed.
- #840 Use
\Swoole\Timer::*
to instead ofswoole_timer_*
functions. - #859 Optimized the logical of fetch health nodes infomation from consul.
- #778 Added
PUT
andDELETE
forHyperf\Testing\Client
. - #784 Add Metric Component
- #795 Added
restartInterval
forAbstractProcess
. - #804 Added
BeforeHandle
AfterHandle
andFailToHandle
for command.
- #779 Fixed bug that JPG file cannot be verified.
- #787 Fixed bug that "--class" option does not exist.
- #795 Fixed process not restart when throw an exception.
- #796 Fixed
config_etcd.enable
does not works.
- #781 Publish validation language package according to translation setting.
- #796 Don't remake HandlerStack for etcd.
- #797 Use channel to communicate, instead of sharing mem
- #793 Changed
protected
topublic
forPool::getConnectionsInChannel
. - #811 Command
di:init-proxy
does not clear the runtime cache, If you want to delete them, usevendor/bin/init-proxy.sh
instead.
- #745 Added option
with-comments
for commandgen:model
. - #747 Added
AfterConsume
,BeforeConsume
,FailToConsume
events for AMQP consumer. - #762 Add concurrent for parallel.
- #741 Fixed
db:seed
without filename. - #748 Fixed bug that
SymfonyNormalizer
not denormalize result of typearray
. - #769 Fixed invalid response exception throwed when result/error of jsonrpc response is null.
- #767 Renamed property
running
tolistening
forAbstractProcess
.
- #722 Added config
concurrent.limit
for AMQP consumer.
- #678 Added ignore-tables for
gen:model
, and ignoremigrations
table, andmigrations
table will not generate when execute thegen:model
command. - #729 Renamed config
db:model
togen:model
.
- #678 Added ignore-tables for
gen:model
, and ignoremigrations
table. - #694 Fixed
validationData
method ofHyperf\Validation\Request\FormRequest
does not contains the uploaded files. - #700 Fixed the
download
method ofHyperf\HttpServer\Contract\ResponseInterface
does not works as expected. - #701 Fixed the custom process will not restart automatically when throw an uncaptured exception.
- #704 Fixed bug that
Call to a member function getName() on null
inHyperf\Validation\Middleware\ValidationMiddleware
when the argument of action method does not define the argument type. - #713 Fixed
ignoreAnnotations
does not works when cache is used. - #717 Fixed the validator will be created repeatedly in
getValidatorInstance
. - #724 Fixed
db:seed
command without database selected. - #737 Fixed custom process does not enable for tracer.
- #664 Changed the default return value of FormRequest::authorize which generate via
gen:request
command. - #665 Fixed framework will generate proxy class of all classes that in app directory every time.
- #667 Fixed trying to get property 'callback' of non-object in
Hyperf\Validation\Middleware\ValidationMiddleware
. - #672 Fixed
Hyperf\Validation\Middleware\ValidationMiddleware
will throw an unexpected exception when the action method has defined a non-object parameter. - #674 Fixed the table of Model is not correct when using
gen:model
.
- #401 Optimized server and fixed middleware that user defined does not works.
- #402 Added Annotation
@AsyncQueueMessage
. - #418 Allows send WebSocket message to any
fd
in current server, even the worker process does not hold thefd
- #420 Added listener for model.
- #429 #643 Added validation component, a component similar to illuminate/validation.
- #441 Automatically close the spare redis client when it is used in low frequency.
- #478 Adopt opentracing interfaces and support Jaeger.
- #500 Added fluent method calls of
Hyperf\HttpServer\Contract\ResponseInterface
. - #523 Added option
table-mapping
for commanddb:model
. - #555 Added global function
swoole_hook_flags
to get the hook flags by constantSWOOLE_HOOK_FLAGS
, and you could define inbin/hyperf.php
via! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);
to define the constant. - #596 #658 Added
required
parameter for@Inject
, if you define@Inject(required=false)
annotation to a property, therefore the DI container will not throw anHyperf\Di\Exception\NotFoundException
when the dependency of the property does not exists, the default value ofrequired
parameter istrue
. In constructor injection mode, you could define the default value of the parameter of the__construct
tonull
or define the parameter as anullable
parameter , this means this parameter is nullable and will not throw the exception too. - #597 Added concurrent for async-queue.
- #599 Allows set the retry seconds according to attempt times of async queue consumer.
- #619 Added HandlerStackFactory of guzzle.
- #620 Add automatic restart mechanism for consumer of async queue.
- #629 Allows to modify the
clientIp
,pullTimeout
,intervalTimeout
of Apollo client via config file. - #648 Added
nack
return type of AMQP consumer, the abstract consumer will executebasic_nack
method when the message handler return aHyperf\Amqp\Result::NACK
. - #654 Added all Swoole events and abstract hyperf events.
- #437 Changed
Hyperf\Testing\Client
handle exception handlers instead of throw an exception directly. - #463 Simplify
container.php
and improve annotation caching mechanism.
config/container.php
<?php
use Hyperf\Di\Container;
use Hyperf\Di\Definition\DefinitionSourceFactory;
use Hyperf\Utils\ApplicationContext;
$container = new Container((new DefinitionSourceFactory(true))());
if (! $container instanceof \Psr\Container\ContainerInterface) {
throw new RuntimeException('The dependency injection container is invalid.');
}
return ApplicationContext::setContainer($container);
- #486 Changed
getParsedBody
of Request is available to return JSON formatted data normally. - #523 The command
db:model
will generate the singular class name of an plural table as default. - #614 #617 Changed the structure of config provider, also moved
config/dependencies.php
toconfig/autoload/dependencies.php
, also you could placedependencies
into config/config.php.
Changed the structure of config provider:
Before:
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
Now:
'annotations' => [
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
],
- #630 Changed the way to instantiate
Hyperf\HttpServer\CoreMiddleware
, usemake()
instead ofnew
. - #631 Changed the way to instantiate AMQP Consumer, use
make()
instead ofnew
. - #637 Changed the argument 1 of
Hyperf\Contract\OnMessageInterface
andHyperf\Contract\OnOpenInterface
, useSwoole\WebSocket\Server
instead ofSwoole\Server
. - #638 Renamed command
db:model
togen:model
and added rewrite connection name visitor.
- #401 Deleted class
Hyperf\JsonRpc\HttpServerFactory
,Hyperf\HttpServer\ServerFactory
,Hyperf\GrpcServer\ServerFactory
. - #402 Deleted deprecated method
AsyncQueue::delay
. - #563 Deleted deprecated constants
Hyperf\Server\ServerInterface::SERVER_TCP
, useHyperf\Server\ServerInterface::SERVER_BASE
to instead of it. - #602 Removed timeout property of
Hyperf\Utils\Coroutine\Concurrent
. - #612 Deleted useless
$url
for RingPHP Handlers. - #616 #618 Deleted useless code of guzzle.
- #644 Optimized annotation scan process, separate to two scan parts
app
andvendor
, greatly decrease the elapsed time. - #653 Optimized the detect logical of swoole shortname.
- #448 Fixed TCP Server does not works when HTTP Server or WebSocket Server exists.
- #623 Fixed the argument value will be replaced by default value when pass a
null
to the method of proxy class. - #647 Append
eof
to TCP response, according to the server configuration.
- #636 Fixed http client with pool handler may be used by different coroutine at the same time.
- #636 Fixed http client with pool handler may be used by different coroutine at the same time.
- #564 Fixed typehint error, when
Coroutine\Http2\Client->send
failed. - #567 Fixed rpc-client
getReturnType
failed, when the name is not equal of service. - #571 Fixed the next request will be effected after using stopPropagation.
- #579 Dynamic init snowflake meta data, fixed the problem that when using snowflake in command mode (e.g.
di:init-proxy
) will connect to redis server and wait timeout.
- #583 Throw
GrpcClientException
, whenBaseClient::start
failed. - #585 Throw exception when execute failed in task worker.
- #534 Fixed Guzzle HTTP Client does not handle the response status is equal to
-3
; - #541 Fixed bug grpc client cannot be set correctly.
- #542 Fixed
Hyperf\Grpc\Parser::parseResponse
returns a non-standard error code for grpc. - #551 Fixed infinite loop in grpc client when the server closed the connection.
- #558 Fixed UDP Server does not works.
- #545 Deleted useless static methods
restoring
andrestored
of trait SoftDeletes.
- #549 Optimized
read
andwrite
ofHyperf\Amqp\Connection\SwooleIO
. - #559 Optimized
redirect
ofHyperf\HttpServer\Response
. - #560 Optimized class
Hyperf\WebSocketServer\CoreMiddleware
.
- #558 Marked
Hyperf\Server\ServerInterface::SERVER_TCP
as deprecated, will be removed inv1.1
.
- #389 #419 #432 #524 #531 Added snowflake component, snowflake is a distributed global unique ID generation algorithm put forward by Twitter, this component implemented this algorithm for easy to use.
- #525 Added
download()
method ofHyperf\HttpServer\Contract\ResponseInterface
.
- #482 Re-generate the
fillable
argument of Model when userefresh-fillable
option, at the same time, the command will keep thefillable
argument as default behaviours. - #501 When the path argument of Mapping annotation is an empty string, then the path is equal to prefix of Controller annotation.
- #513 Rewrite process name with
app_name
. - #508 #526 When execute
Hyperf\Utils\Coroutine::parentId()
static method in non-coroutine context will return null.
- #479 Fixed typehint error when host of Elasticsearch client does not reached.
- #514 Fixed redis auth failed when the password is an empty string.
- #527 Fixed translator cannot translate repeatedly.
- #428 Added an independent component hyperf/translation, forked by illuminate/translation.
- #449 Added standard error code for grpc-server.
- #450 Added comments of static methods for
Hyperf\Database\Schema\Schema
.
- #451 Removed routes of magic methods from
AuthController
. - #468 Default exception handlers catch all exceptions.
- #466 Fixed error when the number of data is not enough to paginate.
- #466 Optimized
vendor:publish
command, if the destination folder exists, then will not repeatedly create the folder.
- #405 Added Context::override() method.
- #415 Added handlers configuration for logger, now you could config multiple handlers to logger.
- #431 The third parameter of Hyperf\GrpcClient\GrpcClient::openStream() have been removed.
- #414 Fixed WebSocketExceptionHandler typo
- #424 Fixed proxy configuration of
Hyperf\Guzzle\CoroutineHandler
does not support array parameter. - #430 Fixed file() method of Request will threw an exception, when upload files with same name of form.
- #431 Fixed missing parameters of the grpc request.
- #425 Marked
Hyperf\HttpServer\HttpServerFactory
,Hyperf\JsonRpc\HttpServerFactory
,Hyperf\JsonRpc\TcpServerFactory
as deprecated, will be removed inv1.1
.
- #366 Added
Hyperf\Server\Listener\InitProcessTitleListener
to init th process name, also addedHyperf\Framework\Event\OnStart
andHyperf\Framework\Event\OnManagerStart
events. - #389 Added Snowflake component.
- #361 Fixed command
db:model
does not works inMySQL 8
. - #369 Fixed the exception which implemented
\Serializable
, callserialize()
andunserialize()
functions failed. - #384 Fixed the
ExceptionHandler
that user defined does not works, because the framework has handled the exception automatically. - #370 Fixed set the error type client to
Hyperf\GrpcClient\BaseClient
, and added default content-typeapplication/grpc+proto
to the Request object, also allows the grpc client that user-defined to override thebuildRequest()
method to create a new Request object.
- #356 #390 Optimized aysnc-queue when push a job that implemented
Hyperf\Contract\CompressInterface
, will compress the job to a small object automatically. - #358 Only write the annotation cache file when
$enableCache
istrue
. - #359 #390 Added compression ability for
Collection
andModel
, if the object implementedHyperf\Contract\CompressInterface
, then the object could compress to a small one by callcompress
method.
- #321 Adding custom object types of array support for the Controller/RequestHandler parameter of HTTP Server, especially for JSON RPC HTTP Server, now you can get support for auto-deserialization of objects by defining
@var Object[]
on the method. - #324 Added NodeRequestIdGenerator, an implementation of
Hyperf\Contract\IdGeneratorInterface
- #336 Added Dynamic Proxy RPC Client.
- #346 #348 Added filesystem driver for
hyperf/cache
.
- #330 Hidden the scan message of DI when $paths is empty.
- #328 Added support for user defined project path according to the rules defined by composer.json's psr-4 autoload.
- #329 Optimized exception handler of rpc-server and json-rpc component.
- #340 Added support for
make
function accept index-based array as parameters. - #349 Renamed the class name below, fixed the typo.
Before | After |
---|---|
Hyperf\Database\Commands\Ast\ModelUpdateVistor | Hyperf\Database\Commands\Ast\ModelUpdateVisitor |
Hyperf\Di\Aop\ProxyClassNameVistor | Hyperf\Di\Aop\ProxyClassNameVisitor |
Hyperf\Di\Aop\ProxyCallVistor | Hyperf\Di\Aop\ProxyCallVisitor |
- #325 Fixed check the service registration status via consul services more than one times.
- #332 Fixed type error in
Hyperf\Tracer\Middleware\TraceMiddeware
, only appears in openzipkin/zipkin v1.3.3+. - #333 Fixed Redis::delete() method has been removed in redis 5.0+.
- #334 Fixed the configuration fetch from aliyun acm is not work expected in some case.
- #337 Fixed the server will return 500 Response when the key of header is not a string.
- #338 Fixed the problem of
ProviderConfig::load
will convert a string to a array when the dependencies has the same key in deep merging.
- #317 Added composer-json-fixer and Optimized composer.json. @wenbinye
- #320 DI added support for closure definition.
- #300 Let message queues run in sub-coroutines. Fixed async queue attempts twice to handle message, but only once actually.
- #305 Fixed
$key
of methodArr::set
not supportint
andnull
. - #312 Fixed amqp process collect listener will be handled later than the process boot listener.
- #315 Fixed config etcd center not work after worker restart or in user process.
- #318 Fixed service will register to service center ceaselessly.
- #323 Force convert type of
$ttl
in annotationCacheable
andCachePut
into int.
- #297 If register service failed, then sleep 10s and re-register, also hided the useless exception message when register service failed.
- #298 #301 Adapted openzipkin/zipkin v1.3.3+
- #271 Fixed aop only rewrite the first method in classes and method patten is not work.
- #285 Fixed anonymous class should not rewrite in proxy class.
- #286 Fixed not auto rollback when forgotten to commit or rollback in multi transactions.
- #292 Fixed
$default
is not work in methodRequest::header
. - #293 Fixed
$key
of methodArr::get
not supportint
andnull
.
- #266 Fixed timeout when produce a amqp message.
- #273 Fixed all services have been registered to Consul will be deleted by the last register action.
- #274 Fixed the content type of view response.
- #203 #236 #247 #252 Added View component, support for Blade engine and Smarty engine.
- #203 Added support for Swoole Task mechanism.
- #245 Added TaskWorkerStrategy and WorkerStrategy crontab strategies.
- #251 Added coroutine memory driver for cache.
- #254 Added support for array value of
RequestMapping::$methods
,@RequestMapping(methods={"GET"})
and@RequestMapping(methods={RequestMapping::GET})
are available now. - #255 Transfer
Hyperf\Utils\Contracts\Arrayable
result of Request to Response automatically, and addedtext/plain
content-type header for string Response. - #256 If
Hyperf\Contract\IdGeneratorInterface
exist, thejson-rpc
client will generate a Request ID via IdGenerator automatically, and stored in Request attibute. Also added support for service register and health checks ofjsonrpc
TCP protocol.
- #247 Use
WorkerStrategy
as the default crontab strategy. - #256 Optimized error handling of json-rpc, server will response a standard json-rpc error object when the rpc method does not exist.
- #235 Added default exception handler for
grpc-server
and optimized code. - #240 Fixed OnPipeMessage event will be dispatch by another listener.
- #257 Fixed cannot get the Internal IP in some special environment.
- #185 #224 Added support for xml format of response.
- #202 Added trace message when throw a uncaptured exception in function
go
. - #138 #197 Added crontab component.
- #195 Changed the behavior of parameter
$times
ofretry()
function, means the retry times of the callable function. - #198 Optimized
has()
method ofHyperf\Di\Container
, if pass a un-instantiable object (like an interface) to$container->has($interface)
, the method result isfalse
now. - #199 Re-produce one times when the amqp message produce failure.
- #200 Make tests directory out of production package.
- #176 Fixed TypeError: Return value of LengthAwarePaginator::nextPageUrl() must be of the type string or null, none returned.
- #188 Fixed proxy of guzzle client does not work expected.
- #211 Fixed rpc client will be replaced by the latest one.
- #212 Fixed config
ssl_key
andcert
of guzzle client does not work expected.
- #140 Support Swoole v4.4.0.
- #163 Added custom arguments support to AbstractConstants::__callStatic in
hyperf/constants
.
- #124 Added
$delay
parameter forDriverInterface::push
, and markedDriverInterface::delay
method to deprecated. - #125 Changed the default value of parameter $default of config() function to null.
- #110 #111 Fixed Redis::select is not work expected.
- #131 Fixed property middlewares not work in
Router::addGroup
. - #132 Fixed request->hasFile does not work expected.
- #135 Fixed response->redirect does not work expected.
- #139 Fixed the BaseUri of ConsulAgent will be replaced by default BaseUri.
- #148 Fixed cannot generate the migration when migrates directory does not exist.
- #152 Fixed db connection will not be closed when a low use frequency.
- #169 Fixed array parse failed when handle http request.
- #170 Fixed websocket server interrupt when request a not exist route.
- #131 Removed
server
property from Router options.
- #48 Added WebSocket Client.
- #51 Added property
enableCache
toDefinitionSource
to enable annotation cache. - #61 Added property type of
Model
created by commanddb:model
. - #65 Added JSON support for model-cache.
- Added WebSocket Server.
- #46 Removed hyperf/framework requirement of
hyperf/di
,hyperf/command
andhyperf/dispatcher
.
- #45 Fixed http server start failed, when the skeleton included
hyperf/websocket-server
. - #55 Fixed the method level middleware annotation.
- #73 Fixed short name is not work for
db:model
. - #88 Fixed prefix is not right in deep directory.
- #101 Fixed constants resolution failed when no message annotation exists.
- Fixed http server will be affected of websocket server.
- Fixed proxy class
- Fixed database pool will be fulled in testing.
- Fixed co-phpunit work not expected.
- Fixed model event
creating
,updating
... not work expected. - Fixed
flushContext
not work expected for testing.