1. 程式人生 > 其它 >PHP7新特性介紹

PHP7新特性介紹

配置路由傳參

Startup類的Configure方法裡預設的路由中介軟體

配置傳遞引數

只需要在後面接變數名即可

在傳遞的時候也是通過路由傳參

後臺伺服器安裝引數名接收即可


偽靜態頁面

偽靜態頁面:看上去是靜態頁面,但其實是動態頁面(路由偽造),對seo優化有一定幫助,一些搜尋引擎對靜態頁收錄會搞一些。

自定義中介軟體來實現一個路由

            app.Use(next => async context =>
            {
                if (context.Request.Path == "/")
                {
                    context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼
                    await context.Response.WriteAsync("這是一個新頁面");
                    return;
                }
                await next(context);
            });

如:

自定義中介軟體來實現偽靜態頁面

            app.Use(next => async context =>
            {
                if (context.Request.Path == "/home/about")
                {
                    context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼
                    await context.Response.WriteAsync("關於我們頁面");
                    return;
                }

                if (context.Request.Path == "/home/about.html")//偽靜態
                {
                    context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼
                    await context.Response.WriteAsync("偽靜態");
                    //context.Response.Redirect("/home/Privacy");
                    return;
                }

                await next(context);
            });

這樣就不會出現404了。表面上是訪問靜態頁面,實際上可以返回一個動態頁面回去。

將上面中介軟體進行封裝

 public class UrlMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly ILogger _logger;
        public UrlMiddleware(RequestDelegate next, ILoggerFactory logger)
        {
            _next = next;
            _logger = logger.CreateLogger<RequestIPMyMiddleware>();
        }
        public async Task Invoke(HttpContext context)
        {
            //if (context.Request.Path == "/")
            //{
            //    await context.Response.WriteAsync("Hello terminal middleware!");
            //    return;
            //}

            if (context.Request.Path == "/home/about")
            {
                context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼
                await context.Response.WriteAsync("關於我們頁面");
                return;
            }

            if (context.Request.Path == "/home/about.html")
            {
                context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼
                await context.Response.WriteAsync("偽靜態");
                //context.Response.Redirect("/home/Privacy");
                return;
            }
    

            await _next.Invoke(context); //執行下一個中介軟體
        }
    }

在為其建立擴充套件方法

 public static class UrlMiddlewareExtensions
    {
        public static IApplicationBuilder UseMyUrl(this IApplicationBuilder app)
        {
            app.UseMiddleware<UrlMiddleware>();
            return app;
        }
    }

Configure方法裡直接呼叫即可