laravel 中使用反射得到類的所有方法
阿新 • • 發佈:2018-12-06
以Carbon這個時間處理庫為例
$class = new \ReflectionClass('Carbon\Carbon');//獲取反射類 $methods = $class->getMethods();//獲取反射類的所有的方法 //各個方法的處理效果 foreach ($methods as $key => $value) { $hasMethod[] = $value->name; if (ends_with($value->name, 'String') && starts_with($value->name, 'to')) { echo $value->name . '() ---輸出格式為:' . PHP_EOL; echo Carbon::now()->{$value->name}() . PHP_EOL; } } dd($hasMethod);
結果:
toDateString() ---輸出格式為: 2018-12-06 toFormattedDateString() ---輸出格式為: Dec 6, 2018 toTimeString() ---輸出格式為: 11:23:45 toDateTimeString() ---輸出格式為: 2018-12-06 11:23:45 toDayDateTimeString() ---輸出格式為: Thu, Dec 6, 2018 11:23 AM toAtomString() ---輸出格式為: 2018-12-06T11:23:45+08:00 toCookieString() ---輸出格式為: Thursday, 06-Dec-2018 11:23:45 CST toIso8601String() ---輸出格式為: 2018-12-06T11:23:45+08:00 toRfc822String() ---輸出格式為: Thu, 06 Dec 18 11:23:45 +0800 toIso8601ZuluString() ---輸出格式為: 2018-12-06T03:23:45Z toRfc850String() ---輸出格式為: Thursday, 06-Dec-18 11:23:45 CST toRfc1036String() ---輸出格式為: Thu, 06 Dec 18 11:23:45 +0800 toRfc1123String() ---輸出格式為: Thu, 06 Dec 2018 11:23:45 +0800 toRfc2822String() ---輸出格式為: Thu, 06 Dec 2018 11:23:45 +0800 toRfc3339String() ---輸出格式為: 2018-12-06T11:23:45+08:00 toRssString() ---輸出格式為: Thu, 06 Dec 2018 11:23:45 +0800 toW3cString() ---輸出格式為: 2018-12-06T11:23:45+08:00 toRfc7231String() ---輸出格式為: Thu, 06 Dec 2018 03:23:45 GMT array:279 [ 0 => "useMicrosecondsFallback" 1 => "isMicrosecondsFallbackEnabled" 2 => "useMonthsOverflow" 3 => "resetMonthsOverflow" 4 => "shouldOverflowMonths" 5 => "useYearsOverflow" 6 => "resetYearsOverflow" 7 => "shouldOverflowYears" 8 => "safeCreateDateTimeZone" 9 => "__construct" 10 => "instance" 11 => "parse" 12 => "now" 13 => "today" 14 => "tomorrow" 15 => "yesterday" 16 => "maxValue" 17 => "minValue" 18 => "create" 19 => "createSafe" 20 => "createFromDate" 21 => "createMidnightDate" 22 => "createFromTime" 23 => "createFromTimeString" 24 => "createFromFormat" 25 => "setLastErrors" 26 => "getLastErrors" 27 => "createFromTimestamp" 28 => "createFromTimestampMs" 29 => "createFromTimestampUTC" 30 => "copy" 31 => "nowWithSameTz" 32 => "resolveCarbon" 33 => "__get" 34 => "__isset" 35 => "__set" 36 => "year" 37 => "month" 38 => "day" 39 => "hour" 40 => "minute" 41 => "second" 42 => "setDate" 43 => "setDateTime" 44 => "setTimeFromTimeString" 45 => "timestamp" 46 => "timezone" 47 => "tz" 48 => "setTimezone" 49 => "getDays" 50 => "getWeekStartsAt" 51 => "setWeekStartsAt" 52 => "getWeekEndsAt" 53 => "setWeekEndsAt" 54 => "getWeekendDays" 55 => "setWeekendDays" 56 => "getMidDayAt" 57 => "setMidDayAt" 58 => "setTestNow" 59 => "getTestNow" 60 => "hasTestNow" 61 => "hasRelativeKeywords" 62 => "translator" 63 => "getTranslator" 64 => "setTranslator" 65 => "getLocale" 66 => "setLocale" 67 => "setUtf8" 68 => "formatLocalized" 69 => "resetToStringFormat" 70 => "setToStringFormat" 71 => "__toString" 72 => "toDateString" 73 => "toFormattedDateString" 74 => "toTimeString" 75 => "toDateTimeString" 76 => "toDayDateTimeString" 77 => "toAtomString" 78 => "toCookieString" 79 => "toIso8601String" 80 => "toRfc822String" 81 => "toIso8601ZuluString" 82 => "toRfc850String" 83 => "toRfc1036String" 84 => "toRfc1123String" 85 => "toRfc2822String" 86 => "toRfc3339String" 87 => "toRssString" 88 => "toW3cString" 89 => "toRfc7231String" 90 => "toArray" 91 => "eq" 92 => "equalTo" 93 => "ne" 94 => "notEqualTo" 95 => "gt" 96 => "greaterThan" 97 => "gte" 98 => "greaterThanOrEqualTo" 99 => "lt" 100 => "lessThan" 101 => "lte" 102 => "lessThanOrEqualTo" 103 => "between" 104 => "closest" 105 => "farthest" 106 => "min" 107 => "minimum" 108 => "max" 109 => "maximum" 110 => "isWeekday" 111 => "isWeekend" 112 => "isYesterday" 113 => "isToday" 114 => "isTomorrow" 115 => "isNextWeek" 116 => "isLastWeek" 117 => "isNextMonth" 118 => "isLastMonth" 119 => "isNextYear" 120 => "isLastYear" 121 => "isFuture" 122 => "isPast" 123 => "isLeapYear" 124 => "isLongYear" 125 => "isSameAs" 126 => "isCurrentYear" 127 => "isSameYear" 128 => "isCurrentMonth" 129 => "isSameMonth" 130 => "isSameDay" 131 => "isDayOfWeek" 132 => "isSunday" 133 => "isMonday" 134 => "isTuesday" 135 => "isWednesday" 136 => "isThursday" 137 => "isFriday" 138 => "isSaturday" 139 => "hasFormat" 140 => "addCenturies" 141 => "addCentury" 142 => "subCenturies" 143 => "subCentury" 144 => "addYears" 145 => "addYear" 146 => "addYearsNoOverflow" 147 => "addYearNoOverflow" 148 => "addYearsWithOverflow" 149 => "addYearWithOverflow" 150 => "subYears" 151 => "subYear" 152 => "subYearsNoOverflow" 153 => "subYearNoOverflow" 154 => "subYearsWithOverflow" 155 => "subYearWithOverflow" 156 => "addQuarters" 157 => "addQuarter" 158 => "subQuarters" 159 => "subQuarter" 160 => "addMonths" 161 => "addMonth" 162 => "subMonths" 163 => "subMonth" 164 => "addMonthsWithOverflow" 165 => "addMonthWithOverflow" 166 => "subMonthsWithOverflow" 167 => "subMonthWithOverflow" 168 => "addMonthsNoOverflow" 169 => "addMonthNoOverflow" 170 => "subMonthsNoOverflow" 171 => "subMonthNoOverflow" 172 => "addDays" 173 => "addDay" 174 => "subDays" 175 => "subDay" 176 => "addWeekdays" 177 => "addWeekday" 178 => "subWeekdays" 179 => "subWeekday" 180 => "addWeeks" 181 => "addWeek" 182 => "subWeeks" 183 => "subWeek" 184 => "addHours" 185 => "addRealHours" 186 => "addHour" 187 => "addRealHour" 188 => "subHours" 189 => "subRealHours" 190 => "subHour" 191 => "subRealHour" 192 => "addMinutes" 193 => "addRealMinutes" 194 => "addMinute" 195 => "addRealMinute" 196 => "subMinute" 197 => "subRealMinute" 198 => "subMinutes" 199 => "subRealMinutes" 200 => "addSeconds" 201 => "addRealSeconds" 202 => "addSecond" 203 => "addRealSecond" 204 => "subSeconds" 205 => "subRealSeconds" 206 => "subSecond" 207 => "subRealSecond" 208 => "diffInYears" 209 => "diffInMonths" 210 => "diffInWeeks" 211 => "diffInDays" 212 => "diffInDaysFiltered" 213 => "diffInHoursFiltered" 214 => "diffFiltered" 215 => "diffInWeekdays" 216 => "diffInWeekendDays" 217 => "diffInHours" 218 => "diffInRealHours" 219 => "diffInMinutes" 220 => "diffInRealMinutes" 221 => "diffInSeconds" 222 => "diffInRealSeconds" 223 => "secondsSinceMidnight" 224 => "secondsUntilEndOfDay" 225 => "diffForHumans" 226 => "startOfDay" 227 => "endOfDay" 228 => "startOfMonth" 229 => "endOfMonth" 230 => "startOfQuarter" 231 => "endOfQuarter" 232 => "startOfYear" 233 => "endOfYear" 234 => "startOfDecade" 235 => "endOfDecade" 236 => "startOfCentury" 237 => "endOfCentury" 238 => "startOfWeek" 239 => "endOfWeek" 240 => "startOfHour" 241 => "endOfHour" 242 => "startOfMinute" 243 => "endOfMinute" 244 => "midDay" 245 => "next" 246 => "nextOrPreviousDay" 247 => "nextWeekday" 248 => "previousWeekday" 249 => "nextWeekendDay" 250 => "previousWeekendDay" 251 => "previous" 252 => "firstOfMonth" 253 => "lastOfMonth" 254 => "nthOfMonth" 255 => "firstOfQuarter" 256 => "lastOfQuarter" 257 => "nthOfQuarter" 258 => "firstOfYear" 259 => "lastOfYear" 260 => "nthOfYear" 261 => "average" 262 => "isBirthday" 263 => "isLastOfMonth" 264 => "serialize" 265 => "fromSerialized" 266 => "__set_state" 267 => "__wakeup" 268 => "format" 269 => "modify" 270 => "add" 271 => "sub" 272 => "getTimezone" 273 => "getOffset" 274 => "setTime" 275 => "setISODate" 276 => "setTimestamp" 277 => "getTimestamp" 278 => "diff" ]
IOC是一種思想,DI是實現IOC的一種方法
通過類名與方法,根據反射來實現
$class = new \ReflectionClass('Carbon\Carbon');//獲取反射類
$obj = $class->newInstance();//例項化物件
echo $obj->now()->toDateString() . PHP_EOL;
echo $obj->now()->toDateTimeString() . PHP_EOL;
echo $obj->now()->toTimeString() . PHP_EOL;```
結果:
2018-12-06
2018-12-06 11:35:41
11:35:41
```