PHP框架 Laravel

PHP 的Laravel 框架 在windows下,搭建PHP的Laravel框架很简单. 先把PHP的安装目录 加入到环境变量里(在命令行能访问到php -v 就说明可以了) 然后 这些是需求的环境 PHP> = 7.1.3 (不用说了) OpenSSL PHP扩展(用composer安装器可以自动给你配置的,以下同理,如果没配置,可以自行去php.ini里面把扩展前面的;去掉,就可以开启响应的扩展了) PD... 阅读详情
AI摘要

本文围绕Laravel框架项目展开,介绍了使用composer的安装命令,.env文件的环境配置,框架启动方法及常用artisan命令。还讲解了框架目录结构、前端模块(Blade、Vue/React)、路由、MVC模式的php代码、数据库操作、关联关系及文件上传表单等基础内容。

       现在因为公司需求,需要新开一个Laravel框架的项目,毫无疑问,我又被借调过去了,最近老是被借调,有点阴郁,不过反观来看,这也是好事,又可以复习和巩固一下自己的知识点,接下来开始讲解Laravel框架

1.安装(我使用的是composer安装)

安装命令1:

composer create-project laravel/laravel:^11.0 example-app(框架所在文件夹:安装时中午不必复制)

安装命令2:

composer global require laravel/installer
laravel new example-app(框架所在文件夹:安装时中午不必复制)

2.环境配置(.env文件)

应用名称

APP_NAME=Laravel


应用运行环境

APP_ENV=local


是否开启Debug模式

APP_DEBUG=true


数据库配置

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

3.框架启动:

cd example-app(框架所在文件夹:安装时中午不必复制)
php artisan serve




4.常用artisan命令:

1.显示您的应用配置、驱动程序和环境:php artisan about


2.加密环境文件(作用在.env文件): php artisan env:encrypt


3.解密环境文件(作用在.env文件):php artisan env:decrypt


4.框架启动:php artisan serve


5.这个命令会生成一个新的应用程序密钥,并将其自动添加到 .env 文件中:php artisan key:generate


6.创建一个新的控制器:php artisan make:controller


7.创建一个新的 Eloquent 模型:php artisan make:model


8.创建一个新的策略类:php artisan make:policy


9.创建一个新的种子文件:php artisan make:seeder


10.运行数据库迁移,创建或修改数据库表以匹配最新的迁移文件:php artisan migrate


11.回滚最后一个数据库迁移操作:php artisan migrate:rollback


12.重置并重新运行所有数据库迁移:php artisan migrate:refresh


13.列出应用程序的所有路由:php artisan route:list


14.清除应用程序缓存:php artisan cache:clear


15.创建配置缓存文件以加速应用程序的启动:php artisan config:cache


16.清除视图缓存:php artisan view:clear


17.清除优化文件:php artisan optimize:clear


18.启动一个与应用程序的交互式解释器:php artisan tinker


19.在本地开发服务器上运行应用程序:php artisan serve


20.生成未定义监听器的事件:php artisan event:generate


21.为通知表生成一个迁移文件:php artisan notification:table


22.为队列迁移生成一个迁移文件:php artisan queue:table


23.为会话迁移生成一个迁移文件:php artisan session:table


24.列出所有路由:php artisan route:list -v


25.创建中间件:php artisan make:middleware 中间件名
 

5.框架目录:

根目录

--app :应用程序的核心代码
--bootstrap :引导框架的 app.php 文件
--config :所有配置文件
--database :数据库迁移、模型工厂和种子文件
--public :包含 index.php 文件,这是所有请求进入您应用程序的入口点,并配置自动加载 
--resources :视图以及样式文件和JS文件
--routes :所有路由定义文件
--storage :日志、编译的 Blade 模板、基于文件的会话、文件缓存以及框架生成的其他文件
--tests :自动化测试
--vendor :Composer 依赖项

App目录 :大部分代码文件

--Broadcasting :所有广播频道类
--Console :所有自定义 Artisan 命令
--Exceptions :所有自定义异常
--Http :包含控制器、中间件和表单请求
--Jobs :包含应用程序的可队列化作业
--Listeners :处理事件的类
--Mail :代表电子邮件的类
--Models :所有的 Eloquent 模型类
--Notifications :应用程序发送的所有“事务性”通知
--Policies :应用程序的授权策略类
--Providers :应用程序的所有服务提供者
--Rules :应用程序的自定义验证规则对象


6.前端模

Blade

语法:
1.通过 {{ }} 渲染 PHP 变量(最常用)
2.通过 {!! !!} 渲染原生 HTML 代码(用于富文本数据渲染)
3.通过以 @ 作为前缀的 Blade 指令执行一些控制结构和继承、引入之类的操作
4.关键字:(关键字开始;关键字end结束)
    @if、@else、@elseif
    @unless(和 @if 条件相反的条)
    @isset、@empty
    @switch
    @for、@foreach 和 @while

Vue / React

react有函数式编码和类编码,这次讲的是的类编码,后面小编争取出一个函数式编码的文章

解决办法:
1.使用Inertia桥接了Laravel应用程序和Vue或React 前端之间的连接,允许使用Vue或React构建成熟的现代前端框架
引入相关类(版本需要升级到laravel9,php版本需要升级到php8):composer require inertiajs/inertia-php
2.直接引入相关资源(主要的JS文件:这样写其实是:穿着Blade的外衣的 Vue / React)

路由:

route::get('/reactest',[TestController::class,'reactst']);

头部:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>

页面代码(包含异步请求):

@include('head')
<body>
<div id="example"></div>
<script type="text/babel">
        //请求主方法
    class UserGist extends React.Component {
                //构造函数(和后端的构造函数类似)
        constructor(props) {
                        //super关键字实现调用父类,super代替的是父类的构建函数
            super(props);
                        //控制组件的内部状态变化
            this.state = {username: '', lastGistUrl: ''};
        }

                //在组件挂载后立即调用(插入 DOM 树中)
        componentDidMount() {
            this.serverRequest = $.get(this.props.source, function (result) {
                var lastGist = result[0];
                this.setState({
                    username: lastGist.owner.login,
                    lastGistUrl: lastGist.html_url
                });
            }.bind(this));
        }

                //当组件即将被卸载/销毁时,会调用这个方法(和后端的析构函数类似)
        componentWillUnmount() {
            this.serverRequest.abort();
        }
                
                //渲染方法
        render() {
            return (
                <div>
                    {this.state.username} 用户最新的 Gist 共享地址:
                    <a href={this.state.lastGistUrl}>{this.state.lastGistUrl}</a>
                </div>
            );
        }
    }

        //请求主体
    ReactDOM.render(
                //调用主方法(赋值请求地址)
        <UserGist source="https://api.github.com/users/octocat/gists" />,
        document.getElementById('example')
    );
</script>
</body>
</html>


7.路由:

use App\Http\Controllers\TestController;

//框架路由测试
Route::get('/test', [TestController::class, 'index']);

//控制器方法
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;

class TestController extends BaseController
{
    public function index(){
        return view('test');
    }
}
?>


//框架路由测试
Route::get('/test', [TestController::class, 'index']);


//依赖注入
Route::get('/tests', function (Request $request) {
    //todo or 模板
});

//指定请求方法
Route::match(['get', 'post'], '/', function () {
    //todo or 模板
});

Route::any('/', function () {
    //todo or 模板
});


Route::get('/testrequest', function (Request $request) {
    //todo or 模板
});

//路由重定向
Route::redirect('/page1', '/page2');

//单参数绑定
Route::get('/page3/{id}', function (string $id) {
    return '标记 '.$id;
});

//多参数绑定
Route::get('/page4/{id}/{ids}', function (string $id,string $ids) {
    return '标记 '.$id.';新标记'.$ids;
});

//可选参数(设置默认值)
Route::get('/page5/{name?}', function (?string $name = null) {
    return $name;
});

//正则表达式(where 添加正则表达式)
Route::get('/page6/{name}', function (string $name) {
    // ...
})->where('name', '[A-Za-z]+');


//路由重命名
Route::get('/page7', function () {
    // ...
})->name('page7realname');

//路由组+中间件
Route::group(['prefix' => 'admin'],function () {
    Route::get('/page8', function () {
        //访问/admin/page8
    });
    Route::get('/page9', function () {
        //访问/admin/page9
    });
});

//中间件(前置中间件,后置中间件,全局中间件)
php artisan make:middleware EnsureTokenIsValid

//使用中间件
 Route::get('/page10', function () {
    //todo or 模板
})->middleware(EnsureTokenIsValid::class);


//排除中间件

Route::group(['prefix' => 'admin'],function () {
    Route::get('/page11', function () {
       //todo or 模板
    })->withoutMiddleware([EnsureTokenIsValid::class]);
});

8.(MVC)php代码:

M (Model)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

class Users extends Model
{
    //表
    protected $table = 'users';
    //组件
    protected $primaryKey = 'id';
    //主键自增是否开启
    public $incrementing = true;
    //主键 ID 的数据类型
    protected $keyType = 'int';
    //表示模型是否应该被打上时间戳
    public $timestamps = false;
    //数据库链接模型
    protected $connection = 'mysql';
    //定义方法
    public function phone()
    {
        return $this->hasOne(Users_extend::class);
    }
}

C (Controller)

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Inertia\Inertia;
use Inertia\Response;

class UserController extends Controller
{
    public function show(string $id): Response
    {
        return Inertia::render('Users/Profile', ['id' =>$id]);
    }
}

?>

V (View)

<script setup>
import Layout from '@/Layouts/Authenticated.vue'
import { Head } from '@inertiajs/vue3'
const props = defineProps(['user'])
</script>

<template>
  <Head title="User Profile" />
  <Layout>
    <template #header>
      <h2 class="text-xl font-semibold leading-tight text-gray-800">vue测试</h2>
    </template>
    <div class="py-12">标识: {{$id}}</div>
  </Layout>
</template>

写到这里,相信大家已经了解到了,控制器、视图大家都已经学会了,后面我们开始进阶的用法

数据库(数据库配置在.env文件中):

9.数据库 (原生 + Eloquent)


//访问路由
Route::get('/datacreate', [TestController::class, 'data_create']);
Route::get('/datafind', [TestController::class, 'data_find']);
Route::get('/datafinds', [TestController::class, 'data_finds']);
Route::get('/datafindspage', [TestController::class, 'data_finds_page']);
Route::get('/datafindshasone', [TestController::class, 'data_finds_hasone']);
Route::get('/dataup', [TestController::class, 'data_up']);
use Illuminate\Support\Facades\DB;
//数据库连接
'mysql' => [
    'read' => [
        'host' => [
            '192.168.1.1',
            '196.168.1.2',
        ],
    ],
    'write' => [
        'host' => [
            '196.168.1.3',
        ],
    ],
    'sticky' => true,

    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => env('DB_CHARSET', 'utf8mb4'),
    'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],


//数据库Eloquent组件
use Illuminate\Database\Eloquent\Model;

//创建model
php artisan make:model Users

//model方法
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
class Users extends Model
{
    //表
    protected $table = 'users';
    //组件
    protected $primaryKey = 'id';
    //主键自增是否开启
    public $incrementing = true;
    //主键 ID 的数据类型
    protected $keyType = 'int';
    //表示模型是否应该被打上时间戳
    public $timestamps = false;
    //数据库链接模型
    protected $connection = 'mysql';
    //定义方法
    public function phone()
    {
        return $this->hasOne(Users_extend::class);
    }
}

//创建model
php artisan make:model Users_extend

//model方法
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users_extend extends Model
{
    //表
    protected $table = 'user_extend';
    //定义方法
    public function user()
    {
        return $this->belongsTo(Users::class);
    }
}

//方法调用
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
//数据库
use App\Users;

class TestController extends BaseController
{
    //初始化
    public function __construct()
    {
        $this->student = new Users();
    }

    //数据创建
    public function data_create(){
        $this->student->username='数据测试';
        $this->student->sex="女";
        $this->student->age="30";
        $this->student->save();
        $userid = $this->student->id;
        var_dump($userid);die;
    }

    //数据查询
    public function data_find(){
        $result = $this->student->where("id",5)->first();
        var_dump($result);die;
    }

    //数据查询
    public function data_finds(){
        $result = $this->student::all();
        var_dump($result);die;
    }

    //数据分页
    public function data_finds_page(){
        $result = $this->student::paginate(2);
        var_dump($result);die;
    }

    //数据一对一(hasone)
    public function data_finds_hasone(){
        $phone = $this->student::find(1)->phone;
        var_dump($phone);
        die;
    }

    //数据修改
    public function data_up(){
        $result = $this->student->where("id","=","5")->update(['username'=>"数据测试编号5"]);
        var_dump($result);die;
    }
}

10.关联关系(相当于联合查询)

 一对一

return $this->hasOne();
return $this->belongsTo();


一对多

return $this->hasMany();
return $this->belongsTo();


多对多

return $this->belongsToMany();
return $this->belongsToMany();


11.文件上传表单


<form id="uploadForm" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>

//异步方法
<script>
    $(document).ready(function (e) {
            $('#uploadForm').on('submit', function(e) {
                    e.preventDefault(); // 阻止表单默认提交行为
                    var formData = new FormData(this); // 创建FormData对象
     
                    $.ajax({
                            type: 'POST',
                            url: '/upload', // 这里是你的上传处理路径
                            data: formData,
                            contentType: false,
                            processData: false,
                            success: function(response) {
                                    console.log(response); // 处理成功的回调
                            },
                            error: function() {
                                    console.log('上传失败'); // 处理错误的回调
                            }
                    });
            });
    });
</script>


普通文件上传

use Illuminate\Support\Facades\Route;
Route::post('/upload', function () {
    request()->file('file')->store('files', 'public');
    return '文件上传成功!';
});

oss文件上传

<?php
use App\Http\Controllers\Core\ApiController;
use App\Models\LoginLog;
use Illuminate\Http\Request;
use OSS\OssClient;

//定义方法
class FileController extends ApiController
{
        //上传主方法
    public function uploadFile(Request $request)
    {
                //获取上传文件
        $file = $request->file();
                //上传方法调用
        $ret = $this->_upload($file);
                //参数返回
        echo json_encode($ret);
        exit;
    }
        
        //上传方法
    protected function _upload($file)
    {
                //获取上传文件名字
        $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
                //获取路径(配置文件中获取)
        $storage_path = config('upload.storage');
        $webpath_path = config('upload.webpath');
                //重名民上传文件
        $image_path =  $dir_name . '/' . date("Y-m") . '/';
                //获取路径(配置文件中获取)
        $app_url = env('APP_URL') . '/';
                //判断上传文件是否存在
        if (!$file) {
            return array('error'=>1,'message'=>"文件上传失败,请检查后重试");
        }
                //获取路径(配置文件中获取)
        $ossConfig = config('oss.' . config('upload.ossflag'));
        if($ossConfig['bucket_addr']) {
            $app_url = $ossConfig['bucket_addr'];
        }
        
        //文件上传
                $tmpName = $file->getPathName();
                $fileExtension = $file->getClientOriginalExtension();
                $filePath = md5_file($tmpName) . '.' . $fileExtension;
                //判断文件大小
                $file_size = $file->getSize();
                if($file_size > config('upload.maxSize'))
                {
                        return array('error'=>1,'message'=>"文件不可以超过50MB");
                }
                //判断是否符合上传类型
                if (!in_array(strtolower($fileExtension),config('upload.allowExts')))
                {
                        return array('error'=>1,'message'=>"文件类型不支持");
                }
                //上传成功后处理
                if(config('oss.' . 'oss_open') == 1) {
                        //初始化OSS对象
                        $oss = new OssClient($ossConfig['access_key_id'], $ossConfig['access_key_secret'], $ossConfig['endpoint']);
                        //oss上传
                        $res = $oss->uploadFile($ossConfig['bucket'],$webpath_path . $image_path . $filePath,$v->getPathName());
                        if ($res)
                        {
                                $data['oss'] = 1;
                                $data['attach_url'] = $ossConfig['bucket_addr'] . $webpath_path . $image_path . $filePath;
                        } else {
                                $data['attach_url'] = $app_url . $webpath_path . $image_path . $filePath;
                                $data['oss'] = 0;
                        }
                        $data['time'] = time();
                } else {
                        $data['oss'] = 0;
                        $data['attach_url'] = $app_url. $webpath_path . $image_path . $filePath;
                        $data['time'] = time();
                        
                }
                if(!$data['oss'] || config('oss.' . 'is_delete') != 1)
                {
                        $file->move($storage_path . $image_path, $filePath);    
                        unset($data);
                }
                return array('error'=>0,'url'=>$data['attach_url']);
    }
}


        讲到这里基础的部分就已经完成了,万米高楼平地起,先复习到这里,先赶着做项目去了,后面高级一点的广播、缓存、集合、上下文啥的,后面有机会再出一个学习文章供大家学习

laravel框架介绍 它提供了丰富的功能和工具,如优雅的语法、MVC架构模式、强大的路由系统、数据库抽象层和ORM、缓存驱动、表单验证、身份验证、会话管理、安全特性等。此外,Laravel还具有清晰的目录结构和路由学习,以及提供表单安全和用户认证的功能。2. Blade模板引擎:Laravel使用Blade作为默认的模板引擎,提供了简洁、直观的模板语法和功能,使开发者能够构建动态的、可重用的视图。5. 身份验证和授权:Laravel的用户认证和授权系统提供了完整的用户注册、登录、密码重置等功能,以及细粒度的访问控制。 阅读详情

相关推荐

Hello Laravel! Laravel 入门教程

Laravel 是一个基于 PHP 的开源 web 应用程序框架,由 Taylor Otwell 创建并于 2011 年首次发布。它遵循 MVC(模型-视图-控制器)设计模式,旨在帮助开发者构建优雅、简洁且易于维护的 web 应用程序。

qq_31470439的博客 2626

PHP最主流的10个框架,其发展历史及主要特点

PHP快速入门与实战在这篇博客中,我们将介绍PHP十大主流框架,同时在本专栏的后续内容里面,会对这些框架的设计思想及底层源码进行深度的分析,欢迎大家先点个关注。

黑夜开发者的博客 1万+

Laravel为什么会成为最优雅的PHP框架

Laravel是一个流行的PHP框架,由Taylor Otwell在2011年创建。它遵循MVC(模型-视图-控制器)架构模式,提供了一系列的功能和工具,可以帮助开发者快速地构建起一个高效、稳定的应用程序。Laravel框架广泛应用于各种类型的Web应用程序,包括电子商务网站、社交网络应用、内容管理系统等。它以其高效、稳定和易用的特点,成为了许多开发者的首选框架。Laravel 是一个流行的 PHP 框架,它提供了一组用于构建高效、稳定的应用程序的工具和组件。

丁爸的博客 1672

Laravel框架:优雅、灵活、高效的PHP Web开发工具

它具有许多优点,如简单的语法、MVC架构和可扩展性,并提供了丰富的安全功能。2、MVC架构:Laravel采用的是MVC(Model-View-Controller)架构,使Web应用程序变得更加清晰,这很重要,因为随着应用程序规模的增长,代码的清晰度变得越来越重要。2、学习曲线较高:虽然Laravel的语法非常简单,但是它仍然具有一定的复杂性,需要一定时间的学习和熟悉才能熟练掌握。4、可扩展性:Laravel提供了许多可用的扩展包,可以大大简化开发人员的工作,并快速开发功能强大的Web应用程序。

qq_62797515的博客 1367

PHP+MSSQL Laravel框架下链接

啊哈哈哈 又见面了 今天无聊来给一些刚使用PHP的初学者们解决一下如何链接PHP和MSSQL。 众所周知PHP和MYSQL是一对不离不弃的好朋友但是有时候项目迫不得已要使用SQL SERVER数据库 链接便是其中一个比较烦人却又不是很有技术含量的一个活。作者在这里就用Laravel框架举例说明一下链接 作者的环境是: Windows 7 64位系统 SQL SERVER 2008 R2 

一只有情怀的IT狗 4379

Laravel从入门到精通:开启高效开发之旅

本文围绕 Laravel 展开全面介绍,涵盖基础入门、核心组件、高级特性、常见问题及实战案例等内容。首先介绍 Laravel 概念与特性,详细阐述开发环境搭建、项目初始化步骤。接着深入剖析路由、控制器、模型等核心组件,以及中间件、事件与监听器等高级特性的使用。同时针对常见的环境配置、代码错误和性能优化问题给出解决方案。以小型博客系统为例进行实战演练,包含需求分析、架构设计、功能实现和部署上线。最后总结学习要点,展望 Laravel 在性能、安全、生态及融合新技术等方面的未来发展。

邓邓子的博客 2016

php laravel框架使用方法

Laravel 是一个基于 PHP 的开源 Web 应用框架,它遵循 MVC(模型-视图-控制器)架构模式。由于其优雅的语法和强大的功能,如路由、中间件、事件处理等,Laravel 成为了许多开发者首选的开发工具之一。本文将引导您从安装开始,逐步了解如何使用 Laravel 创建您的第一个 Web 应用程序。在开始之前,确保您的计算机上已经安装了 PHP 和 Composer。Composer 是 PHP 的依赖管理器,用于安装 Laravel 及其各种扩展包。

w1adgjmptw1016的博客 1577

别再套用星形公式了!三角形接法PMSM的FOC控制,扇区判断与作用时间推导全解析

本文深入解析三角形接法永磁同步电机(PMSM)的FOC控制技术,重点探讨30度相位差对SVPWM扇区判断与电压矢量作用时间的影响。通过数学推导与实验验证,详细讲解修正后的扇区划分规则、作用时间计算公式优化方法,并提供可直接移植到STM32的代码实现,帮助工程师解决三角形接法特有的相电流重构与同步采样难题。

weixin_30689307的博客 467

php laravel框架开发实例

Laravel 是一个免费开源的PHP web应用框架,它以优雅、简洁且富有表现力的语法而著称。Laravel遵循模型-视图-控制器(MVC)架构模式,并且提供了一系列强大的功能来简化常见任务,如路由、认证、会话管理等。本教程将通过创建一个简单的博客系统来展示如何使用Laravel进行Web应用开发。在开始编码之前,确保你的开发环境已经安装了PHP和Composer。Composer是PHP的一个依赖管理工具,用来处理项目中的第三方库。许多人都知道还需要设置好数据库服务,比如MySQL。.env。

2401_87725073的博客 1301

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2728

C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南

本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。

weixin_28077113的博客 164

php框架laravel_安装Laravel PHP框架

php框架laravelIn this tutorial, we are going to install laravel framework and composer, For installation of laravel, the composer is installed on your system because of laravel use composer. 在本教程中,我们要安...

cumtv80668的专栏 262

Xtract or Ucfyber的最条理的整理入门级教程

XTRACT可以对任意截面进行全过程截面分析。工程中常用来分析各种截面(如异形柱、组合截面等)的非线性特征点及承载力校核。 xtract主要思路也是根据各种材料本构关系,基于平截面假定,用fiber划分截面进行全过程非线性分析。......

→★佐佑思维★← 8395

php框架laravel下载,PHP框架Laravel学习心得体会

Laravel是一套简洁、优雅的PHP Web开发框架 (PHP Web Framework) 。在世界(不含中国)PHP框架的占有率超过40%。下面通过本文给大家分享我的PHP框架Laravel学习心得体会,欢迎大家给我留言Laravel是一套简洁、优雅的PHP Web开发框架 (PHP Web Framework) 。在世界(不含中国)PHP框架的占有率超过40%。自从接触PHP以来一直使用Y...

weixin_28936857的博客 202

实战指南:基于华为Ascend NPU的大模型W8A8量化调优与精度提升

本文提供了一份基于华为Ascend NPU进行大模型W8A8量化的实战调优指南。详细介绍了从环境搭建、使用msmodelslim框架进行基础量化,到通过离群值抑制、校准集优化和量化回退等关键技术提升精度的全流程。旨在帮助开发者在华为NPU硬件上实现模型推理的显著加速,同时有效控制精度损失。

weixin_29227425的博客 271

idea出现 EXCEPTION_ACCESS_VIOLATION (0xc0000005) 的解决方法

idea启动的时候出现如下问题,以为没啥事,就索性关闭 后面再打开idea的时候发现直接闪退,之后打开其他软件,直接蓝屏

码农研究僧的博客 4815

PHP框架laravel简介

一、laravel简介laravel是基于mvc模式的php框架,m——模型层,v——视图层,c——控制器层;以下为laravel框架的目录文件,框出来的文件目录将在后续中用到:app是应用的核心代码文件目录,以后的代码基本都在这里完成;app/Http/Controller目录是应用的控制器文件;routes.php是框架的路由文件,负责路由分配和映射;Http下的类文件,比如上面目录中的User.php、Menu.php文件是应用的模型文件;config目录是所有应用的配置文件目录;

FG3396的博客 1028

华为OD机试新系统真题-谁没交卷(Java /Py/C++/Go/C/Js)

华为OD机试 新系统真题【谁没交卷】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【谁没交卷】多语言题解。

qq_45776114的博客 418

PHP框架之Laravel框架

Laravel作为一款优秀的PHP Web开发框架,以其优雅的语法、MVC设计模式、强大的路由系统、Artisan命令行工具、Eloquent ORM、安全性和丰富的扩展包等特点,为开发者提供了高效、安全、可维护的开发环境。通过具体的应用案例展示,我们可以看到Laravel在Web应用程序开发中的广泛应用和强大实力。无论是构建简单的Web应用程序还是复杂的。Laravel,作为一款广受欢迎的PHP Web开发框架,以其优雅、简洁的语法和强大的功能特性,赢得了全球众多开发者的青睐。

AOMGyz的博客 1158

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php 各种框架优缺点 及 laravel框架与thinkPHP框架的区别

一直以来,phper讨论最多的就是php各种框架的优缺点,网上的资料也是比较零散,现把几款主流的框架收集汇总一下,其中本人只是用过Yii2、Laravel、Yaf、Thinkphp这四种框架,因此大部分对各种框架的评价皆来自与网上资料,如果问题,请在评论中指出,共同进步 一、ThinkPHP ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP...

chenrui310的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

php框架laravel_Laravel简介(PHP框架)

php框架laravel 介绍 (Introduction) Laravel is a powerful framework of PHP which is used to develop a web application. Laravel is created by Taylor Otwell. This is simple, elegant, robust and easy to under...

cumudi0723的博客 1017

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php laravel框架初探

最近浏览国外一些招骋网站,发现PHP框架中Laravel相对比较火,但国内来说相对少一些,常用的是TP,就本身而言,我对比了TP,CI,Laravel,这三个框架,个人比较喜欢CI框架,一方面它比TP执行效率高,调用加载类和方法少一些,另一方面它比Laravel框架更易上手,而且比较灵活.具说Laravel运行速度方面有待于优化,反正作为一名初研究这种框架的人,实在不理解老外为什么好这口(Lara...

sun_96216的专栏 809

Laravel PHP框架学习 步骤一 安装 Laravel框架

1:安装 Laravel框架 2种方式安装 请查看 Composer 个人学习经验技术文档 进入要创建 Laravel 框架的文件夹 点击右健按 “在此处打开命今窗口” 打开CMD 如果没有:请百度自行搜索 "右键 cmd" 通过 Laravel 安装器 首先,通过使用 Composer 安装 Laravel 安装器: composer global require laravel/inst...

01侠 caijianwen.com 357

PHP和Laravel(1):Laravel框架简介

Laravel是一个优雅的PHP框架,用于构建现代Web应用程序。它遵循MVC(Model-View-Controller)架构模式,提供了一系列强大的工具和功能,如路由、控制器、中间件、视图、模型、数据库迁移、队列、事件、广播等,使得开发过程更加高效和愉快。Laravel的设计哲学是“开发者的体验优先”,因此它拥有简洁的语法和丰富的文档,是PHP开发者学习和使用的理想选择。在Laravel框架中,路由是应用程序的核心组成部分,它定义了URL与应用程序中处理请求的代码之间的映射关系。

kkchenjj的博客 2158

php框架laravel百科,PHP 的Laravel 框架

在windows下,搭建PHP的Laravel框架很简单.先把PHP的安装目录 加入到环境变量里(在命令行能访问到php -v 就说明可以了)然后 这些是需求的环境PHP> = 7.1.3 (不用说了)OpenSSL PHP扩展(用composer安装器可以自动给你配置的,以下同理,如果没配置,可以自行去php.ini里面把扩展前面的;去掉,就可以开启响应的扩展了)PDO PHP扩展Mbs...

weixin_39832448的博客 172
上一篇: PHP框架 之YII2框架 (yii2 framework - Yii PHP Framework)
下一篇: REACT (Web开发框架 : react)极速入门
masterphp
博客等级 码龄5年 247粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值