讨论数量:
标题
获取request类的protected属性的三种方法
问题来源
三种方法
$request->content
$request['content']
$request->input('content')
代码与解释
<?php
namespace App\Http\Controllers\Api;
use App\Http\Requests\Api\ReplyRequest;
use App\Models\Reply;
use App\Models\Topic;
use App\Transformers\ReplyTransformer;
class RepliesController extends Controller
{
public function store(ReplyRequest $request, Topic $topic, Reply $reply)
{
//通过IlluminateRequest基类中的__get()魔术方法调用Arr::get方法来获取值。
$reply->content = $request->content;
//因为IlluminateRequest基类实现了ArrayAccess(数组式访问)接口,因此可以像访问数组元素一样
//访问对象的属性。调用的是基类中的offsetGet方法
$reply->content = $request['content'];
//因为IlluminateRequest基类中引入了trait InteractsWithInput,
//因此可以使用trait中的input方法。最后调用了IlluminateHelpers中的data_get方法
$reply->content = $request->input('content');
$reply->topic_id = $topic->id;
$reply->user_id = $this->user()->id;
$reply->save();
return $this->response->item($reply, new ReplyTransformer())
->setStatusCode(201);
}
}
标题
laravel 5.7中的redis可用命令及其对应类全名
来源
vendor/predis/predis/src/Profile/RedisVersion320.php
命令对应关系
public function getSupportedCommands()
{
return array(
/* ---------------- Redis 1.2 ---------------- */
/* commands operating on the key space */
'EXISTS' => 'Predis\Command\KeyExists',
'DEL' => 'Predis\Command\KeyDelete',
'TYPE' => 'Predis\Command\KeyType',
'KEYS' => 'Predis\Command\KeyKeys',
'RANDOMKEY' => 'Predis\Command\KeyRandom',
'RENAME' => 'Predis\Command\KeyRename',
'RENAMENX' => 'Predis\Command\KeyRenamePreserve',
'EXPIRE' => 'Predis\Command\KeyExpire',
'EXPIREAT' => 'Predis\Command\KeyExpireAt',
'TTL' => 'Predis\Command\KeyTimeToLive',
'MOVE' => 'Predis\Command\KeyMove',
'SORT' => 'Predis\Command\KeySort',
'DUMP' => 'Predis\Command\KeyDump',
'RESTORE' => 'Predis\Command\KeyRestore',
/* commands operating on string values */
'SET' => 'Predis\Command\StringSet',
'SETNX' => 'Predis\Command\StringSetPreserve',
'MSET' => 'Predis\Command\StringSetMultiple',
'MSETNX' => 'Predis\Command\StringSetMultiplePreserve',
'GET' => 'Predis\Command\StringGet',
'MGET' => 'Predis\Command\StringGetMultiple',
'GETSET' => 'Predis\Command\StringGetSet',
'INCR' => 'Predis\Command\StringIncrement',
'INCRBY' => 'Predis\Command\StringIncrementBy',
'DECR' => 'Predis\Command\StringDecrement',
'DECRBY' => 'Predis\Command\StringDecrementBy',
/* commands operating on lists */
'RPUSH' => 'Predis\Command\ListPushTail',
'LPUSH' => 'Predis\Command\ListPushHead',
'LLEN' => 'Predis\Command\ListLength',
'LRANGE' => 'Predis\Command\ListRange',
'LTRIM' => 'Predis\Command\ListTrim',
'LINDEX' => 'Predis\Command\ListIndex',
'LSET' => 'Predis\Command\ListSet',
'LREM' => 'Predis\Command\ListRemove',
'LPOP' => 'Predis\Command\ListPopFirst',
'RPOP' => 'Predis\Command\ListPopLast',
'RPOPLPUSH' => 'Predis\Command\ListPopLastPushHead',
/* commands operating on sets */
'SADD' => 'Predis\Command\SetAdd',
'SREM' => 'Predis\Command\SetRemove',
'SPOP' => 'Predis\Command\SetPop',
'SMOVE' => 'Predis\Command\SetMove',
'SCARD' => 'Predis\Command\SetCardinality',
'SISMEMBER' => 'Predis\Command\SetIsMember',
'SINTER' => 'Predis\Command\SetIntersection',
'SINTERSTORE' => 'Predis\Command\SetIntersectionStore',
'SUNION' => 'Predis\Command\SetUnion',
'SUNIONSTORE' => 'Predis\Command\SetUnionStore',
'SDIFF' => 'Predis\Command\SetDifference',
'SDIFFSTORE' => 'Predis\Command\SetDifferenceStore',
'SMEMBERS' => 'Predis\Command\SetMembers',
'SRANDMEMBER' => 'Predis\Command\SetRandomMember',
/* commands operating on sorted sets */
'ZADD' => 'Predis\Command\ZSetAdd',
'ZINCRBY' => 'Predis\Command\ZSetIncrementBy',
'ZREM' => 'Predis\Command\ZSetRemove',
'ZRANGE' => 'Predis\Command\ZSetRange',
'ZREVRANGE' => 'Predis\Command\ZSetReverseRange',
'ZRANGEBYSCORE' => 'Predis\Command\ZSetRangeByScore',
'ZCARD' => 'Predis\Command\ZSetCardinality',
'ZSCORE' => 'Predis\Command\ZSetScore',
'ZREMRANGEBYSCORE' => 'Predis\Command\ZSetRemoveRangeByScore',
/* connection related commands */
'PING' => 'Predis\Command\ConnectionPing',
'AUTH' => 'Predis\Command\ConnectionAuth',
'SELECT' => 'Predis\Command\ConnectionSelect',
'ECHO' => 'Predis\Command\ConnectionEcho',
'QUIT' => 'Predis\Command\ConnectionQuit',
/* remote server control commands */
'INFO' => 'Predis\Command\ServerInfoV26x',
'SLAVEOF' => 'Predis\Command\ServerSlaveOf',
'MONITOR' => 'Predis\Command\ServerMonitor',
'DBSIZE' => 'Predis\Command\ServerDatabaseSize',
'FLUSHDB' => 'Predis\Command\ServerFlushDatabase',
'FLUSHALL' => 'Predis\Command\ServerFlushAll',
'SAVE' => 'Predis\Command\ServerSave',
'BGSAVE' => 'Predis\Command\ServerBackgroundSave',
'LASTSAVE' => 'Predis\Command\ServerLastSave',
'SHUTDOWN' => 'Predis\Command\ServerShutdown',
'BGREWRITEAOF' => 'Predis\Command\ServerBackgroundRewriteAOF',
/* ---------------- Redis 2.0 ---------------- */
/* commands operating on string values */
'SETEX' => 'Predis\Command\StringSetExpire',
'APPEND' => 'Predis\Command\StringAppend',
'SUBSTR' => 'Predis\Command\StringSubstr',
/* commands operating on lists */
'BLPOP' => 'Predis\Command\ListPopFirstBlocking',
'BRPOP' => 'Predis\Command\ListPopLastBlocking',
/* commands operating on sorted sets */
'ZUNIONSTORE' => 'Predis\Command\ZSetUnionStore',
'ZINTERSTORE' => 'Predis\Command\ZSetIntersectionStore',
'ZCOUNT' => 'Predis\Command\ZSetCount',
'ZRANK' => 'Predis\Command\ZSetRank',
'ZREVRANK' => 'Predis\Command\ZSetReverseRank',
'ZREMRANGEBYRANK' => 'Predis\Command\ZSetRemoveRangeByRank',
/* commands operating on hashes */
'HSET' => 'Predis\Command\HashSet',
'HSETNX' => 'Predis\Command\HashSetPreserve',
'HMSET' => 'Predis\Command\HashSetMultiple',
'HINCRBY' => 'Predis\Command\HashIncrementBy',
'HGET' => 'Predis\Command\HashGet',
'HMGET' => 'Predis\Command\HashGetMultiple',
'HDEL' => 'Predis\Command\HashDelete',
'HEXISTS' => 'Predis\Command\HashExists',
'HLEN' => 'Predis\Command\HashLength',
'HKEYS' => 'Predis\Command\HashKeys',
'HVALS' => 'Predis\Command\HashValues',
'HGETALL' => 'Predis\Command\HashGetAll',
/* transactions */
'MULTI' => 'Predis\Command\TransactionMulti',
'EXEC' => 'Predis\Command\TransactionExec',
'DISCARD' => 'Predis\Command\TransactionDiscard',
/* publish - subscribe */
'SUBSCRIBE' => 'Predis\Command\PubSubSubscribe',
'UNSUBSCRIBE' => 'Predis\Command\PubSubUnsubscribe',
'PSUBSCRIBE' => 'Predis\Command\PubSubSubscribeByPattern',
'PUNSUBSCRIBE' => 'Predis\Command\PubSubUnsubscribeByPattern',
'PUBLISH' => 'Predis\Command\PubSubPublish',
/* remote server control commands */
'CONFIG' => 'Predis\Command\ServerConfig',
/* ---------------- Redis 2.2 ---------------- */
/* commands operating on the key space */
'PERSIST' => 'Predis\Command\KeyPersist',
/* commands operating on string values */
'STRLEN' => 'Predis\Command\StringStrlen',
'SETRANGE' => 'Predis\Command\StringSetRange',
'GETRANGE' => 'Predis\Command\StringGetRange',
'SETBIT' => 'Predis\Command\StringSetBit',
'GETBIT' => 'Predis\Command\StringGetBit',
/* commands operating on lists */
'RPUSHX' => 'Predis\Command\ListPushTailX',
'LPUSHX' => 'Predis\Command\ListPushHeadX',
'LINSERT' => 'Predis\Command\ListInsert',
'BRPOPLPUSH' => 'Predis\Command\ListPopLastPushHeadBlocking',
/* commands operating on sorted sets */
'ZREVRANGEBYSCORE' => 'Predis\Command\ZSetReverseRangeByScore',
/* transactions */
'WATCH' => 'Predis\Command\TransactionWatch',
'UNWATCH' => 'Predis\Command\TransactionUnwatch',
/* remote server control commands */
'OBJECT' => 'Predis\Command\ServerObject',
'SLOWLOG' => 'Predis\Command\ServerSlowlog',
/* ---------------- Redis 2.4 ---------------- */
/* remote server control commands */
'CLIENT' => 'Predis\Command\ServerClient',
/* ---------------- Redis 2.6 ---------------- */
/* commands operating on the key space */
'PTTL' => 'Predis\Command\KeyPreciseTimeToLive',
'PEXPIRE' => 'Predis\Command\KeyPreciseExpire',
'PEXPIREAT' => 'Predis\Command\KeyPreciseExpireAt',
'MIGRATE' => 'Predis\Command\KeyMigrate',
/* commands operating on string values */
'PSETEX' => 'Predis\Command\StringPreciseSetExpire',
'INCRBYFLOAT' => 'Predis\Command\StringIncrementByFloat',
'BITOP' => 'Predis\Command\StringBitOp',
'BITCOUNT' => 'Predis\Command\StringBitCount',
/* commands operating on hashes */
'HINCRBYFLOAT' => 'Predis\Command\HashIncrementByFloat',
/* scripting */
'EVAL' => 'Predis\Command\ServerEval',
'EVALSHA' => 'Predis\Command\ServerEvalSHA',
'SCRIPT' => 'Predis\Command\ServerScript',
/* remote server control commands */
'TIME' => 'Predis\Command\ServerTime',
'SENTINEL' => 'Predis\Command\ServerSentinel',
/* ---------------- Redis 2.8 ---------------- */
/* commands operating on the key space */
'SCAN' => 'Predis\Command\KeyScan',
/* commands operating on string values */
'BITPOS' => 'Predis\Command\StringBitPos',
/* commands operating on sets */
'SSCAN' => 'Predis\Command\SetScan',
/* commands operating on sorted sets */
'ZSCAN' => 'Predis\Command\ZSetScan',
'ZLEXCOUNT' => 'Predis\Command\ZSetLexCount',
'ZRANGEBYLEX' => 'Predis\Command\ZSetRangeByLex',
'ZREMRANGEBYLEX' => 'Predis\Command\ZSetRemoveRangeByLex',
'ZREVRANGEBYLEX' => 'Predis\Command\ZSetReverseRangeByLex',
/* commands operating on hashes */
'HSCAN' => 'Predis\Command\HashScan',
/* publish - subscribe */
'PUBSUB' => 'Predis\Command\PubSubPubsub',
/* commands operating on HyperLogLog */
'PFADD' => 'Predis\Command\HyperLogLogAdd',
'PFCOUNT' => 'Predis\Command\HyperLogLogCount',
'PFMERGE' => 'Predis\Command\HyperLogLogMerge',
/* remote server control commands */
'COMMAND' => 'Predis\Command\ServerCommand',
/* ---------------- Redis 3.2 ---------------- */
/* commands operating on hashes */
'HSTRLEN' => 'Predis\Command\HashStringLength',
'BITFIELD' => 'Predis\Command\StringBitField',
/* commands performing geospatial operations */
'GEOADD' => 'Predis\Command\GeospatialGeoAdd',
'GEOHASH' => 'Predis\Command\GeospatialGeoHash',
'GEOPOS' => 'Predis\Command\GeospatialGeoPos',
'GEODIST' => 'Predis\Command\GeospatialGeoDist',
'GEORADIUS' => 'Predis\Command\GeospatialGeoRadius',
'GEORADIUSBYMEMBER' => 'Predis\Command\GeospatialGeoRadiusByMember',
);
}
标题
最全的HTTP状态码
来源
vendor/symfony/http-foundation/Response.php
状态码
const HTTP_CONTINUE = 100;
const HTTP_SWITCHING_PROTOCOLS = 101;
const HTTP_PROCESSING = 102; // RFC2518
const HTTP_EARLY_HINTS = 103; // RFC8297
const HTTP_OK = 200;
const HTTP_CREATED = 201;
const HTTP_ACCEPTED = 202;
const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
const HTTP_NO_CONTENT = 204;
const HTTP_RESET_CONTENT = 205;
const HTTP_PARTIAL_CONTENT = 206;
const HTTP_MULTI_STATUS = 207; // RFC4918
const HTTP_ALREADY_REPORTED = 208; // RFC5842
const HTTP_IM_USED = 226; // RFC3229
const HTTP_MULTIPLE_CHOICES = 300;
const HTTP_MOVED_PERMANENTLY = 301;
const HTTP_FOUND = 302;
const HTTP_SEE_OTHER = 303;
const HTTP_NOT_MODIFIED = 304;
const HTTP_USE_PROXY = 305;
const HTTP_RESERVED = 306;
const HTTP_TEMPORARY_REDIRECT = 307;
const HTTP_PERMANENTLY_REDIRECT = 308; // RFC7238
const HTTP_BAD_REQUEST = 400;
const HTTP_UNAUTHORIZED = 401;
const HTTP_PAYMENT_REQUIRED = 402;
const HTTP_FORBIDDEN = 403;
const HTTP_NOT_FOUND = 404;
const HTTP_METHOD_NOT_ALLOWED = 405;
const HTTP_NOT_ACCEPTABLE = 406;
const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
const HTTP_REQUEST_TIMEOUT = 408;
const HTTP_CONFLICT = 409;
const HTTP_GONE = 410;
const HTTP_LENGTH_REQUIRED = 411;
const HTTP_PRECONDITION_FAILED = 412;
const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
const HTTP_REQUEST_URI_TOO_LONG = 414;
const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
const HTTP_EXPECTATION_FAILED = 417;
const HTTP_I_AM_A_TEAPOT = 418; // RFC2324
const HTTP_MISDIRECTED_REQUEST = 421; // RFC7540
const HTTP_UNPROCESSABLE_ENTITY = 422; // RFC4918
const HTTP_LOCKED = 423; // RFC4918
const HTTP_FAILED_DEPENDENCY = 424; // RFC4918
/**
* @deprecated
*/
const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; // RFC2817
const HTTP_TOO_EARLY = 425; // RFC-ietf-httpbis-replay-04
const HTTP_UPGRADE_REQUIRED = 426; // RFC2817
const HTTP_PRECONDITION_REQUIRED = 428; // RFC6585
const HTTP_TOO_MANY_REQUESTS = 429; // RFC6585
const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; // RFC6585
const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451;
const HTTP_INTERNAL_SERVER_ERROR = 500;
const HTTP_NOT_IMPLEMENTED = 501;
const HTTP_BAD_GATEWAY = 502;
const HTTP_SERVICE_UNAVAILABLE = 503;
const HTTP_GATEWAY_TIMEOUT = 504;
const HTTP_VERSION_NOT_SUPPORTED = 505;
const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; // RFC2295
const HTTP_INSUFFICIENT_STORAGE = 507; // RFC4918
const HTTP_LOOP_DETECTED = 508; // RFC5842
const HTTP_NOT_EXTENDED = 510; // RFC2774
const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; // RFC6585
推荐文章: