<commit_before><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen" />
<title>Panada PHP Framework 1.0.0 Documentation - Vendor</title>
</head>
<body>
    <div class="header">
        <div class="logo">
	    <a target="_blank" href="http://panadaframework.com/"><img src="../../images/logo.png" height="21" border="0" /></a>
	</div>
        <div class="menu">
            <form action="http://www.google.com/search" method="get">
	    <input type="hidden" value="panadaframework.com/documentation/" id="as_sitesearch" name="as_sitesearch">
            <input class="search-input" type="text" name="q" /><button class="search-button" type="submit">Search</button>
            </form>
        </div>
    </div>
    <div class="subheader">
        <h1>Panada Framework 1.0.0 Documentation</h1>
    </div>
    <div class="wrapper">
        <div class="sidebar">
            <div class="navigation">
                <ul>
                    <li>
                        <a href="../index.html">Umum</a>
                        <ul>
                            <li><a href="../index.html#about">Tentang Panada</a></li>
                            <li><a href="../index.html#feature">Keunggulan (<em>Feature</em>)</a></li>
                            <li><a href="../index.html#license">Lisensi</a></li>
                        </ul>
                    </li>
                    <li>
                        <a href="../config.html">Konfigurasi</a>
                        <ul>
                            <li><a href="../config.html#general">Dasar</a></li>
                            <li><a href="../config.html#additional_config">Tambahan</a></li>
                            <li><a href="../config.html#webserver">Webserver</a></li>
                        </ul>
                    </li>
                    <li>
                        Referensi
                        <ul>
                            <li><a href="controller.html">Controller</a></li>
                            <li><a href="model.html">Model</a></li>
                            <li><a href="view.html">View</a></li>
                            <li><a href="library.html">Library</a></li>
                            <li><a href="autoloader.html">Auto Loader</a></li>
                            <li><a href="global_method.html">Global Method dan Properties</a></li>
                            <li><a href="module.html">Module</a></li>
			    <li class="active"><a href="vendor.html">Vendor</a></li>
			    <li><a href="upgrade.html">Upgrade</a></li>
                        </ul>
                            
                    </li>
                    <li>
                        <a href="../classes/index.html">Resources</a>
                        <ul>
                            <li><a href="../classes/database/index.html">Database</a></li>
                            <li><a href="../classes/cache/index.html">Cache</a></li>
                            <li><a href="../classes/session.html">Session</a></li>
                            <li><a href="../classes/pagination.html">Pagination</a></li>
                            <li><a href="../classes/email.html">Email</a></li>
                            <li><a href="../classes/encryption.html">Encryption</a></li>
                            <li><a href="../classes/upload.html">Upload</a></li>
                            <li><a href="../classes/image.html">Image</a></li>
                            <li><a href="../classes/request.html">Request</a></li>
                            <li><a href="../classes/rest.html">RESTfull</a></li>
			    <li><a href="../classes/tools.html">Tools</a></li>
			    <li><a href="../classes/validation.html">Form Validation</a></li>
                        </ul>
                    </li>
                    <li><a href="../contribution.html">Kontribusi</a></li>
                    <li><a href="../credit.html">Credit</a></li>
                </ul>
	    </div>
        </div>
        <div class="content">
            <div class="lead">
                <h2>Vendor</h2>
                <p>Vendor adalah suatu paket aplikasi yang dikembangkan oleh pihak ketiga yang biasanya terdiri dari satu atau lebih class. Panada menyediakan direktori <strong>vendors</strong> untuk mempermudah Anda dalam memanfaatkan aplikasi atau library yang sudah ada.</p>
                <p>Setiap vendor diorganisir ke dalam suatu folder dengan nama yang unik. Setiap nama mewakili sebuah vendor. Berikut contoh direktorinya:</p>

<textarea rows="6" cols="50" class="textarea">
panada/
    vendors/
        phpMailer/
        PHPActiveRecord/
        Doctrine/
</textarea>

            </div>
	    
	    <div class="main">
                <h3 id="config_module">Konfigurasi Vendor</h3>
		<p>Konfigurasi vendor dilakukan di dalam file <strong>app/config/main.php</strong>.</p>
		
<textarea rows="6" cols="50" class="textarea">
'vendor' => array(

    'path' => GEAR.'vendors/'
    
),
</textarea>
                <h4>Penjelasan:</h4>
		<table>
		<thead>
		<tr>
                    <th scope="col">Parameter</th>
                    <th scope="col">Keterangan</th>
		</tr>
		</thead>
		<tbody>
		<tr>
                    <td>path</td>
                    <td>
                        <p>Konfigurasi ini menentukan di mana lokasi folder vendor diletakan. Secara default, lokasi folder vendor ada di dalam folder <strong>panada</strong>.</p>
                    </td>
		</tr>
		</tbody>
		</table>
                
            </div>
            
            
            <div class="main">
                <h3 id="create_module">Menambahkan Vendor</h3>
                <p>Anda cukup menambahkan suatu foler baru yang namanya mewakili nama vendor. Kemudian letakan semua file-file yang dibutuhkan ke dalam folder tersebut.</p>
                <code>
                    panada/vendors/<strong>namaVendor</strong>
                </code>
            </div>
            <div class="main">
                <h3 id="using_module">Penggunaan Vendor</h3>
                <p>Untuk memanfaatkan resource dari sebuah vendor, Anda membutuhkan method <strong>Import::vendor()</strong>.</p>
		<code>
		    <strong>object</strong> Resources/Import::vendor( <strong>string</strong> $filePath, <strong>string | false</strong> $className = false, <strong>array</strong> $args = array() );
		</code>
                
                <h4>Penjelasan:</h4>
		<table>
		<thead>
		<tr>
                    <th scope="col">Parameter</th>
                    <th scope="col">Keterangan</th>
		</tr>
		</thead>
		<tbody>
		<tr>
                    <td>$filePath</td>
                    <td>
                        <p>Nama file yang akan diload tanpa exstensi file (.php).</p>
                    </td>
		</tr>
                <tr class="odd">
                    <td>$className</td>
                    <td>
                        <p>Secara default nama class mengikuti nama file. Namun jika diperlukan, argument ini bisa diisi dengan nama class yang dikehendaki.</p>
                    </td>
		</tr>
                <tr>
                    <td>$args</td>
                    <td>
                        <p>Jika constructor class membutuhkan argument, silahkan isi pada bagian ini. Argument diisikan dalam format array.</p>
                    </td>
		</tr>
		</tbody>
		</table>
                
                <p>Berikut contoh cara me-load salah satu class dari sebuah vendor:</p>

<textarea rows="18" cols="50" class="textarea">
&lt;?php
namespace Controllers;
use Resources;

class Home extends Resources\Controller {
    
    public function __construct(){
        
        parent::__construct();
        
        // Load file phpMailer/PHPMailer.php dengan nama class PHPMailer
        $this->phpMailer = Resources/Import::vendor('phpMailer/PHPMailer');
        
        // Load file MyOwnLibs/Validation.php dengan nama class Validate dan argument constructor
        $this->phpMailer = Resources/Import::vendor('MyOwnLibs/Validation', 'Validate', array('isEmail', true) );
    }
}
</textarea>
		<p>Jika ingin melakukan pemanggilan static method, isikan string di argument ke dua dengan format <strong>ClassName::staticMethod</strong> seperti contoh berikut:</p>
		<code>
		    $this->myStatic = Resources/Import::vendor('MyOwnLibs/MyClass', 'MyClass::myStaticMethod', array('arg1', 'arg2') );
		</code>
            </div>
	    
	    <div class="main">
		<h3>Composer</h3>
		<p>Kini Panada secara natif telah mendukung penggunaan <a href="http://getcomposer.org/">composer</a>. Untuk menjalankan composer pastikan file composer.json telah tersedia.</p>
		<p>Kita perlu menambahkan informasi folder panada/vendors ini di dalam composer.json seperti contoh berikut:</p>
<textarea rows="18" cols="50" class="textarea">
{
    "config": {
        "vendor-dir": "panada/vendors"
    }
}<commit_msg>Fix the way to call external vendor<commit_after><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen" />
<title>Panada PHP Framework 1.0.0 Documentation - Vendor</title>
</head>
<body>
    <div class="header">
        <div class="logo">
	    <a target="_blank" href="http://panadaframework.com/"><img src="../../images/logo.png" height="21" border="0" /></a>
	</div>
        <div class="menu">
            <form action="http://www.google.com/search" method="get">
	    <input type="hidden" value="panadaframework.com/documentation/" id="as_sitesearch" name="as_sitesearch">
            <input class="search-input" type="text" name="q" /><button class="search-button" type="submit">Search</button>
            </form>
        </div>
    </div>
    <div class="subheader">
        <h1>Panada Framework 1.0.0 Documentation</h1>
    </div>
    <div class="wrapper">
        <div class="sidebar">
            <div class="navigation">
                <ul>
                    <li>
                        <a href="../index.html">Umum</a>
                        <ul>
                            <li><a href="../index.html#about">Tentang Panada</a></li>
                            <li><a href="../index.html#feature">Keunggulan (<em>Feature</em>)</a></li>
                            <li><a href="../index.html#license">Lisensi</a></li>
                        </ul>
                    </li>
                    <li>
                        <a href="../config.html">Konfigurasi</a>
                        <ul>
                            <li><a href="../config.html#general">Dasar</a></li>
                            <li><a href="../config.html#additional_config">Tambahan</a></li>
                            <li><a href="../config.html#webserver">Webserver</a></li>
                        </ul>
                    </li>
                    <li>
                        Referensi
                        <ul>
                            <li><a href="controller.html">Controller</a></li>
                            <li><a href="model.html">Model</a></li>
                            <li><a href="view.html">View</a></li>
                            <li><a href="library.html">Library</a></li>
                            <li><a href="autoloader.html">Auto Loader</a></li>
                            <li><a href="global_method.html">Global Method dan Properties</a></li>
                            <li><a href="module.html">Module</a></li>
			    <li class="active"><a href="vendor.html">Vendor</a></li>
			    <li><a href="upgrade.html">Upgrade</a></li>
                        </ul>
                            
                    </li>
                    <li>
                        <a href="../classes/index.html">Resources</a>
                        <ul>
                            <li><a href="../classes/database/index.html">Database</a></li>
                            <li><a href="../classes/cache/index.html">Cache</a></li>
                            <li><a href="../classes/session.html">Session</a></li>
                            <li><a href="../classes/pagination.html">Pagination</a></li>
                            <li><a href="../classes/email.html">Email</a></li>
                            <li><a href="../classes/encryption.html">Encryption</a></li>
                            <li><a href="../classes/upload.html">Upload</a></li>
                            <li><a href="../classes/image.html">Image</a></li>
                            <li><a href="../classes/request.html">Request</a></li>
                            <li><a href="../classes/rest.html">RESTfull</a></li>
			    <li><a href="../classes/tools.html">Tools</a></li>
			    <li><a href="../classes/validation.html">Form Validation</a></li>
                        </ul>
                    </li>
                    <li><a href="../contribution.html">Kontribusi</a></li>
                    <li><a href="../credit.html">Credit</a></li>
                </ul>
	    </div>
        </div>
        <div class="content">
            <div class="lead">
                <h2>Vendor</h2>
                <p>Vendor adalah suatu paket aplikasi yang dikembangkan oleh pihak ketiga yang biasanya terdiri dari satu atau lebih class. Panada menyediakan direktori <strong>vendors</strong> untuk mempermudah Anda dalam memanfaatkan aplikasi atau library yang sudah ada.</p>
                <p>Setiap vendor diorganisir ke dalam suatu folder dengan nama yang unik. Setiap nama mewakili sebuah vendor. Berikut contoh direktorinya:</p>

<textarea rows="6" cols="50" class="textarea">
panada/
    vendors/
        phpMailer/
        PHPActiveRecord/
        Doctrine/
</textarea>

            </div>
	    
	    <div class="main">
                <h3 id="config_module">Konfigurasi Vendor</h3>
		<p>Konfigurasi vendor dilakukan di dalam file <strong>app/config/main.php</strong>.</p>
		
<textarea rows="6" cols="50" class="textarea">
'vendor' => array(

    'path' => GEAR.'vendors/'
    
),
</textarea>
                <h4>Penjelasan:</h4>
		<table>
		<thead>
		<tr>
                    <th scope="col">Parameter</th>
                    <th scope="col">Keterangan</th>
		</tr>
		</thead>
		<tbody>
		<tr>
                    <td>path</td>
                    <td>
                        <p>Konfigurasi ini menentukan di mana lokasi folder vendor diletakan. Secara default, lokasi folder vendor ada di dalam folder <strong>panada</strong>.</p>
                    </td>
		</tr>
		</tbody>
		</table>
                
            </div>
            
            
            <div class="main">
                <h3 id="create_module">Menambahkan Vendor</h3>
                <p>Anda cukup menambahkan suatu foler baru yang namanya mewakili nama vendor. Kemudian letakan semua file-file yang dibutuhkan ke dalam folder tersebut.</p>
                <code>
                    panada/vendors/<strong>namaVendor</strong>
                </code>
            </div>
            <div class="main">
                <h3 id="using_module">Penggunaan Vendor</h3>
                <p>Untuk memanfaatkan resource dari sebuah vendor, Anda membutuhkan method <strong>Import::vendor()</strong>.</p>
		<code>
		    <strong>object</strong> Resources/Import::vendor( <strong>string</strong> $filePath, <strong>string | false</strong> $className = false, <strong>array</strong> $args = array() );
		</code>
                
                <h4>Penjelasan:</h4>
		<table>
		<thead>
		<tr>
                    <th scope="col">Parameter</th>
                    <th scope="col">Keterangan</th>
		</tr>
		</thead>
		<tbody>
		<tr>
                    <td>$filePath</td>
                    <td>
                        <p>Nama file yang akan diload tanpa exstensi file (.php).</p>
                    </td>
		</tr>
                <tr class="odd">
                    <td>$className</td>
                    <td>
                        <p>Secara default nama class mengikuti nama file. Namun jika diperlukan, argument ini bisa diisi dengan nama class yang dikehendaki.</p>
                    </td>
		</tr>
                <tr>
                    <td>$args</td>
                    <td>
                        <p>Jika constructor class membutuhkan argument, silahkan isi pada bagian ini. Argument diisikan dalam format array.</p>
                    </td>
		</tr>
		</tbody>
		</table>
                
                <p>Berikut contoh cara me-load salah satu class dari sebuah vendor:</p>

<textarea rows="18" cols="50" class="textarea">
&lt;?php
namespace Controllers;
use Resources;

class Home extends Resources\Controller {
    
    public function __construct(){
        
        parent::__construct();
        
        // Load file phpMailer/PHPMailer.php dengan nama class PHPMailer
        $this->phpMailer = Resources\Import::vendor('phpMailer/PHPMailer');
        
        // Load file MyOwnLibs/Validation.php dengan nama class Validate dan argument constructor
        $this->phpMailer = Resources\Import::vendor('MyOwnLibs/Validation', 'Validate', array('isEmail', true) );
    }
}
</textarea>
		<p>Jika ingin melakukan pemanggilan static method, isikan string di argument ke dua dengan format <strong>ClassName::staticMethod</strong> seperti contoh berikut:</p>
		<code>
		    $this->myStatic = Resources\Import::vendor('MyOwnLibs/MyClass', 'MyClass::myStaticMethod', array('arg1', 'arg2') );
		</code>
            </div>
	    
	    <div class="main">
		<h3>Composer</h3>
		<p>Kini Panada secara natif telah mendukung penggunaan <a href="http://getcomposer.org/">composer</a>. Untuk menjalankan composer pastikan file composer.json telah tersedia.</p>
		<p>Kita perlu menambahkan informasi folder panada/vendors ini di dalam composer.json seperti contoh berikut:</p>
<textarea rows="18" cols="50" class="textarea">
{
    "config": {
        "vendor-dir": "panada/vendors"
    }
}
{'fraction_non_alphanumeric': 0.1566748384221083, 'fraction_numerical': 0.0052373523512369066, 'mean_word_length': 1.659505111868425, 'pattern_counts': {'":': 4, '<': 617, '<?xml version=': 0, '>': 627, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5093742', 'n_tokens_mistral': 5747, 'n_tokens_neox': 5345, 'n_words': 1078}