ভিউ
webman ডিফল্টভাবে php-এর মূল সিনট্যাক্স মডেল হিসেবে ব্যবহার করে, যা opcache চালু করার পর সেরা পারফরম্যান্স প্রদান করে। php এর মূল মডেলের পাশাপাশি, webman আরও প্রদান করে Twig, Blade, think-template মডেল ইঞ্জিন।
opcache চালু করা
ভিউ ব্যবহার করার সময়, strongly建议开启 php.ini এর opcache.enable এবং opcache.enable_cli দুইটি অপশন, যাতে মডেল ইঞ্জিন সেরা পারফরম্যান্স প্রদর্শন করতে পারে।
Twig ইনস্টল করা
- Composer দ্বারা ইনস্টল
 
composer require twig/twig
- কনফিগারেশন পরিবর্তন করুন 
config/view.phpএ<?php use support\view\Twig; 
return [
'handler' => Twig::class
];
> **提示**
> অন্যান্য কনফিগারেশন অপশন `options` মাধ্যমে পাঠানো যেতে পারে, যেমন  
```php
return [
    'handler' => Twig::class,
    'options' => [
        'debug' => false,
        'charset' => 'utf-8'
    ]
];
Blade ইনস্টল করা
- Composer দ্বারা ইনস্টল
 
composer require psr/container ^1.1.1 webman/blade
- কনফিগারেশন পরিবর্তন করুন 
config/view.phpএ<?php use support\view\Blade; 
return [
'handler' => Blade::class
];
## think-template ইনস্টল করা
1. Composer দ্বারা ইনস্টল
`composer require topthink/think-template`
2. কনফিগারেশন পরিবর্তন করুন `config/view.php` এ
```php
<?php
use support\view\ThinkPHP;
return [
    'handler' => ThinkPHP::class,
];
提示
অন্যান্য কনফিগারেশন অপশনoptionsমাধ্যমে পাঠানো যেতে পারে, যেমন
return [
    'handler' => ThinkPHP::class,
    'options' => [
        'view_suffix' => 'html',
        'tpl_begin' => '{',
        'tpl_end' => '}'
    ]
];
মূল PHP মডেল ইঞ্জিনের উদাহরণ
ফাইল তৈরি করুন app/controller/UserController.php এইভাবে
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        return view('user/hello', ['name' => 'webman']);
    }
}
নতুন ফাইল তৈরি করুন app/view/user/hello.html এইভাবে
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>webman</title>
</head>
<body>
hello <?=htmlspecialchars($name)?>
</body>
</html>
Twig মডেল ইঞ্জিনের উদাহরণ
কনফিগারেশন পরিবর্তন করুন config/view.php এ
<?php
use support\view\Twig;
return [
    'handler' => Twig::class
];
app/controller/UserController.php এইভাবে
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        return view('user/hello', ['name' => 'webman']);
    }
}
ফাইল app/view/user/hello.html এইভাবে
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>webman</title>
</head>
<body>
hello {{name}}
</body>
</html>
আরও তথ্যের জন্য রেফার করুন Twig
Blade মডেলের উদাহরণ
কনফিগারেশন পরিবর্তন করুন config/view.php এ
<?php
use support\view\Blade;
return [
    'handler' => Blade::class
];
app/controller/UserController.php এইভাবে
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        return view('user/hello', ['name' => 'webman']);
    }
}
ফাইল app/view/user/hello.blade.php এইভাবে
注意blade模版后缀名为
.blade.php
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>webman</title>
</head>
<body>
hello {{$name}}
</body>
</html>
আরও তথ্যের জন্য রেফার করুন Blade
ThinkPHP মডেলের উদাহরণ
কনফিগারেশন পরিবর্তন করুন config/view.php এ
<?php
use support\view\ThinkPHP;
return [
    'handler' => ThinkPHP::class
];
app/controller/UserController.php এইভাবে
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        return view('user/hello', ['name' => 'webman']);
    }
}
ফাইল app/view/user/hello.html এইভাবে
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>webman</title>
</head>
<body>
hello {$name}
</body>
</html>
আরও তথ্যের জন্য রেফার করুন think-template
মডেলের মান নির্ধারণ
view(মডেল, ভ্যারিয়েবল অ্যারে) ব্যবহার করার পাশাপাশি, আমরা যে কোন স্থানে View::assign() কল করে মডেলের মান নির্ধারণ করতে পারি। উদাহরণস্বরূপ:
<?php
namespace app\controller;
use support\Request;
use support\View;
class UserController
{
    public function hello(Request $request)
    {
        View::assign([
            'name1' => 'value1',
            'name2'=> 'value2',
        ]);
        View::assign('name3', 'value3');
        return view('user/test', ['name' => 'webman']);
    }
}
View::assign() কিছু পরিস্থিতিতে খুবই কার্যকর, যেমন একটি সিস্টেমে প্রতিটি পৃষ্ঠার শীর্ষে বর্তমানে লগ ইন করা ব্যবহারকারীর তথ্য প্রদর্শন করতে হবে, যদি প্রতিটি পৃষ্ঠায় এই তথ্য view('মডেল', ['user_info' => 'ব্যবহারকারীর তথ্য']); এর মাধ্যমে নির্ধারণ করতে হয় তবে তা খুবই কষ্টকর হবে। সমাধান হলো মধ্যস্থতার মাধ্যমে ব্যবহারকারীর তথ্য নেওয়া এবং পরে View::assign() দ্বারা ব্যবহারকারীর তথ্য মডেলে নির্ধারণ করা।
ভিউ ফাইলের পথ সম্পর্কে
কন্ট্রোলার
যখন কন্ট্রোলার view('মডেল নাম',[]); কল করে, ভিউ ফাইলগুলি নিম্নলিখিত নিয়ম অনুসারে অনুসন্ধান করা হয়:
/দিয়ে শুরু হলে সরাসরি সেই পথ ব্যবহার করে ভিউ ফাইল খুঁজবে/সহ শুরু না হলে এবং একাধিক অ্যাপ নয়, তখনapp/view/এর অধীনে সংশ্লিষ্ট ভিউ ফাইল ব্যবহার করা হবে/সহ শুরু না হলে এবং একাধিক অ্যাপ হলে,app/অ্যাপ নাম/view/এর অধীনে সংশ্লিষ্ট ভিউ ফাইল ব্যবহার করা হবে- যদি মডেল প্যারামিটার প্রদান না করা হয়, তখন 2 এবং 3 এর নিয়ম অনুযায়ী স্বয়ংক্রিয়ভাবে মডেল ফাইল খুঁজবে
 
উদাহরণ:
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        // সমান অর্থ return view('user/hello', ['name' => 'webman']);
        // সমান অর্থ return view('/app/view/user/hello', ['name' => 'webman']);
        return view(['name' => 'webman']);
    }
}
ক্লোজার ফাংশন
ক্লোজার ফাংশনে $request->app খালি, কোন অ্যাপের অন্তর্গত নয়, তাই ক্লোজার ফাংশন app/view/ এর অধীনে ভিউ ফাইল ব্যবহার করবে, যেমন config/route.php এ রুট সংজ্ঞায়িত করা
Route::any('/admin/user/get', function (Reqeust $reqeust) {
    return view('user', []);
});
যা app/view/user.html কে মডেল ফাইল হিসেবে ব্যবহার করবে (যখন blade মডেল ব্যবহার করা হয় তখন মডেল ফাইল হবে app/view/user.blade.php)।
নির্দিষ্ট অ্যাপ
একাধিক অ্যাপ মোডে মডেল পুনঃব্যবহারযোগ্য করতে, view($template, $data, $app = null) তৃতীয় প্যারামিটার $app প্রদান করে, যা নির্দিষ্ট করার জন্য ব্যবহার করা যেতে পারে কোন অ্যাপ ডিরেক্টরির মডেল ব্যবহার করতে হবে। যেমন view('user', [], 'admin'); এটি জোর করে ব্যবহার করবে app/admin/view/ এর অধীনে ভিউ ফাইল।
মডেল প্যারামিটার বাদ দেওয়া
ক্লাস কন্ট্রোলারে মডেল প্যারামিটার বাদ দেওয়া যেতে পারে, যেমন
<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        // সমান অর্থ return view('user/hello', ['name' => 'webman']);
        // সমান অর্থ return view('/app/view/user/hello', ['name' => 'webman']);
        return view(['name' => 'webman']);
    }
}
Twig সম্প্রসারণ
আমরা কনফিগারেশন view.extension কলব্যাক দিয়ে twig ভিউ ইনস্ট্যান্স সম্প্রসারণ করতে পারি, যেমন config/view.php এ নিম্নলিখিত লেখার মতো
<?php
use support\view\Twig;
return [
    'handler' => Twig::class,
    'extension' => function (\Twig\Environment $twig) {
        $twig->addExtension(new your\namespace\YourExtension()); // এক্সটেনশন যুক্ত করা
        $twig->addFilter(new \Twig\TwigFilter('rot13', 'str_rot13')); // ফিল্টার যুক্ত করা
        $twig->addFunction(new \Twig\TwigFunction('function_name', function () {})); // ফাংশন যুক্ত করা
    }
];
Blade সম্প্রসারণ
একইভাবে আমরা কনফিগারেশন view.extension কলব্যাক দিয়ে blade ভিউ ইনস্ট্যান্স সম্প্রসারণ করতে পারি, যেমন config/view.php এ নিচের মতো
<?php
use support\view\Blade;
return [
    'handler' => Blade::class,
    'extension' => function (Jenssegers\Blade\Blade $blade) {
        // blade-এ নির্দেশনা যুক্ত করা
        $blade->directive('mydate', function ($timestamp) {
            return "<?php echo date('Y-m-d H:i:s', $timestamp); ?>";
        });
    }
];
blade ব্যবহার করে কম্পোনেন্ট
ধরি একটি Alert কম্পোনেন্ট যোগ করতে হবে
নতুন দিন app/view/components/Alert.php
<?php
namespace app\view\components;
use Illuminate\View\Component;
class Alert extends Component
{
    public function __construct()
    {
    }
    public function render()
    {
        return view('components/alert')->rawBody();
    }
}
নতুন দিন app/view/components/alert.blade.php
<div>
    <b style="color: red">hello blade component</b>
</div>
/config/view.php একটি অনুরূপ কোড থাকবে
<?php
use support\view\Blade;
return [
    'handler' => Blade::class,
    'extension' => function (Jenssegers\Blade\Blade $blade) {
        $blade->component('alert', app\view\components\Alert::class);
    }
];
এখন, Blade কম্পোনেন্ট Alert প্রস্তুত, মডেলে ব্যবহার করার সময় এটি নিচের মতো হবে
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>webman</title>
</head>
<body>
<x-alert/>
</body>
</html>
think-template সম্প্রসারণ
think-template view.options.taglib_pre_load ব্যবহার করে ট্যাগ লাইব্রেরি সম্প্রসারণ করতে পারে, যেমন
<?php
use support\view\ThinkPHP;
return [
    'handler' => ThinkPHP::class,
    'options' => [
        'taglib_pre_load' => your\namspace\Taglib::class,
    ]
];
বিস্তৃত তথ্যের জন্য think-template ট্যাগ সম্প্রসারণ পর্যালোচনা করুন