- #3787 Initialize PSR Response first to avoid problems caused by the failure of building PSR Request.
- #3723 Fixed the active_url rule for validation in input fails to correctly check dns record with dns_get_record resulting in bypassing the validation.
- #3724 Fixed bug that
RequiredIf
can be exploited to generate gadget chains for deserialization vulnerabiltiies.
- #3721 Fixed the
in
andnot in
rule for validation in input fails to correctly checkin:00
rule when passing0
.
- #3684 Fixed the wrong judgment of
counter
orduration
for circuit breaker.
- #3667 Fixed bug that the crontab rule like
10-12/1,14-15/1
does not works. - #3669 Fixed bug that the crontab rule without backslash like
10-12
does not works. - #3674 Fixed bug that property
$workerId
does not works in annotation@Task
.
- #3663 Optimized code of
AbstractServiceClient::getNodesFromConsul()
. - #3668 Optimized proxy code of
CoroutineHandler
, which is more friendly than before.
- #3618 Fixed routes with same path but different methods will be merged when using
describe:routes
. - #3625 Fixed bug that
class_map
does not works inHyperf\Di\Annotation\Scanner
.
- #3626 Added
Hyperf\Rpc\PathGenerator\DotPathGenerator
.
- nacos-sdk Nacos SDK for Open API.
- #3598 Fixed bug that
increment/decrement
does not works as expect when used in transaction for model-cache. - #3607 Fixed bug that coroutine won't destruct when using
onOpen
in coroutine style websocket server. - #3610 Fixed bug that
fromSub()
andjoinSub()
don't work with table prefix.
- #3856 Fixed bug that coroutine won't destruct for keepalive request in swow server.
- #3329 The
enable
parameter of the@Crontab
supportsarray
, which you can dynamically control whether the task is executed or not.
- #3510 Fixed bug that consul couldn't force a node into the left state.
- #3513 Fixed nats connection closed accidentally when socket timeout is smaller than max idle time.
- #3520 Fixed
@Inject
does not works in nested trait.
- #3514 Added method
Hyperf\HttpServer\Request::clearStoredParsedData()
.
- #3517 Optimized code for
Hyperf\Di\Aop\PropertyHandlerTrait
.
- #3484 Added methods
withMax()
withMin()
withSum()
andwithAvg()
.
- #3465 Fixed bug that websocket does not works when exist more than one server in coroutine style.
- #3467 Fixed bug that db connection couldn't be released to pool when using coroutine style websocket server.
- #3472 Added method
Sender::getResponse()
which you can used to get response from coroutine style server.
- #3432 Fixed bug that
ttl
does not works on other workers for socketio-server. - #3434 Fixed bug that the type of rpc result does not support types which allows null.
- #3447 Fixed default value of column does not works in model-cache when has table prefix.
- #3450 Fixed bug that
@Crontab
does not works when used in methods.
- #3453 Optimized code for releasing instance in
Hyperf\Utils\Channel\Caller
. - #3455 Optimized
phar:build
, which can supportsymlink
package.
- #3423 Fixed crontab does not works when worker_num isn't integer for task worker strategy.
- #3426 Fixed bug that middleware will be handled twice when used in optional route.
- #3422 Optimized code for
co-phpunit
.
- #3376 Support
$connection
and$attempts
forHyperf\DbConnection\Annotation\Transactional
. - #3403 Added method
Hyperf\Testing\Client::sendRequest()
that you can use your own server request.
- #3380 Fixed bug that super globals does not work when request don't persist to context.
- #3394 Fixed bug that the injected property will be replaced by injected property defined in trait.
- #3395 Fixed bug that the private property which injected by parent class does not exists in class.
- #3398 Fixed UploadedFile::isValid() does not works in phpunit.
- #3348 Fixed bug that
Arr::forget
failed when the integer key does not exists. - #3351 Fixed bug that
FormRequest
could't get the changed data fromContext
. - #3356 Fixed bug that could't get the valid
uri
when usingHyperf\Testing\Client
. - #3363 Fixed bug that
constants
which defined inbin/hyperf.php
does not works forserver:start
. - #3365 Fixed bug that
pid_file
will be created accidently when you don't configurepid_file
in coroutine style server.
- #3364 Optimized
phar:build
that you can run phar withoutphp
, such as./composer.phar
instead ofphp composer.phar
. - #3367 Optimized code for guessing the return type for custom caster when using
gen:model
.
- #3326 Fixed bug that
unpack
custom data failed when usingJsonEofPacker
. - #3330 Fixed data query error caused by unexpected change of
$constraints
by other coroutine.
- #3325 Added
enable
to control the crontab task which to register or not.
- #3338 Optimized code for
testing
which mock request in an alone coroutine.
- #3301 Fixed bug that the value of ttl will be converted to 0 when you don't set it for
hyperf/cache
.
- #3310 Added
Blueprint::comment()
which you can set comment of table for migration. - #3311 Added
RouteCollector::getRouteParser
which you can getRouteParser
fromRouteCollector
. - #3316 Allow custom driver which you can used to register your own driver for
hyperf/db
.
- #3308 Send response directly when the handler does not exists.
- #3319 Optimized code that get connection from pool.
- rpc-multiplex Rpc for multiplexing connection
- db-pgsql PgSQL driver for Hyperf DB Component
- #3272 Fixed bug that rename column name failed when using
doctrine/dbal
.
- #3261 Added method
Pipeline::handleCarry()
which to handle the returning value. - #3267 Added
Hyperf\Utils\Reflection\ClassInvoker
which you can used to execute non public methods or get non public properties. - #3268 Added support for kafka consumers to subscribe to multiple topics.
- #3193 #3296 Added option
-M
which you can mount external files or dirs to a virtual location within the phar archive forphar:build
.
- #3258 Set different client ids based on different kafka consumers.
- #3282 Renamed
stoped
tostopped
forhyperf/signal
.
- #3233 Fixed connection exhausted, when connect amqp server failed.
- #3245 Fixed
autoCommit
does not works when you setfalse
forhyperf/kafka
. - #3255 Fixed bug that
defer
cannot be triggered in nsq consumer.
- #3249 Optimized
hyperf/kafka
which won't make a new producer to requeue message.
- #3235 Removed rebalance check, because
longlang/phpkafka
checked.
- #3204 Fixed unexpected behavior for
middlewares
when usingrpc-server
. - #3209 Fixed bug that connection was not be released to pool when the amqp consumer broken in coroutine style server.
- #3222 Fixed memory leak for join queries in
hyperf/database
. - #3228 Fixed bug that server crash when tracer flush failed in defer.
- #3230 Fixed
orderBy
does not works forhyperf/scout
.
- #3211 Added optional configuration url for nacos which used to request nacos server.
- #3214 Added Caller which help you to use instance in coroutine security mode.
- #3224 Added
Hyperf\Utils\CodeGen\Package::getPrettyVersion()
.
- #3218 Set qos of amqp by default.
- #3224 Upgrade
jean85/pretty-package-versions
to^1.2|^2.0
, which supportcomposer 2.x
.
- #3226 Run pagination count as subquery for group by and havings.
- #3165 Fixed
Hyperf\Database\Schema\MySqlBuilder::getColumnListing
does not works inMySQL 8.0
. - #3174 Fixed bug that the where bindings will be replaced by not rigorous code.
- #3179 Fixed json-rpc client failed to receive data when the target server restart.
- #3189 Fixed kafka producer unusable in cluster setup.
- #3191 Fixed rpc-client with pool transporter recv failed once when the server restart in the next request.
- #3170 Added
FindNewerDriver
which is friendly with mac, linux and docker for watcher. - #3195 Added
retry_count
for JsonRpcPoolTransporter, the default retry count is 2.
- #3169 Optimized code for
set_error_handler
ofErrorExceptionHandler
, which expectscallable(int, string, string, int, array): bool
. - #3191 Optimized code for
hyperf/json-rpc
, try to reconnect the server when connection closed.
- #3174 Assert the binding values for database by default.
- #3070 Fixed
tracer
does not works in hyperfv2.1
. - #3106 Fixed bug that call to a member function getArrayCopy() on null when the parent coroutine context destroyed.
- #3108 Fixed routes will be replaced by another group when using
describe:routes
command. - #3118 Fixed bug that the config key of migrations is not correct.
- #3126 Fixed bug that swoole v4.6
SWOOLE_HOOK_SOCKETS
conflicts with jaeger tracing. - #3137 Fixed type hint error, when don't set
true
forPDO::ATTR_PERSISTENT
. - #3141 Fixed
doctrine/dbal
does not works when using migration.
- #3059 The merged attributes in the view component support attributes other than 'class'.
- #3123 Added method
ComponentAttributeBag::has()
forview-engine
.
- #3050 Fixed extra data saved twice when use
save()
afterincrement()
withextra
. - #3082 Fixed connection has already been bound to another coroutine when used in defer for
hyperf/db
. - #3084 Fixed
getRealPath
does not works in phar. - #3087 Fixed memory leak when using pipeline sometimes.
- #3095 Fixed unexpected behavior for
ElasticsearchEngine::getTotalCount()
inhyperf/scout
.
- #2847 Added
hyperf/kafka
component. - #3066 Added method
ConnectionInterface::run(Closure $closure)
forhyperf/db
.
- #3046 Optimized
phar:build
for rewritingscan_cacheable
.
- #3077 Reduced
league/flysystem
to^1.0
.
- #3045 Fixed type hint error, when don't set
true
forPDO::ATTR_PERSISTENT
. - #3047 Fixed bug that renew sid in all namespaces failed.
- #3062 Fixed bug that parameters don't parsed correctly in grpc server.
- #3052 Support collecting metrics while running command.
- #3054 Support
Engine::close
protocol and improve error handling forsocketio-server
.
- Upgraded
php
to>=7.3
; - Upgraded
phpunit/phpunit
to^9.0
; - Upgraded
guzzlehttp/guzzle
to^6.0|^7.0
; - Upgraded
vlucas/phpdotenv
to^5.0
; - Upgraded
endclothing/prometheus_client_php
to^1.0
; - Upgraded
twig/twig
to^3.0
; - Upgraded
jcchavezs/zipkin-opentracing
to^0.2.0
; - Upgraded
doctrine/dbal
to^3.0
; - Upgraded
league/flysystem
to^1.0|^2.0
;
- Removed deprecated property
$name
fromHyperf\Amqp\Builder
. - Removed deprecated method
consume
fromHyperf\Amqp\Message\ConsumerMessageInterface
. - Removed deprecated property
$running
fromHyperf\AsyncQueue\Driver\Driver
. - Removed deprecated method
parseParameters
fromHyperf\HttpServer\CoreMiddleware
. - Removed deprecated const
ON_WORKER_START
andON_WORKER_EXIT
fromHyperf\Utils\Coordinator\Constants
. - Removed deprecated method
get
fromHyperf\Utils\Coordinator
. - Removed config
rate-limit.php
, please userate_limit.php
instead. - Removed useless class
Hyperf\Resource\Response\ResponseEmitter
. - Removed component
hyperf/paginator
from database's dependencies. - Removed method
stats
fromHyperf\Utils\Coroutine\Concurrent
.
-
Hyperf\Utils\Coroutine::parentId
which returns the parent coroutine ID- Returns 0 when running in the top level coroutine.
- Throws RunningInNonCoroutineException when running in non-coroutine context
- Throws CoroutineDestroyedException when the coroutine has been destroyed
-
Hyperf\Guzzle\CoroutineHandler
- Deleted method
execute
- Method
initHeaders
will return$headers
, instead of assigning "$headers" directly to the client. - Deleted method
checkStatusCode
- Deleted method
-
#2720 Don't set
data_type
forPDOStatement::bindValue
. -
#2871 Use
(string) $body
instead of$body->getContents()
for getting contents fromStreamInterface
, because methodgetContents()
only returns the remaining contents in a string. -
#2909 Allow setting repeated middlewares.
-
#2935 Changed the string format for default exception formatter.
-
#2979 Don't format
decimal
tofloat
for commandgen:model
by default.
Hyperf\AsyncQueue\Signal\DriverStopHandler
will be deprecated in v2.2, please useHyperf\Process\Handler\ProcessStopHandler
instead.Hyperf\Server\SwooleEvent
will be deprecated in v3.0, please useHyperf\Server\Event
instead.
- #2659 #2663 Support
HttpServer
for Swow. - #2671 Added
Hyperf\AsyncQueue\Listener\QueueHandleListener
which can record running logs for async-queue. - #2923 Added
Hyperf\Utils\Waiter
which can wait coroutine to end. - #3001 Added method
Hyperf\Database\Model\Collection::columns()
. - #3002 Added params
$depth
and$flags
forJson::decode
andJson::encode
.
- #2741 Fixed bug that process does not works in swow server.
- #3009 Optimized code for prometheus which support
https
not onlyhttp
.