青岛达内it培训 > 达内新闻
山东it培训:如何在PHP中输出javascript
- 发布:山东it培训
- 来源:山东it培训
- 时间:2018-04-20 16:45
JavaScript会见PHP
山东it培训告诉我们,该库使用JavaScript和Underscore.js方法丰富了以下PHP类型:数组(包括顺序和关联),字符串,数字(整数,浮点数,NaN),函数(可调用),集合(Iterable,ArrayObject,Iterator)和布尔值。每个添加的方法都是表示类型的类的静态方法。因此,我们可以直接访问任何内容,而不需要创建链 Arrays::map.
这有什么好处?我们来看看下面的代码片段:
<?php
use DsheikoExtrasArrays;
function numToArray(int $value, int $index, array $array): array
{
return [$value];
}
$res = Arrays::map(range(1,3), “numToArray”); // [[1],[2],[3]]
不同的是array_map, 库方法的接口与任何其他数组extras一致。 山东it培训告诉我们,第一个参数始终是源数组,接下来会迭代/预测回调,如果需要则返回其他任何内容。更?使用PHP数组函数,我们需要记住哪一个只接受源或引用的引用。 Arrays::*方法总是接受独立的值和引用。
你有没有注意到回调参数列表?是的,它根据ECMAScript规范进行了扩展。除了值之外,它总是接收元素索引(关联数组中的键)和初始数组。
另外,所有添加的方法都可以连接在一起:
<?php
use DsheikoExtrasArrays;
$res = Arrays::chain([1, 2, 3])
->map(function($num){ return $num + 1; })
->filter(function($num){ return $num > 1; })
->reduce(function($carry, $num){ return $carry + $num; }, 0)
->value();
对我来说,它看起来比以下更干净:
$array = [1, 2, 3];
$array = array_map(function($num){ return $num + 1; }, $array);
$array = array_filter($array, function($num){ return $num > 1; });
$array = array_reduce($array, function($carry, $num){ return $carry + $num; }, 0);
什么其他类型呢?如果我们接受一个字符串,它的工作原理是一样的:
<?php
use DsheikoExtrasStrings;
function sanitizeSearchTerm(string $value, int $maxLength): string
{
return Strings::chain($value)
->trim()
->replace(‘`[^0-9-_ p{L}]`u', ' ’)
->replace(‘` +`', ' ’)
->substr(0, $maxLength)
->value();
}
此外,我们还可以在同一链中操作多种类型:
<?php
use DsheikoExtrasArrays;
$res = Arrays::chain([“foo” => “FOO”, “bar” => “BAR”])
// input: array, output: string
->reduce(function($carry, $val, $key){ return $carry . “ {$key}:{$val} ”; }, “”)
// input: string, output: integer
->indexOf(“bar:”)
// input: integer, output: double
->toFixed(2)
->value();
实际上,你甚至不需要猜测入口点的类型。相反,你可以使用类型:
<?php
use DsheikoExtrasAny;
$res = Any::chain(new ArrayObject([1,2,3]))
->toArray() // value is [1,2,3]
->map(function($num){ return [ “num” => $num ]; })
// value is [[ “num” => 1, ]]
->reduce(function($carry, $arr){
$carry .= $arr[“num”];
return $carry;
}, “”) // value is “123”
->replace(“/2/”, “”) // value is “13”
->then(function($value){
if (empty($value)) {
throw new Exception(“Empty value”);
}
return $value;
})
->value();
正如你在这个例子中看到的,我也使用then类似于Promise API 的链式方法 .它接受链条的实际价值,并根据链条是否被修改进一步传递。
Underscore.js符合PHP
没有说服? 山东it培训告诉我们,那么,我们对类型做了很多操作,尤其是对于数组。数组函数有助于隔离迭代范围并提高性能,但在展示开发人员意图时,它们并不那么方便。实际上,我们经常解决类似的逻辑任务,我们可以简单地重用现有的模式。Extras库包含一组Underscore.js方法。它有所作为。试想一下,您有一系列键值对象(实际上是关联数组),其中携带有关剧院中所有剧本的数据。根据用户应用的过滤器,您需要搜索匹配的播放。每次使用回调时array_filter, 您都可以使用 Arrays:where:
$listOfPlays = [
[“title” => “Cymbeline”, “author” => “Shakespeare”, “year” => 1611],
[“title” => “The Tempest”, “author” => “Shakespeare”, “year” => 1611],
[“title” => “Hamlet”, “author” => “Shakespeare”, “year” => 1603]
];
$res = Arrays::where($listOfPlays, [“author” => “Shakespeare”, “year” => 1611]);
// [
// [“title” => “Cymbeline”, “author” => “Shakespeare”, “year” => 1611],
// [“title” => “The Tempest”, “author” => “Shakespeare”, “year” => 1611],
// ]
或者,假设您有一个描述产品的键值数据结构。您需要提取包含您选择的唯一对的较小对象(此处为关联数组):
$res = Arrays::pick([
'name' => 'moe',
'age' => 50,
'userid' => 'moe1',
//… 100 more lines
], 'name', 'age‘);
// ['name' => 'moe', 'age' => 50, ]
正如您可能注意到的,Extras可以反映PHP数组中的JavaScript类型数组和对象(分别为顺序和关联)。此外,可以从中获得类似于JavaScript普通对象的类型:
use DsheikoExtrasArrays;
$po = Arrays::object([“foo” => “FOO”, “bar” => [“baz” => “BAZ”]]);
echo $po->foo; // FOO
echo $po->bar->baz; // BAZ
该类型继承了Underscore Object方法:
use DsheikoExtrasArrays;
$po = Arrays::object([
“start” => 5,
“end” => 12,
]);
$res = $po->mapObject(function($val){
return $val + 5;
}) // PlainObject{ “start”: 10, “end”: 17 }
->invert(); // PlainObject{ 10: “start”, 17: “end” }
更多山东it培训相关资讯,请扫描下方二维码
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 哈尔滨
- 济南
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 长沙
- 昆明
- 太原
- 无锡
- 石家庄
- 南宁
- 佛山
- 珠海
- 宁波
- 保定
- 呼和浩特
- 洛阳
- 烟台
- 运城
- 潍坊
山东it培训:如何在PHP中输出javascript
- 发布:山东it培训
- 来源:山东it培训
- 时间:2018-04-20 16:45
JavaScript会见PHP
山东it培训告诉我们,该库使用JavaScript和Underscore.js方法丰富了以下PHP类型:数组(包括顺序和关联),字符串,数字(整数,浮点数,NaN),函数(可调用),集合(Iterable,ArrayObject,Iterator)和布尔值。每个添加的方法都是表示类型的类的静态方法。因此,我们可以直接访问任何内容,而不需要创建链 Arrays::map.
这有什么好处?我们来看看下面的代码片段:
<?php
use DsheikoExtrasArrays;
function numToArray(int $value, int $index, array $array): array
{
return [$value];
}
$res = Arrays::map(range(1,3), “numToArray”); // [[1],[2],[3]]
不同的是array_map, 库方法的接口与任何其他数组extras一致。 山东it培训告诉我们,第一个参数始终是源数组,接下来会迭代/预测回调,如果需要则返回其他任何内容。更?使用PHP数组函数,我们需要记住哪一个只接受源或引用的引用。 Arrays::*方法总是接受独立的值和引用。
你有没有注意到回调参数列表?是的,它根据ECMAScript规范进行了扩展。除了值之外,它总是接收元素索引(关联数组中的键)和初始数组。
另外,所有添加的方法都可以连接在一起:
<?php
use DsheikoExtrasArrays;
$res = Arrays::chain([1, 2, 3])
->map(function($num){ return $num + 1; })
->filter(function($num){ return $num > 1; })
->reduce(function($carry, $num){ return $carry + $num; }, 0)
->value();
对我来说,它看起来比以下更干净:
$array = [1, 2, 3];
$array = array_map(function($num){ return $num + 1; }, $array);
$array = array_filter($array, function($num){ return $num > 1; });
$array = array_reduce($array, function($carry, $num){ return $carry + $num; }, 0);
什么其他类型呢?如果我们接受一个字符串,它的工作原理是一样的:
<?php
use DsheikoExtrasStrings;
function sanitizeSearchTerm(string $value, int $maxLength): string
{
return Strings::chain($value)
->trim()
->replace(‘`[^0-9-_ p{L}]`u', ' ’)
->replace(‘` +`', ' ’)
->substr(0, $maxLength)
->value();
}
此外,我们还可以在同一链中操作多种类型:
<?php
use DsheikoExtrasArrays;
$res = Arrays::chain([“foo” => “FOO”, “bar” => “BAR”])
// input: array, output: string
->reduce(function($carry, $val, $key){ return $carry . “ {$key}:{$val} ”; }, “”)
// input: string, output: integer
->indexOf(“bar:”)
// input: integer, output: double
->toFixed(2)
->value();
实际上,你甚至不需要猜测入口点的类型。相反,你可以使用类型:
<?php
use DsheikoExtrasAny;
$res = Any::chain(new ArrayObject([1,2,3]))
->toArray() // value is [1,2,3]
->map(function($num){ return [ “num” => $num ]; })
// value is [[ “num” => 1, ]]
->reduce(function($carry, $arr){
$carry .= $arr[“num”];
return $carry;
}, “”) // value is “123”
->replace(“/2/”, “”) // value is “13”
->then(function($value){
if (empty($value)) {
throw new Exception(“Empty value”);
}
return $value;
})
->value();
正如你在这个例子中看到的,我也使用then类似于Promise API 的链式方法 .它接受链条的实际价值,并根据链条是否被修改进一步传递。
Underscore.js符合PHP
没有说服? 山东it培训告诉我们,那么,我们对类型做了很多操作,尤其是对于数组。数组函数有助于隔离迭代范围并提高性能,但在展示开发人员意图时,它们并不那么方便。实际上,我们经常解决类似的逻辑任务,我们可以简单地重用现有的模式。Extras库包含一组Underscore.js方法。它有所作为。试想一下,您有一系列键值对象(实际上是关联数组),其中携带有关剧院中所有剧本的数据。根据用户应用的过滤器,您需要搜索匹配的播放。每次使用回调时array_filter, 您都可以使用 Arrays:where:
$listOfPlays = [
[“title” => “Cymbeline”, “author” => “Shakespeare”, “year” => 1611],
[“title” => “The Tempest”, “author” => “Shakespeare”, “year” => 1611],
[“title” => “Hamlet”, “author” => “Shakespeare”, “year” => 1603]
];
$res = Arrays::where($listOfPlays, [“author” => “Shakespeare”, “year” => 1611]);
// [
// [“title” => “Cymbeline”, “author” => “Shakespeare”, “year” => 1611],
// [“title” => “The Tempest”, “author” => “Shakespeare”, “year” => 1611],
// ]
或者,假设您有一个描述产品的键值数据结构。您需要提取包含您选择的唯一对的较小对象(此处为关联数组):
$res = Arrays::pick([
'name' => 'moe',
'age' => 50,
'userid' => 'moe1',
//… 100 more lines
], 'name', 'age‘);
// ['name' => 'moe', 'age' => 50, ]
正如您可能注意到的,Extras可以反映PHP数组中的JavaScript类型数组和对象(分别为顺序和关联)。此外,可以从中获得类似于JavaScript普通对象的类型:
use DsheikoExtrasArrays;
$po = Arrays::object([“foo” => “FOO”, “bar” => [“baz” => “BAZ”]]);
echo $po->foo; // FOO
echo $po->bar->baz; // BAZ
该类型继承了Underscore Object方法:
use DsheikoExtrasArrays;
$po = Arrays::object([
“start” => 5,
“end” => 12,
]);
$res = $po->mapObject(function($val){
return $val + 5;
}) // PlainObject{ “start”: 10, “end”: 17 }
->invert(); // PlainObject{ 10: “start”, 17: “end” }
更多山东it培训相关资讯,请扫描下方二维码
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 厦门
- 哈尔滨
- 济南
- 福州
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 大连
- 长沙
- 昆明
- 温州
- 太原
- 南昌
- 无锡
- 石家庄
- 南宁
- 中山
- 兰州
- 佛山
- 珠海
- 宁波
- 贵阳
- 保定
- 呼和浩特
- 东莞
- 洛阳
- 潍坊
- 烟台
- 运城