{"id":78629,"date":"2024-10-01T04:29:24","date_gmt":"2024-10-01T00:59:24","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/"},"modified":"2024-10-01T04:29:24","modified_gmt":"2024-10-01T00:59:24","slug":"how-to-implement-qr-code-generation-in-laravel-245n","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u062f\u0631 \u0644\u0627\u0631\u0627\u0648\u0644"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u06a9\u062f\u0647\u0627\u06cc QR \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0631\u0627\u0648\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u062f\u0647 \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u060c \u0635\u0641\u0627\u062a\u060c \u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0627\u0642\u062f\u0627\u0645.<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u062f \u0634\u0648\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0633\u062a\u0647 \u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 1: \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0644\u0627\u0631\u0627\u0648\u0644\u060c \u0627\u0632 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06cc\u06a9 API \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f PNG\u060c SVG \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>composer require simplesoftwareio\/simple-qrcode<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f QrCode \u0646\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 2: Imagick \u0631\u0627 \u0628\u0631\u0627\u06cc \u0641\u0631\u0645\u062a PNG \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u0647\u0633\u062a\u06cc\u062f PNG \u0641\u0631\u0645\u062a (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u062f\u0627\u0631\u06cc\u0645)\u060c \u200b\u200b\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u0627\u06cc\u0645\u062c\u06cc\u06a9 \u067e\u0633\u0648\u0646\u062f. Imagick \u0627\u0632 \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PNG \u0628\u0647 \u0622\u0646 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Imagick \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u060c \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>  \u0628\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648:<\/p>\n<p>sudo apt-get install php-imagick<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0631\u0627\u06cc macOS (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Homebrew):<\/p>\n<p>brew install imagemagick<br \/>\nbrew install php@8.3-imagick # or php@your-version-imagick<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 imagick \u067e\u0633\u0648\u0646\u062f \u062f\u0631 \u0634\u0645\u0627 \u0641\u0639\u0627\u0644 \u0627\u0633\u062a php.ini \u0641\u0627\u06cc\u0644<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc PHP\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0645\u0646\u0639\u06a9\u0633 \u06a9\u0646\u062f:<\/p>\n<p>php artisan serve<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062d\u0627\u0644\u0627 \u06a9\u0647 \u067e\u06a9\u06cc\u062c \u0648 \u0627\u06cc\u0645\u062c\u06cc\u06a9 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 3: \u0642\u0631\u0627\u0631\u062f\u0627\u062f QR Code \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0642\u0631\u0627\u0631\u062f\u0627\u062f (\u0631\u0627\u0628\u0637) \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u06a9\u062f QR \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u0645\u062f\u0644\u06cc \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a.<\/p>\n<p>namespace App\\Contracts;<\/p>\n<p>interface QrCode<br \/>\n{<br \/>\n    public function generateQrCode(): self;<\/p>\n<p>    public function getQrCodeColumnName(): string;<\/p>\n<p>    public function getQrCodeIdentifier(): string;<\/p>\n<p>    public function getQrCodeFormat(): string;<\/p>\n<p>    public function getQrCodeSize(): string;<\/p>\n<p>    public function getQrCodeLogo(): string;<\/p>\n<p>    public function getQrCodePath(): string;<\/p>\n<p>    public function getQrCodeContent(): string;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0627\u0628\u0637 \u062a\u0645\u0627\u0645 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u062f QR\u060c \u0627\u0632 \u062a\u0639\u06cc\u06cc\u0646 \u0641\u0631\u0645\u062a \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u062f QR \u062a\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627 \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 4: \u0648\u06cc\u0698\u06af\u06cc \u062a\u0639\u0627\u0645\u0644 \u06a9\u062f QR \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u0627 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0646\u0637\u0642\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u0627\u0642\u062f\u0627\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u062f\u0631 \u062a\u0639\u0627\u0645\u0644 \u0627\u0633\u062a.<\/p>\n<p>namespace App\\Concerns;<\/p>\n<p>use App\\Actions\\Qr\\GenerateQrCode;<br \/>\nuse App\\Contracts\\QrCode;<br \/>\nuse Illuminate\\Database\\Eloquent\\Model;<br \/>\nuse Spatie\\MediaLibrary\\HasMedia;<\/p>\n<p>trait InteractsWithQrCode<br \/>\n{<br \/>\n    public static function bootInteractsWithQrCode()<br \/>\n    {<br \/>\n        static::creating(function (Model $model) {<br \/>\n            if ($model instanceof QrCode) {<br \/>\n                $model-&gt;generateQrCode();<br \/>\n            }<br \/>\n        });<br \/>\n    }<\/p>\n<p>    public function generateQrCode(bool $force = false): self<br \/>\n    {<br \/>\n        $generator = new GenerateQrCode(<br \/>\n            $this-&gt;getQrCodeContent(),<br \/>\n            $this-&gt;getQrCodePath(),<br \/>\n            $this-&gt;getQrCodeFormat(),<br \/>\n            $this-&gt;getQrCodeSize(),<br \/>\n            $this-&gt;getQrCodeLogo(),<br \/>\n            $force<br \/>\n        );<br \/>\n        $generator-&gt;execute();<\/p>\n<p>        if ($this instanceof HasMedia) {<br \/>\n            $this-&gt;copyMedia($this-&gt;getQrCodePath())-&gt;toMediaCollection(&#8216;qr-code&#8217;);<br \/>\n        }<\/p>\n<p>        return $this;<br \/>\n    }<\/p>\n<p>    public function getQrCodeColumnName(): string<br \/>\n    {<br \/>\n        return isset($this-&gt;qr_code) ? $this-&gt;qr_code : &#8216;qr_code&#8217;;<br \/>\n    }<\/p>\n<p>    public function getQrCodeIdentifier(): string<br \/>\n    {<br \/>\n        return isset($this-&gt;qr_code_identifier) ? $this-&gt;qr_code_identifier : &#8216;uuid&#8217;;<br \/>\n    }<\/p>\n<p>    public function getQrCodeFormat(): string<br \/>\n    {<br \/>\n        return isset($this-&gt;qr_code_format) ? $this-&gt;qr_code_format : &#8216;png&#8217;;<br \/>\n    }<\/p>\n<p>    public function getQrCodeSize(): string<br \/>\n    {<br \/>\n        return isset($this-&gt;qr_code_size) ? $this-&gt;qr_code_size : &#8216;256&#8217;;<br \/>\n    }<\/p>\n<p>    public function getQrCodeLogo(): string<br \/>\n    {<br \/>\n        return file_exists(public_path(&#8216;assets\/logo.png&#8217;)) ? public_path(&#8216;assets\/logo.png&#8217;) : &#8221;;<br \/>\n    }<\/p>\n<p>    public function getQrCodePath(): string<br \/>\n    {<br \/>\n        return storage_path(<br \/>\n            &#8216;\/data\/qr-codes\/&#8217;.<br \/>\n            $this-&gt;{$this-&gt;getQrCodeIdentifier()}.<br \/>\n            &#8216;.&#8217;.<br \/>\n            $this-&gt;getQrCodeFormat()<br \/>\n        );<br \/>\n    }<\/p>\n<p>    public function getQrCodeContent(): string<br \/>\n    {<br \/>\n        return data_get($this, $this-&gt;getQrCodeColumnName(), &#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f GenerateQrCode \u0627\u0642\u062f\u0627\u0645 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u062f \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 5: \u06a9\u0644\u0627\u0633 \u0627\u06a9\u0634\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0645\u0646\u0637\u0642 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0639\u0645\u0644 \u06a9\u067e\u0633\u0648\u0644\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u06a9\u062f QR \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>namespace App\\Actions\\Qr;<\/p>\n<p>use CleaniqueCoders\\LaravelContract\\Contracts\\Execute;<br \/>\nuse SimpleSoftwareIO\\QrCode\\Facades\\QrCode;<\/p>\n<p>class GenerateQrCode implements Execute<br \/>\n{<br \/>\n    public function __construct(<br \/>\n        protected string $content,<br \/>\n        protected string $path,<br \/>\n        protected string $format = &#8216;png&#8217;,<br \/>\n        protected string $size = &#8216;256&#8217;,<br \/>\n        protected string $logo = &#8221;,<br \/>\n        protected bool $force = false) {}<\/p>\n<p>    public function execute()<br \/>\n    {<br \/>\n        try {<br \/>\n            $path = $this-&gt;path;<\/p>\n<p>            $content = $this-&gt;content;<\/p>\n<p>            if (file_exists($path) &amp;&amp; ! $this-&gt;force) {<br \/>\n                return;<br \/>\n            }<\/p>\n<p>            if ($this-&gt;force &amp;&amp; file_exists($path)) {<br \/>\n                unlink($path);<br \/>\n            }<\/p>\n<p>            $qrCode = QrCode::format($this-&gt;format)<br \/>\n                -&gt;size($this-&gt;size)<br \/>\n                -&gt;eye(&#8216;square&#8217;)<br \/>\n                -&gt;margin(5)<br \/>\n                -&gt;style(&#8216;dot&#8217;, 0.9);<\/p>\n<p>            if ($this-&gt;logo) {<br \/>\n                $qrCode-&gt;merge($this-&gt;logo, .25, true);<br \/>\n            }<\/p>\n<p>            file_put_contents(<br \/>\n                $this-&gt;path, $qrCode-&gt;generate($content)<br \/>\n            );<br \/>\n        } catch (\\Throwable $th) {<br \/>\n            throw $th;<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u06a9\u0634\u0646 \u0627\u0632 SimpleSoftwareIO \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f QrCode \u0646\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u06a9\u062f QR \u0628\u0627 \u0641\u0631\u0645\u062a\u060c \u0627\u0646\u062f\u0627\u0632\u0647 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06cc\u06a9 \u0644\u0648\u06af\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u062f\u0647\u0627\u06cc QR \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647 6: \u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 \u0635\u0641\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f QrCode \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 InteractsWithQrCode \u0648\u06cc\u0698\u06af\u06cc \u062f\u0631 \u0645\u062f\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 Asset \u0645\u062f\u0644<\/p>\n<p>namespace App\\Models;<\/p>\n<p>use App\\Concerns\\InteractsWithQrCode;<br \/>\nuse App\\Contracts\\QrCode;<br \/>\nuse App\\Models\\Base as Model;<\/p>\n<p>class Asset extends Model implements QrCode<br \/>\n{<br \/>\n    use InteractsWithQrCode;<\/p>\n<p>    public function getQrCodeContent(): string<br \/>\n    {<br \/>\n        return route(&#8216;assets.qr&#8217;, $this-&gt;{$this-&gt;getRouteKeyName()});<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c Asset \u0645\u062f\u0644 \u06cc\u06a9 \u06a9\u062f QR \u062d\u0627\u0648\u06cc \u06cc\u06a9 URL \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u0631\u0627\u06cc\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u062f QR \u0632\u0645\u0627\u0646\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u062f\u0627\u0631\u0627\u06cc\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0634\u0648\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u0627\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u060c \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0639\u0645\u0644\u060c \u0631\u0627\u0647 \u062d\u0644\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u062f\u0631 \u0644\u0627\u0631\u0627\u0648\u0644 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u06a9\u0645\u06a9 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0648 Imagick \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0635\u0648\u06cc\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u06cc\u0627\u0632 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0633\u0648\u0646\u062f Imagick \u0628\u0631\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0641\u0631\u0645\u062a PNG \u0641\u0639\u0627\u0644 \u0627\u0633\u062a. \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<div data-article-id=\"2021149\" id=\"article-body\">\n<p>\u06a9\u062f\u0647\u0627\u06cc QR \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0631\u0627\u0648\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u062f\u0647 \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f <strong>\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627<\/strong>\u060c <strong>\u0635\u0641\u0627\u062a<\/strong>\u060c \u0648 <strong>\u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0627\u0642\u062f\u0627\u0645<\/strong>.<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u062f \u0634\u0648\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0633\u062a\u0647 \u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%D8%A8%D8%B3%D8%AA%D9%87_SimpleSoftwareIO_QR_Code_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_Imagick_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%81%D8%B1%D9%85%D8%AA_PNG_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 2: Imagick \u0631\u0627 \u0628\u0631\u0627\u06cc \u0641\u0631\u0645\u062a PNG \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88\" >\u0628\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D8%A8%D8%B1%D8%A7%DB%8C_macOS_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Homebrew\" >\u0628\u0631\u0627\u06cc macOS (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Homebrew):<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_QR_Code_%D8%B1%D8%A7_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 3: \u0642\u0631\u0627\u0631\u062f\u0627\u062f QR Code \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D8%AA%D8%B9%D8%A7%D9%85%D9%84_%DA%A9%D8%AF_QR_%D8%B1%D8%A7_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 4: \u0648\u06cc\u0698\u06af\u06cc \u062a\u0639\u0627\u0645\u0644 \u06a9\u062f QR \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%DA%A9%D9%84%D8%A7%D8%B3_%D8%A7%DA%A9%D8%B4%D9%86_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%DA%A9%D8%AF%D9%87%D8%A7%DB%8C_QR_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 5: \u06a9\u0644\u0627\u0633 \u0627\u06a9\u0634\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_6_%D8%A7%D8%B2_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_%D9%88_%D8%B5%D9%81%D8%AA_%D8%AF%D8%B1_%DB%8C%DA%A9_%D9%85%D8%AF%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 6: \u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 \u0635\u0641\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/how-to-implement-qr-code-generation-in-laravel-245n\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%D8%A8%D8%B3%D8%AA%D9%87_SimpleSoftwareIO_QR_Code_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 1: \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0644\u0627\u0631\u0627\u0648\u0644\u060c \u0627\u0632 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06cc\u06a9 API \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f PNG\u060c SVG \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>composer require simplesoftwareio\/simple-qrcode\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>QrCode<\/code> \u0646\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_Imagick_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%81%D8%B1%D9%85%D8%AA_PNG_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 2: Imagick \u0631\u0627 \u0628\u0631\u0627\u06cc \u0641\u0631\u0645\u062a PNG \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u0647\u0633\u062a\u06cc\u062f <strong>PNG<\/strong> \u0641\u0631\u0645\u062a (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u062f\u0627\u0631\u06cc\u0645)\u060c \u200b\u200b\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f <strong>\u0627\u06cc\u0645\u062c\u06cc\u06a9<\/strong> \u067e\u0633\u0648\u0646\u062f. Imagick \u0627\u0632 \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PNG \u0628\u0647 \u0622\u0646 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Imagick \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u060c \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88\"><\/span>\n<p>  \u0628\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo <\/span>apt-get <span class=\"nb\">install <\/span>php-imagick\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D8%A7%DB%8C_macOS_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Homebrew\"><\/span>\n<p>  \u0628\u0631\u0627\u06cc macOS (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Homebrew):<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>brew <span class=\"nb\">install <\/span>imagemagick\nbrew <span class=\"nb\">install <\/span>php@8.3-imagick <span class=\"c\"># or php@your-version-imagick<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 <code>imagick<\/code> \u067e\u0633\u0648\u0646\u062f \u062f\u0631 \u0634\u0645\u0627 \u0641\u0639\u0627\u0644 \u0627\u0633\u062a <code>php.ini<\/code> \u0641\u0627\u06cc\u0644<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc PHP\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0645\u0646\u0639\u06a9\u0633 \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>php artisan serve\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u06a9\u0647 \u067e\u06a9\u06cc\u062c \u0648 \u0627\u06cc\u0645\u062c\u06cc\u06a9 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_QR_Code_%D8%B1%D8%A7_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 3: \u0642\u0631\u0627\u0631\u062f\u0627\u062f QR Code \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0642\u0631\u0627\u0631\u062f\u0627\u062f (\u0631\u0627\u0628\u0637) \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u06a9\u062f QR \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u0645\u062f\u0644\u06cc \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight php\"><code><span class=\"kn\">namespace<\/span> <span class=\"nn\">App\\Contracts<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">interface<\/span> <span class=\"nc\">QrCode<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">generateQrCode<\/span><span class=\"p\">():<\/span> <span class=\"kt\">self<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeColumnName<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeIdentifier<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeFormat<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeSize<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeLogo<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodePath<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeContent<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0631\u0627\u0628\u0637 \u062a\u0645\u0627\u0645 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u062f QR\u060c \u0627\u0632 \u062a\u0639\u06cc\u06cc\u0646 \u0641\u0631\u0645\u062a \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u062f QR \u062a\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627 \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D8%AA%D8%B9%D8%A7%D9%85%D9%84_%DA%A9%D8%AF_QR_%D8%B1%D8%A7_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 4: \u0648\u06cc\u0698\u06af\u06cc \u062a\u0639\u0627\u0645\u0644 \u06a9\u062f QR \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u0627 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0646\u0637\u0642\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u0627\u0642\u062f\u0627\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u062f\u0631 \u062a\u0639\u0627\u0645\u0644 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight php\"><code><span class=\"kn\">namespace<\/span> <span class=\"nn\">App\\Concerns<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kn\">use<\/span> <span class=\"nc\">App\\Actions\\Qr\\GenerateQrCode<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">App\\Contracts\\QrCode<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">Illuminate\\Database\\Eloquent\\Model<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">Spatie\\MediaLibrary\\HasMedia<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">trait<\/span> <span class=\"nc\">InteractsWithQrCode<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"k\">function<\/span> <span class=\"n\">bootInteractsWithQrCode<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">static<\/span><span class=\"o\">::<\/span><span class=\"nf\">creating<\/span><span class=\"p\">(<\/span><span class=\"k\">function<\/span> <span class=\"p\">(<\/span><span class=\"kt\">Model<\/span> <span class=\"nv\">$model<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nv\">$model<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nc\">QrCode<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nv\">$model<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">generateQrCode<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">generateQrCode<\/span><span class=\"p\">(<\/span><span class=\"kt\">bool<\/span> <span class=\"nv\">$force<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">):<\/span> <span class=\"kt\">self<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"nv\">$generator<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">GenerateQrCode<\/span><span class=\"p\">(<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeContent<\/span><span class=\"p\">(),<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodePath<\/span><span class=\"p\">(),<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeFormat<\/span><span class=\"p\">(),<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeSize<\/span><span class=\"p\">(),<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeLogo<\/span><span class=\"p\">(),<\/span>\n            <span class=\"nv\">$force<\/span>\n        <span class=\"p\">);<\/span>\n        <span class=\"nv\">$generator<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">execute<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nv\">$this<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nc\">HasMedia<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">copyMedia<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodePath<\/span><span class=\"p\">())<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">toMediaCollection<\/span><span class=\"p\">(<\/span><span class=\"s1\">'qr-code'<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nv\">$this<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeColumnName<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">isset<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code<\/span><span class=\"p\">)<\/span> <span class=\"o\">?<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code<\/span> <span class=\"o\">:<\/span> <span class=\"s1\">'qr_code'<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeIdentifier<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">isset<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_identifier<\/span><span class=\"p\">)<\/span> <span class=\"o\">?<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_identifier<\/span> <span class=\"o\">:<\/span> <span class=\"s1\">'uuid'<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeFormat<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">isset<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_format<\/span><span class=\"p\">)<\/span> <span class=\"o\">?<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_format<\/span> <span class=\"o\">:<\/span> <span class=\"s1\">'png'<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeSize<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">isset<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_size<\/span><span class=\"p\">)<\/span> <span class=\"o\">?<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">qr_code_size<\/span> <span class=\"o\">:<\/span> <span class=\"s1\">'256'<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeLogo<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nb\">file_exists<\/span><span class=\"p\">(<\/span><span class=\"nf\">public_path<\/span><span class=\"p\">(<\/span><span class=\"s1\">'assets\/logo.png'<\/span><span class=\"p\">))<\/span> <span class=\"o\">?<\/span> <span class=\"nf\">public_path<\/span><span class=\"p\">(<\/span><span class=\"s1\">'assets\/logo.png'<\/span><span class=\"p\">)<\/span> <span class=\"o\">:<\/span> <span class=\"s1\">''<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodePath<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">storage_path<\/span><span class=\"p\">(<\/span>\n            <span class=\"s1\">'\/data\/qr-codes\/'<\/span><span class=\"mf\">.<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"p\">{<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeIdentifier<\/span><span class=\"p\">()}<\/span><span class=\"mf\">.<\/span>\n            <span class=\"s1\">'.'<\/span><span class=\"mf\">.<\/span>\n            <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeFormat<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeContent<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">data_get<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getQrCodeColumnName<\/span><span class=\"p\">(),<\/span> <span class=\"s1\">''<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f <code>GenerateQrCode<\/code> \u0627\u0642\u062f\u0627\u0645 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u062f \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%DA%A9%D9%84%D8%A7%D8%B3_%D8%A7%DA%A9%D8%B4%D9%86_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%DA%A9%D8%AF%D9%87%D8%A7%DB%8C_QR_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 5: \u06a9\u0644\u0627\u0633 \u0627\u06a9\u0634\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc QR \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0645\u0646\u0637\u0642 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0639\u0645\u0644 \u06a9\u067e\u0633\u0648\u0644\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u06a9\u062f QR \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight php\"><code><span class=\"kn\">namespace<\/span> <span class=\"nn\">App\\Actions\\Qr<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kn\">use<\/span> <span class=\"nc\">CleaniqueCoders\\LaravelContract\\Contracts\\Execute<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">SimpleSoftwareIO\\QrCode\\Facades\\QrCode<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">class<\/span> <span class=\"nc\">GenerateQrCode<\/span> <span class=\"kd\">implements<\/span> <span class=\"nc\">Execute<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">__construct<\/span><span class=\"p\">(<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">string<\/span> <span class=\"nv\">$content<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">string<\/span> <span class=\"nv\">$path<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">string<\/span> <span class=\"nv\">$format<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'png'<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">string<\/span> <span class=\"nv\">$size<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'256'<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">string<\/span> <span class=\"nv\">$logo<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">''<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">protected<\/span> <span class=\"kt\">bool<\/span> <span class=\"nv\">$force<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">)<\/span> <span class=\"p\">{}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">execute<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nv\">$path<\/span> <span class=\"o\">=<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">path<\/span><span class=\"p\">;<\/span>\n\n            <span class=\"nv\">$content<\/span> <span class=\"o\">=<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">content<\/span><span class=\"p\">;<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nb\">file_exists<\/span><span class=\"p\">(<\/span><span class=\"nv\">$path<\/span><span class=\"p\">)<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">!<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">force<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">force<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">file_exists<\/span><span class=\"p\">(<\/span><span class=\"nv\">$path<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nb\">unlink<\/span><span class=\"p\">(<\/span><span class=\"nv\">$path<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"nv\">$qrCode<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">QrCode<\/span><span class=\"o\">::<\/span><span class=\"nf\">format<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">format<\/span><span class=\"p\">)<\/span>\n                <span class=\"o\">-&gt;<\/span><span class=\"nf\">size<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">size<\/span><span class=\"p\">)<\/span>\n                <span class=\"o\">-&gt;<\/span><span class=\"nf\">eye<\/span><span class=\"p\">(<\/span><span class=\"s1\">'square'<\/span><span class=\"p\">)<\/span>\n                <span class=\"o\">-&gt;<\/span><span class=\"nf\">margin<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">)<\/span>\n                <span class=\"o\">-&gt;<\/span><span class=\"nf\">style<\/span><span class=\"p\">(<\/span><span class=\"s1\">'dot'<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.9<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">logo<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nv\">$qrCode<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">merge<\/span><span class=\"p\">(<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">logo<\/span><span class=\"p\">,<\/span> <span class=\"mf\">.25<\/span><span class=\"p\">,<\/span> <span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"nb\">file_put_contents<\/span><span class=\"p\">(<\/span>\n                <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">path<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$qrCode<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">generate<\/span><span class=\"p\">(<\/span><span class=\"nv\">$content<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span> <span class=\"k\">catch<\/span> <span class=\"p\">(<\/span><span class=\"nc\">\\Throwable<\/span> <span class=\"nv\">$th<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"nv\">$th<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u06a9\u0634\u0646 \u0627\u0632 SimpleSoftwareIO \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>QrCode<\/code> \u0646\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u06a9\u062f QR \u0628\u0627 \u0641\u0631\u0645\u062a\u060c \u0627\u0646\u062f\u0627\u0632\u0647 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06cc\u06a9 \u0644\u0648\u06af\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u062f\u0647\u0627\u06cc QR \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_6_%D8%A7%D8%B2_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_%D9%88_%D8%B5%D9%81%D8%AA_%D8%AF%D8%B1_%DB%8C%DA%A9_%D9%85%D8%AF%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 6: \u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 \u0635\u0641\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f <code>QrCode<\/code> \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 <code>InteractsWithQrCode<\/code> \u0648\u06cc\u0698\u06af\u06cc \u062f\u0631 \u0645\u062f\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 <code>Asset<\/code> \u0645\u062f\u0644<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight php\"><code><span class=\"kn\">namespace<\/span> <span class=\"nn\">App\\Models<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kn\">use<\/span> <span class=\"nc\">App\\Concerns\\InteractsWithQrCode<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">App\\Contracts\\QrCode<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">use<\/span> <span class=\"nc\">App\\Models\\Base<\/span> <span class=\"k\">as<\/span> <span class=\"nc\">Model<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">class<\/span> <span class=\"nc\">Asset<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">Model<\/span> <span class=\"kd\">implements<\/span> <span class=\"nc\">QrCode<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kn\">use<\/span> <span class=\"nc\">InteractsWithQrCode<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">function<\/span> <span class=\"n\">getQrCodeContent<\/span><span class=\"p\">():<\/span> <span class=\"kt\">string<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">route<\/span><span class=\"p\">(<\/span><span class=\"s1\">'assets.qr'<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"p\">{<\/span><span class=\"nv\">$this<\/span><span class=\"o\">-&gt;<\/span><span class=\"nf\">getRouteKeyName<\/span><span class=\"p\">()});<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c <code>Asset<\/code> \u0645\u062f\u0644 \u06cc\u06a9 \u06a9\u062f QR \u062d\u0627\u0648\u06cc \u06cc\u06a9 URL \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u0631\u0627\u06cc\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u062f QR \u0632\u0645\u0627\u0646\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u062f\u0627\u0631\u0627\u06cc\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0634\u0648\u062f.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u060c \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0639\u0645\u0644\u060c \u0631\u0627\u0647 \u062d\u0644\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u062f\u0631 \u0644\u0627\u0631\u0627\u0648\u0644 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u06a9\u0645\u06a9 \u0628\u0633\u062a\u0647 SimpleSoftwareIO QR Code \u0648 Imagick \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0635\u0648\u06cc\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u06cc\u0627\u0632 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0633\u0648\u0646\u062f Imagick \u0628\u0631\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0641\u0631\u0645\u062a PNG \u0641\u0639\u0627\u0644 \u0627\u0633\u062a. \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u06a9\u062f\u0647\u0627\u06cc QR \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0631\u0627\u0648\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u062f\u0647 \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f QR \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u060c \u0635\u0641\u0627\u062a\u060c &hellip;<\/p>\n","protected":false},"author":2,"featured_media":78630,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-78629","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=78629"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78629\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/78630"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=78629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=78629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=78629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}