泚ç®ãéãã
echo Phinq::create($people) ->groupBy(function($person) { return $person->residence->region; }) ->select(function($grouping) { $obj = new stdClass(); $obj->people = $grouping; $obj->region = $grouping->getKey(); return $obj; })->orderBy(function($obj) { return $obj->people->count(); }, true) ->aggregate(function($current, $next) { $count = $next->people->count(); return $current . sprintf( "%d %s (%s) live in the %s region\n", $count, $count === 1 ? 'person' : 'people', $next->people->aggregate(function($current, $next) { if ($current !== null) { $current .= ', '; } return $current . sprintf('%s [%s]', $next->name, $next->residence->code); }), $next->region ); });
CïŒãŸãã¯é¢æ°åèšèªã誰ãèŠãã®ã-ãã®åäœãèŠããšãç®ãäžžãããŸãïŒæåã«è»éããé£ã³åºããªãå ŽåïŒã ãããŠãããããã圌ã¯æ£ããã§ãããã ããããããªãã¯ãŸã ããã奜ãã«ããããšãã§ããŸãïŒ $lowNums = from('$n')->in($numbers)-> where('$n < 5')-> store($digits)->into('digits')-> select('$digits[$n]');
LINQãPHPã«ç§»æ€ããåç©åã©ã€ãã©ãªãã2å¹ã®åç©ãèŠãŸããã LINQã¯å®éã«ã¯èšèªçµ±åã¯ãšãªãã€ãŸãèšèªã«çµ±åãããSQLã®ãããªã¯ãšãªã§ãã CïŒã§ã¯ãLINQã¯æ§æããªãŒã«äŸåããŠããã2ã€ã®åœ¢åŒã®èšè¿°ããããŸããã次ã®å幎çŽã«åããŠPHPã§ãã®ãããªå®ç©ãåŸ
ã€å¿
èŠã¯ãªããããLINQã¯SQLã«äŒŒãã¡ãœãããåããã©ã€ãã©ãªã§ãããšèŠãªãããŸãã
LINQãPHPã«ç§»æ€ããå€ãã®ã©ã€ãã©ãªããããŸãã 1ã€ã ããå®éã«ç§»æ€ãããå Žå...ãããããã®è©³çŽ°ã«ã€ããŠã¯åŸã§ããã ãä»ã®ãšãããã¢ã«ãã¡ãããé ã«ã䜿çšå¯èœãªãã¹ãŠã®éžæè¢ãæ€èšããŸãã èªã¿åãã¯ãã·ãŒã±ã³ã·ã£ã«ãŸãã¯æåŸããã®ããããã«ãªããŸãã
LINQ for PHP
ããã¯åœŒã®ã³ãŒããã©ããªã«å¥åŠã«èŠããŠããã©ããªèšèªã§ãèªåã®å¥œããªãã®ã«ãªã¡ã€ã¯ããæºåãã§ããŠãã人ã«ãã£ãŠæžããããã®ã§ãã æåã®çåã¯ãLinqSamples.phpãèŠããšéã«å¿ã³èŸŒã¿ãŸãã class Console { public static function WriteLine() { $args = func_get_args(); $string = array_shift($args); foreach ($args as $i => $value) { if (is_bool($value)) { $value = $value ? 'True' : 'False'; } $string = str_replace('{'.$i.'}', $value, $string); } echo $string.'<br />'; } ...
ãã®ã¢ãããŒãã§ã¯ã移æ€ãããLINQãå
ã®LINQãšåºå¥ããã®ãé£ãããšæããŸããïŒ ãããŠãããªãã¯æ£ããã§ãããã ïŒCïŒïŒïŒ from n in new int[] { 1, 2, 3 } where n % 2 == 0 select n * 2;
ãªã£ãïŒPHPïŒïŒ from('$n')->in(array(1,2,3))->where('$n % 2 == 0')->select('$n *2');
ãããã§ããã
åæ çãªäœè«ã ãªãç·ã§ããïŒ <ç§ã®ãæ°ã«å ¥ãã®IDE>ã®ãããã®ã³ãŒãã¯åããã®ã匷調ããŠããŸããïŒ ãããããªãã¡ã¯ã¿ãªã³ã°ã¯ã©ãã§ããïŒ ããããçŒé¡ã¯ã©ãã§ããïŒ ãããããŸããã 匷調衚瀺ããªãã¡ã¯ã¿ãªã³ã°ããããŸãããå°ããªãã®ããã¡ãããæ¯é ããŸãã PHPã®ã¯ããŒãžã£ãŒæ§æã¯éåžžã«åé·ã§ããããïŒ
x => x + 1
ãš
function ($x) { return $x + 1; }
ãšæ¯èŒããŠãã ããïŒãã»ãšãã©ãã¹ãŠã®LINQããŒãéçºè ããã©ã€ã³ã©ã ãããçºæããŸãã ã©ããã§ã¯ããŒãžã£ãŒã䜿çšã§ããå Žæãã©ãã-ãã¡ã³ããŒãªãé¢æ°ãã€ã³ã¿ãŒãïŒæåå
'strlen'
ããã³é å
array($object, 'methodName')
ïŒãã©ãã-ã©ã ããã©ãã-ãããŠãå¥ãš3çªç®ã®äž¡æ¹ã ãã¹ãŠã®ãªãã·ã§ã³ã¯ãLINQ for PHPã§äœ¿çšã§ããŸãã
ã©ã€ãã©ãªã®äžŠã¹æ¿ããèŠãŠã¿ãŸãããã ãèãã¯LinqForPhp_Objects_Sequence :: doIterationã¡ãœããã«é ãããŠããŸãïŒgetIteratorïŒïŒãåŒã³åºããããšãoperationsé åã«å ¥åããããã¹ãŠã®æäœãé çªã«å®è¡ãããŸãã æäœã¯ããã§ãŒã³ã®ãé 延ããªãã§é£ç¶ããŠå®è¡ãããŸããã€ãŸããwhereïŒïŒ-> anyïŒïŒãåŒã³åºããšãã·ãŒã±ã³ã¹å šäœããã£ã«ã¿ãªã³ã°ãããŸãã æåã®åŒã³åºãã®åŸãçµæã¯ãã£ãã·ã¥ãããŸãã
èè ã¯ãPHPDocã«ã³ã¡ã³ããè¿œå ããããæ±ããããŸããããé·ãéãããã ãã§ã¯äžååã§ãããã³ãŒãã®5çªç®ã®éšåã¯ãããããææžåãããŠããŸãã ã¯ããPHPDocã®æ§æã¯äœæè ã«ãã£ãŠäœæããããã®ã§ã¯ãããŸããã1ã€ã®ãã©ã¡ãŒã¿ãŒã«åŒæ°åããããŸããã
æšæºã¡ãœãããå®è£ ãããŸãïŒAggregateãAllãCastãDefaultIfEmptyãExceptãFirstOrDefaultãGroupByãOrderByãReverseãSingleãTakeãªã©ã åèšçŽ50åã ListãDictionary-äºååéã³ã¬ã¯ã·ã§ã³ã®ããŒããžã®å€æããããããã€ãã®æªç¥ã®çç±ã§ã¡ãœããã®äžéšãNotImplementedExceptionãã¹ããŒããoffsetExistsãarray_key_exists
array_key_exists($index)
ãšããŠå®è£ ãã
array_key_exists($index)
ïŒèªã¿åãïŒã 質åãžã®çããæ®ããŸãããªããããã®ã³ã¬ã¯ã·ã§ã³ãå¿ èŠãªã®ã§ããïŒ
IDEã«ãªãã£ããã®ã¯éåžžã«è¯ãæãã§ã-PhpStormã¯å³åº§ã«æ瀺çãªãã°ã衚瀺ããŸãã åå²ãã¹ãïŒãŒãç¹ãŒãã
çµè«ïŒå¥œå¥å¿syntaxçãªæ§æãé 延èšç®ããã¹ããããã¥ã¡ã³ããã¯ãœã³ã¬ã¯ã·ã§ã³ãå€æ°ã®ãã°ã¯ãããŸããã 䜿çšã¯æšå¥šãããŠããŸããã
ãã£ã³ã¯
ããã¯å¥åŠãªæããæªæ¥ãä¿¡ãã人ã«ãã£ãŠæžãããŸããã é¢æ°ãåãå ¥ãããã¹ãŠã®åŒæ°ã«ã¯ãã¯ããŒãžã£ãŒã¿ã€ãã«é¢ããå¶éããããŸãã æ¯èŒè ïŒæ¯èŒè ïŒ-EqualityComparerã€ã³ã¿ãŒãã§ã€ã¹ãªã©ã ã³ã¬ã¯ã·ã§ã³ã«ã¯é åããããŸãã 次ã®ããã«ãªããŸãã public function groupJoin(array $collectionToJoinOn, Closure $innerKeySelector, Closure $outerKeySelector, Closure $resultSelector, EqualityComparer $comparer = null)
äžèŠè«ççã§ãããããã§æãåºããŠãã ãã...ã¯ããŒãžã£ãŒã«å ããŠãæååãšé
å[ãªããžã§ã¯ããã¡ãœããå]ã®åœ¢åŒã®ãã€ãã£ããªè¶³ã®ãããªãé¢æ°ãã€ã³ã¿ãŒããããããããã¯çªç¶ãã©ã¬ã¹ããééããŸãã EqualityComparerã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãequalsã¡ãœããã1ã€ãããããŸããïŒããã·ã¥ãååŸããæ¹æ³ã¯ãããŸãããããã¯ããã€ãã£ãã®ãã«ãã·ã¥é£æ³é
åã®å
éšã®ç®¡çã§ãïŒã ãããŠãããããã®æ¯èŒã®ããã«ãæ°ããã¯ã©ã¹ãäœæããŠãã ãããé¢æ°ãæž¡ããŸããã groupJoinã§ã¯ãPhinqã¯ãšãªã®å®è¡çµæãæž¡ãã®ãè«ççã§ããããã®ã¿ã€ãã¯é
åã§ã¯ãããŸããã ãããŠãIteratorãIteratorAggregateã®ãããªSPLã€ã³ã¿ãŒãã§ã€ã¹ã¯ãçªç¶é
åã§ããªããªããŸãã æ°åãšfrom-where-selectã䜿çšããŠãµã³ãã«ã®ãã¬ãŒã ã¯ãŒã¯å
ã«ãšã©ãŸã£ãŠããéãããã¹ãŠé 調ã§ãã å³ããçŸå®ã«çŽé¢ãããšãå°é£ã«ãªããŸãã
ãã¹ãŠã®ã¡ãœãããPHPDocããã¥ã¡ã³ããæ€åºããŸãã ã¡ãœããããšã«ç¬ç«ããŠæ£çŽã«æžãããŠããŸãã ãŸããã»ãšãã©æ£çŽã«-äžéšã®å Žæã§ã¯ã³ããŒããŒã¹ããæããããšãã§ããŸãã
/** * Correlates elements into groupings of the two collections based on matching keys * * This is basically an outer join. * * @param array $collectionToJoinOn * @param Closure $innerKeySelector Takes one argument, the element's value, and returns the join key for that object * @param Closure $outerKeySelector Takes one argument, the element's value, and returns the join key for that object * @param Closure $resultSelector Takes two arguments, the matching elements from each collection, and returns a single value * @param EqualityComparer $comparer * @return Phinq */ public function groupJoin(...
é¢æ°ã®æ©èœãç解ããŠããŸããïŒ ãããŠãäœãresultSelectorãåãå
¥ããŠè¿ããŸããïŒ ç解ããããäžèšã®ããã¥ã¡ã³ã¿ãªãŒã®ã³ã¡ã³ããèªãã§ããªãã®ã§ãCïŒã§GroupJoinã1å䜿çšããã ãã§ãã
åèš50åã®æšæºã¡ãœãããå®è£ ããŸãããããªããšãªãé 延çã«å®è£ ããŸããã ã³ã¬ã¯ã·ã§ã³å ã®å¯äžã®èŠçŽ ãnullã®å Žåãäœããã®çç±ã§ã·ã³ã°ã«ã¯äŸå€ãã¹ããŒããŸãã äœããã®çç±ã§é åã¯ããŒã«é¢ããæ å ±ãã¹ããŒããŸãã å埩åã¯ãPhinqãªããžã§ã¯ããäœæãããšããã«é åã«å€æãããŸãïŒãã¡ãããããŒã«é¢ããæ å ±ããããŸããïŒã åºåå ã®ããŒã䜿çšããŠäœããååŸããå¯äžã®æ¹æ³ã¯ãOïŒNïŒäŸ¡æ Œã®offsetGetããã³offsetSetå®è£ ãæã€Dictionaryã³ã¬ã¯ã·ã§ã³ã«å€æããããšã§ãã åã®ã©ã€ãã©ãªãšã¯ç°ãªããå°ãªããšãListã¯å®è£ ãããŠããŸããïŒããããtoListã¡ãœãããnoïŒã
åã®ã©ã€ãã©ãªã®å Žåã®ããã«ãèšç®ã®ãã¹ãŠã®é 延ã¯ãçµæããã£ãã·ã¥ããããšã«åž°çããŸãã
ã©ã€ãã©ãªã§äœãè¯ãã®ã§ããïŒ ãã¹ãããããŸãã ãã£ã㌠ãã¡ãããè¡šé¢çã§ãã æè¯ã®å Žåãã¡ãœããããšã®ããŒã¹ã®ãã¢ã å¢çã±ãŒã¹ãªãã ãããããã¹ãããããŸãã ããã¯ããã§ãã
çµæïŒåŒæ°ã®ã¿ã€ãã«ã¯å³ããå¶éããããããŒã¯ãããŸãããè¡šé¢ãã¹ãã¯ãããŸããè¡šé¢ããã¥ã¡ã³ããŒã·ã§ã³ã¯ãããŸãããã°ã¯ã»ãšãã©ãããŸãããã¯ãœã³ã¬ã¯ã·ã§ã³ããããŸãã 䜿çšã¯æšå¥šãããŠããŸããã
Phinq 2.0
ããã¯æããæªæ¥ã«å¹»æ» ããç·ã«ãã£ãŠæžãããŸããïŒæååã©ã ãã«ããã«ã¡ã¯ããããŸã§ã®ãšãããé¢æ°ã®åŒæ°ã®å¶éã å¯äžã®æ¹æ³ãåããEqualityComparerã¯åŒãç¶ã䜿çšã§ããŸãã SQLã®èª¿å³æã䜿çšããŠSQLã¯ãšãªãäœæããŸãã ãPhinqã«ã¯æ¬åŒ§ã§å²ãŸããåŒãç¶ãåé ããŒã«æŒç®åïŒ 'ïŒ'ïŒãå¿ èŠã§ãããšãã圢åŒã®äŸå€ã䜿çšããPHPã«ããPHP解æã ç§ãã¡ã¯é·ãéæžãã§ããã......ãããŠããã¡ãããç§ãã¡ã¯è¿œå ããŸããã å€ãPhinqãæ°ããæ¹æ³ã§æžãæããããã«ãèè ã¯éãæã¡ãŸããã é éãµãŒããŒäžã®SVNã®ãã©ã³ã/branches/2.0ã¯ãæããã¹ã¿ãŒããšæ²ãããšã³ãã®å¯äžã®èšåã§ãã
çµè«ïŒäœããããŸãããç§ãã¡ã¯éãéããŸãã 䜿çšã¯æšå¥šãããŠããŸããã
PHPLinq
誰ããå¥ã®DALãå¿ èŠãšããŠãããšä¿¡ããå ã®LINQã®æ©èœã«ã€ããŠæŒ ç¶ãšããèããæã£ãŠãã人ã«ãã£ãŠæžãããŸããã 圌ã®ç解ã§ã¯ãorderByãselectãskipãtakeãããã³æ®ãã®é¢æ°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®é åºãå³å¯ã«èšå®ãããŠããããïŒãŸããã©ãã«ãææžåãããŠããªãããïŒãéèŠã§ã¯ãªãä»»æã®é åºã§åŒã³åºãããšãã§ããŸãã 圌ã®ç解ã§ã¯ãééã¯èª°ã«ãšã£ãŠãäžå¿ èŠãªæ°ããã€ãŸããªããã®ã§ãã 圌ã®ç解ã§ã¯ãã·ã³ã°ã«ãšãã¡ãŒã¹ãã¯ãŸã£ããåããã®ã§ãã 圌ã®ç解ã§ã¯ããã¹ãã¯print_rãåŒã³åºãPHPã¹ã¯ãªããã§ãã 圌ã®ç解ã§ã¯ãããã¥ã¡ã³ã¿ãªãŒã³ã¡ã³ãã¯ã³ããŒãããã¡ãœããåãšåŒæ°åã®åæã§ãã 圌ã®ç解ã§ã¯ããããžã§ã¯ãã®ããã¥ã¡ã³ãã¯VisualStudioã®åœ¢åŒã®ã¯ã©ã¹å³ã§ãããã¡ãããLINQ to ObjectsãLINQ to ZendDbãLINQ to AzureãLINQ to MS SQLãLINQ to MySQLãLINQ to SQLiteã®ãµããŒãã«ã€ããŠè©±ãããšãã§ããŸãã ãããããã®ã©ã€ãã©ãªããäžè¬çãªé¢æ°åããã°ã©ãã³ã°ãç¹ã«ããã¥ã¡ã³ãããã¹ããªãã®LINQãšã¯é¢ä¿ã®ãªãäœã³ãŒãã³ãŒãã§ããå Žåããã®å€æ§æ§ãå¿ èŠãªã®ã¯èª°ã§ããïŒ
ããã ã©ã€ã³ïŒ LINQ to *ã®å£®å€§ãªéãä»ã®ãã¹ãŠã®å£®å€§ãªäžè¶³ã 䜿çšã¯æšå¥šãããŠããŸããã
ïŒãããããç±å¿ãªèªè ã¯ãã§ã«çåãæ±ããŠããŸãïŒãã€äœããæšå¥šãããã®ã§ããããïŒãã€ã§ããïŒåŸ ã£ãŠããŸããé¡ã£ãŠããŸã...ä¿¡ããŠããŸãããããŠãç§ãã¡ã¯ããã«èªã¿ãŸããïŒ
Plinq
ããã¯ãPHPã§LINQã䜿çšãããã£ãããã³ãŒãã£ã³ã°ãéåžžã«é¢åã ã£ãããããªã¹ãã®äººã«ãã£ãŠæžãããŸããã ãããã£ãŠã20åãå°ãè¶ ããã¡ãœããããµããŒããããŠããŸããããã®ãã¡ThenByãAggregateããããŸããã ã¬ã€ãžãŒã³ã³ãã¥ãŒãã£ã³ã°ã¯ãŸã£ãããããŸããã è¡ãã©ã ããã¯ãããŸãã-ã¯ããŒãžã£ãŒã®ã¿ãããŒãã³ã¢ã®ã¿ã§ãïŒåŒæ°ã®ã¿ã€ãã«å¶éããªããPHPã®çŸåšã®ãã°ããªãå Žåãè¡ãé¢æ°ãžã®ãã€ã³ã¿ãŒããæ©èœããŸãïŒã ã¢ã°ãªã²ãŒã¿ãŒé¢æ°ã«ã¯ããŒãžã£ãŒãæž¡ãããšã¯å¿ é ã§ãã ã»ãšãã©ã®å ŽåãPlinqã¡ãœããã¯æšæºé¢æ°ã®ã©ãããŒã§ãããããã«é åãšã€ãã¬ãŒã¿éã®å€æãè¡ã£ãŠããŸããã©ã€ãã©ãªã¯äœãè¯ãã§ããïŒ ãã¹ãã®å€èŠ³ããããŸã-é¢æ°ããšã®assert'ovã®ãã¢ã 次ã®ããã«ãªããŸãã
function TestOrderBy(&$testArray) { $p = new Plinq($testArray); $result = $p->OrderByDescending(function($k, $v){ return $v['int']; }); assert('key($result) == "key_999"'); $p = new Plinq($testArray); $result = $p->OrderByDescending(function($k, $v){ return $v['date']; }); assert('key($result) == "key_999"'); $p = new Plinq($testArray); $result = $p->OrderBy(function($k, $v){ return $v['string']; }); assert('key($result) == "key_0"'); }
ïŒ$ testArrayã«ã€ããŠã¯èããªãã§ãã ãã-ããã§ã¯èª¬æããŸããã138057æåã®ãã®ãããª1è¡ã®ã€ããžã¯æååã ãšèšããŸããããã¯ãIDEãã®ã¢ã§ãããããã«ããŸããã¢ã¬ã€ã®æ§è³ªã«ã€ããŠã¯èª¿ã¹ãŠããŸããã
ããã¥ã¡ã³ã¿ãªãŒã®ã³ã¡ã³ãã«äŒŒããªã¢ãŒãã®ãã®ããããŸãã ããããããDiffé¢æ°ããããŸããŸãªã¢ã€ãã ãèŠã€ãããããšãããããŸãïŒåãã€ãããšã¯èšããŸããïŒã
çµè«ïŒããã©ã«ã¯ãªããæ°Žã¯ãããŸãããæ€ç©ã¯ãããŸãããããã¯äººå£ããããŸã...ããããããã¯äœã«ãã£ãŠã人å£ããããŸããã 䜿çšã¯æšå¥šãããŠããŸããã
ããã ãã§ã æ ç»ã¯çµãããŸããã PHPã®LINQããŒãã¯çµäºããŸããã
...ããããŸãããããããŸããããã®ãããªæ²ããã¡ã¢ã§çµãããªãããã«ãLINQããŒãã§ã¯ãªãã©ã€ãã©ãªã«ã€ããŠèšåããŸãã ããããéã®ç¡ããã«ã¯ã«ãã¹ã¯éã§ãã
Underscore.php
Underscore.jsã倧奜ããªç·æ§ã«ãã£ãŠæžãããŸããïŒããããšããK.OãïŒãUnderscore.jsãšã¯äœã§ããïŒ ããã¯ãJavaScriptã®ãã¹ãŠã®æ©èœãå®è£ ããã©ã€ãã©ãªã§ãã ååã¯ããããããã£ã«ã¿ãŒãåæžãå¹³åŠåãæéã§äœãããããŸããïŒ ããã§ãªãå ŽåãããããéžæãããŠããããšãreduceãéçŽãããŠããããšãtimesãç¹°ãè¿ãããŠããããšãªã©ãèŠããŠããå¿ èŠããããŸãã äžè¬çã«ãLINQã匷ãæãåºãããŸãããããã§ã¯ãããŸããã é 延èšç®ã¯ãããŸããã
ãããã£ãŠãUnderscore.phpã¯ãPHPã®Underscore.jsããŒãã§ãã ã©ã€ãã©ãªã¯éåžžã«é¢é£ããŠãããããããŒãžã§ã³çªå·ãåæãããŸãã
ããã¥ã¡ã³ã¿ãªãŒã®ã³ã¡ã³ãã¯ãŸã£ãããããŸããã åã¡ãœããã«ã¯ãå®æçãã€ç°¡æœãªæ¹æ³ããããŸãã ãã¡ããäžäŸ¿ã§ãããããªãã¯çããããšãã§ããŸãã ãµã€ãã«ã¯ãŸã ããã¥ã¡ã³ãããããããªãæ£æ°ã§ãã
ãã¹ãããããŸãïŒUnderscore.jsããã³ããŒããããã®ãšãè¿œå ã®ãã¹ãã®äž¡æ¹ã§ãã
ã³ãŒãã®å質ã¯äžååã§ãã éçé¢æ°ã¯éçãšããŠããŒã¯ãããŸããã ã³ãŒã«ããã¯ã¯$ fïŒïŒãšããŠåŒã³åºãããŸããã€ãŸããé¢æ°ãã€ã³ã¿ãŒé åãå¿ããããšãã§ããŸãïŒPHPã«ã¯ãã®ãããªæ¬ é¥ããããŸãïŒã ã©ã ãã¯ãµããŒããããŠããŸããã
ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
$numbers = __($numbers)->chain() ->select(function($n) { return $n % 2 === 0; }) ->reject(function($n) { return $n % 4 === 0; }) ->sortBy(function($n) { return -$n; }) ->value();
çµè«ïŒä»ã®ã¡ãœããåããããããã¥ã¡ã³ã¿ãªãŒã®ã³ã¡ã³ãã¯ãããŸããããã¹ãããããã©ã ãã¯ãããŸããã 䜿çšãæšå¥šãããŸãããé¢æ°åããã°ã©ãã³ã°ã«å¯Ÿãã匷ãè¡åãããå Žåã®ã¿ã§ãã
æçµçµæ
éæ¿ïŒçµè«ïŒèšäºã®2çªç®ã®éšåãå£ã²ãã®ããèªåããåŸ ã¡ãŸãã
è«
æ¬è³ªãšãã€ã³ãã§ããããã°ãæ©èœã«æ祚ããŠããã®ãããªã©ã€ãã©ãªã§ã®éçºãæªå€¢ããå°ãæžããããšãã§ããŸããPhp
- ã€ãã¬ãŒã¿::ããŒïŒïŒã¯ãæ°åãšæååã®ã¿ãè¿ãããšãã§ããŸãã
- 45684 foreachãããŒã¿ã€ãã«äŸåããªããšããèŠæ±
- ã¯ããŒãžã£ãŒã®æ§æãççž®ããæ©èœããããããããåæãªã©ãæ·»ä»ãããŸãã-æ©èœãèšèšããéçºè ãæåãå°œãããŸããã ãããããã®æ©èœã¯ãnafig needããšããçµæã§éããããŸããã :-(
PHPStorm IDE
- è¡å ã®PHPã³ãŒã
- PHPã³ãŒãåæ
- WI-11110æªå®çŸ©ã®ã¡ãœããïŒã¯ããŒãžã£ãŒã䜿çšãããšãæªå®çŸ©ã®ã¡ãœããã誀ã£ãŠå ±åãããŸã
- PHPDocã³ã¡ã³ã
- {link}ã2åç¶ããŠäœ¿çšãããå ŽåãPhpDocã¯ã€ãã¯ããã¥ã¡ã³ãã®WI-8270ãšã©ãŒ
åç §è³æ
- Underscore.php -PHPã®LINQããŒãã§ã¯ãããŸãã
- Underscore.js -JavaScriptã®LINQããŒãã§ã¯ãããŸãã
PSåæ§ã®èšäºãè±èªã§æçš¿ã§ããå ŽæãæããŠãã ããã