标签 laravel 下的文章

laravel获取路由的两种方式

$routes = app()->router->getRoutes();
//第一种
foreach ($routes as $k => $value) {
    if($value->action['namespace'] == 'App\Http\Controllers\Api') {
        $path[$k]['uri'] = $value->uri;
        $path[$k]['path'] = $value->methods[0];
    }
}
dump($path);

//第二种
$data = [];
$routes = collect($routes)->map(function ($route) use ($data) {
    if($route->action['namespace'] == 'App\Http\Controllers\Api') {
        $data['uri'] = $route->uri;
        $data['path'] = $route->methods[0];
    }
    return $data;
})->filter()->all();
dump($routes);

mac搭建自己的微服务

这里使用的是laravel框架,基于laravel的组件larvels(laravel+swoole)

LaravelS 基于 Swoole 加速 Laravel/Lumen,常驻内存,内置 HTTP/WebSocket Server,支持 TCP/UDP Server、自定义进程、异步的事件监听、异步任务队列、毫秒级定时任务、平滑 Reload,与 Nginx 配合搭建高可用分布式服务器群,开箱即用。

1、 安装laravel框架(这步直接省略)
2、 直接安装laravelS

composer require "hhxsv5/laravel-s:~3.5.0" -vvv

3、 注册Service Provider
修改文件 config/app.php

 'providers' => [
        Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class,
    ],

4、 发布配置和二进制文件

php artisan laravels publishconfig\laravels.php就是你配置文件

5、 运行

php bin/laravels start

1F999F85-406B-4AD7-8E72-B95CD21F632E.png
这样就算是初步完成启动了,通过config\laravels.php配置的端口通过http请求完成访问

6.将ip发布到nginx并配置一个域名

gzip on;
gzip_min_length 1024;
gzip_comp_level 2;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
gzip_vary on;
gzip_disable "msie6";
#nginx upstream用于负载均衡
upstream swoole {
    # 通过 IP:Port 连接
    #多服务器负载均衡(没有服务器,拿端口来顶替),模拟多个服务器
    server 127.0.0.1:5200 weight=5 max_fails=3 fail_timeout=5s;#可设置参数请求
    server 127.0.0.1:5201 weight=5 max_fails=3 fail_timeout=5s;#可设置参数请求
    # 通过 UnixSocket Stream 连接,小诀窍:将socket文件放在/dev/shm目录下,可获得更好的性能
    #server unix:/yourpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
    #server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
    #server 192.168.1.2:5200 backup;
    keepalive 16;
}

server {
    listen       80;
    client_max_body_size 512m;
    server_name  aa.com;
    # root  /Users/huchaoran/Desktop/所有项目/muchTemplate/public;
    autoindex off;
    index index.html index.php;

    location / {
        # try_files $uri $uri/ /index.php?$query_string;
        try_files $uri @laravels;
    }
    # location ~ \.php(.*)$ {
    #       fastcgi_pass   127.0.0.1:9000;
    #        fastcgi_index  index.php;
    #        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
    #        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #        fastcgi_param  PATH_INFO  $fastcgi_path_info;
    #        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
    #       include        fastcgi_params;
    # }
    # location ~ /\.ht {
    #     deny all;
    # }
    # if (!-e $request_filename) {
    #     rewrite ^/(.*)$ /index.php/$1;
    # }
    location @laravels {
        # proxy_connect_timeout 60s;
        # proxy_send_timeout 60s;
        # proxy_read_timeout 120s;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header Server-Protocol $server_protocol;
        proxy_set_header Server-Name $server_name;
        proxy_set_header Server-Addr $server_addr;
        proxy_set_header Server-Port $server_port;
        access_log  /Users/huchaoran/Desktop/所有项目/muchTemplate/access.log;
        # “swoole”是指上面的upstream定义的swoole
        proxy_pass http://swoole;
    }
}

这里就完成了搭建laravel微服务,后面的我会一步步更新的

laravel5.8辅助函数

1.Logger
logger 辅助函数可以在系统日志等级为 debug 的时候记录一些日志信息。

logger('Product was changed.', ['id' => $product->id]);

上述代码会在日志文件中写入一行信息:

[2019-07-30 14:28:22] local.DEBUG: Product was changed. {"id":4}

如果没有传入参数,那么 logger 函数将会返回 Logger 实例,这样你可以自己控制记录日志的等级。

logger()->error('An error occurred');

上述代码会在日志文件中写入这样的一行信息:

[2019-06-14 09:56:12] local.ERROR: An error occurred

2. 划分一个数组
Arr::divide() 方法允许你将一个数组分成俩数组。函数的返回值为两个数组,一个包含原始数组的键,另一个包含原始数组的值。

use Illuminate\Support\Arr;

[$keys, $values] = Arr::divide(['name' => 'James', 'age' => 33]);

$keys: ['name', 'age']
$values: ['James', 33]

3. Blank
blank 辅助函数会检查给定值是否为空值。空值代表 null 值 、只包含空格的字符串、空数组、或者空字符串。

提示:Booleans 布尔值,不视为空值

blank('');
blank('   ');
blank(null);
blank(collect())
// 以上均返回 true

blank(0);
blank(true);
blank(false);
// 以上将返回 false

4. Dump 变量
如果要调试一个或多个变量,使用 dump 变量非常方便。

dump($variable);

还可以通过向 dump 函数传递额外的变量来调试多个变量。

dump($var1, $var2, $var3);

除了 dump 函数之外,还有另一个函数。这个辅助函数就是 dd , 意思是 dump and die 。这个函数的用法和 dump 一样。 dd 函数不仅执行了 dump ,还会终止执行语句( die() 的效果 )。
5. 路径
Laravel 有多个关于路径的辅助函数,你可以使用这些函数来获取特定目录的完全路径。

echo storage_path(); // 输出:"C:\Path\To\My\Project\storage"

当然你还可以将参数传递给路径辅助函数,该函数将附加到返回的路径中:

echo storage_path('attachment.pdf');  // 输出: "C:\Path\To\My\Project\storage\attachment.pdf"

6. Slug
要将给定的字符串生成 URL 友好的字符串,可以使用 Str::slug 函数。

$slug = Str::slug('Laravel Is Awesome');
// $slug: "laravel-is-awesome"

默认的分隔符是 连字符(-),当然你也可以通过向函数传递第二个参数来覆盖它。

$slug = Str::slug('Laravel Is Awesome', '&');
// $slug: "laravel&is&awesome"

7. 数组是否具有值
Arr:has 方法可用于使用 “.” 符号来检查数组中是否存在某个项或多个项。
要检查多个项,只需将数组传递给方法而不是传递字符串。

use Illuminate\Support\Arr;
$blogs = ['blog' => ['title' => 'My blog', 'published' => true]];
$contains = Arr::has($blogs, 'blog.title'); // true
$contains = Arr::has($blogs, ['blog.title', 'blog.published']); // true
$contains = Arr::has($blogs, ['blog.title', 'blog.author']); // false

8. UUID
调用 Str::uuid 方法会生成一个 UUID:

use Illuminate\Support\Str;
echo (string) Str::uuid(); // "2ad4abcc-8adc-47b6-b21e-9e5497a8af1b"

9. Optional
optional 辅助函数允许你访问作为参数传递的对象的属性或调用方法。此函数接受任何参数。

如果传递给函数的对象是 null , 则属性和方法将返回 null ,而不会抛出错误

print optional($blog->author)->full_name;

如果在上面的示例中设置了 $blog->author ,那么将打印 $blog->authorfull_name 。如果由于某种原因不存在 $blog->author ,就不会抛出错误,也不会打印任何内容。
10. Pluck
Arr::pluck 方法会从数组中检索给定键的所有值。

$parents = [
    ['parent' => ['id' => 1, 'name' => 'James']],
    ['parent' => ['id' => 8, 'name' => 'Lisa']],
];
Arr::pluck($parents, 'parent.name'); // ['James', 'Lisa']

laravel-nginx 配置隐藏index.php

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;
root "D:/phpStudy/WWW/m.idaipai.com/public";
location / {
index index.html index.htm index.php l.php;
autoindex on;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1;
}
}

}

laravel闭包用法

DB::table('vods')->where('id', "=", $value->id)->where(function ($query) use ($keyword) {
    $query->where('dd_str', '<', mb_strlen($data))->orWhere('dd_str', '=', null);
    })->update([
        'dd' => $data,
        'dd_str' => mb_strlen($data)
]);    
备案号:粤ICP备18155514号-2