Home / PHP (page 2)

PHP

পিএইচপি ভেরিয়েবল

পিএইচপি ভেরিয়েবল

  • ভেরিয়েবল হচ্ছে একটা পাত্রের মত(Container)যেখানে আমরা অনেক তথ্য রাখতে পারি।যেমন একটা টেক্সক্ট String “Hello Bangladesh” অথবা একটা integer value 100. কোন একটা ভেরিয়েবল এ একবার তথ্য রেখে সেটা পুরো কোডজুরে বারবার ব্যাবহার করতে পারেন,মুল তথ্য(value)টি বারবার রাখার পরিবর্তে।
  • পিএইচপি তে ভেরিয়েবল “$” এই চিহ্নটি দিয়ে অবশ্যই শুরু করতে হবে নাহলে কাজ করবেনা।
    একটা ভেরিয়েবলের মান স্ক্রিপ্টে যেকোন সময় পরিবর্তন হতে পারে।
  • ভেরিয়েবল নাম case sensitive.যেমন $a_number and $A_number দুটি আলাদা ভেরিয়েবল, পিএইচপি এর দৃষ্টিতে।
  • নিম্নোক্ত ভাবে পিএইচপি তে ভেরিয়েবল লেখা হয়

    $variable_name = Value;

    উদাহরন

    <?php
    $hello = "This is a string";
    $a_number = 4;
    $anotherNumber = 8;
    echo $hello ."<br/>";
    $total = $a_number+$anotherNumber;
    echo $total;
    ?>
    

    আউটপুট:

    This is a string
    12
    

    ব্যাখ্যা:

  • উপরের কোডে দেখুন স্ট্রিং কে কোটেশন এর ভিতর রেখেছি এবং $hello ভেরিয়েবলে তা রেখেছি,পরে echo দিয়ে তা ব্রাউজারে আউটপুট এনেছি।
  • আবার $a_number এবং $anotherNumber ভেরিয়েবলে সংখ্যা রেখেছি এবং পরে তা দিয়ে একটা অংক করেছি।
  • পিএইচপি একটা “Loosely Typed” ল্যাংগুয়েজ তাই ভেরিয়েবল declare করার সময় ভেরিয়েবল এর টাইপ(ধরন) উল্লেখ না করলেও পিএইচপি নিজে থেকে ভেরিয়েবল কে সঠিক ডেটা টাইপে রুপান্তর করে নেবে।
  • ভেরিয়েবল নামকরন পদ্ধতি

    ১.অবশ্যই কোন letter or “_”(under score) দিয়ে শুরু করতে হবে।
    ২. নামের মধ্যে alpha-numeric characters ও underscores. a-z, A-Z, 0-9, or _ . থাকতে পারে।
    ৩. ভেরিয়েবল নামে স্পেস থাকা যাবেনা।যদি নাম একের অধিক হয় তাহলে “___”underscore ($my_string) অথবা বড় হাতের অক্ষরে($myString)লিখতে হবে।

    দুটি জিনিস সবসময় লাগে

    <?php
    
    $feedback = "refatju";
    $domain = "@yahoo.com";
    
    $feedback = $feedback.$domain;
    
    echo $feedback;
    
    ?>
    

    একটা ডট (.) দুটি স্ট্রিংকে একসাথে করল,এটা সাধারন নিয়ম। একে বলে concatenate (কনক্যাটেনেট)। একই কাজ নিচের মত করে করা যায়। বিভিন্ন সময় কোডে এমন দেখতে পাবেন।

    <?php
    $feedback = "refatju";
    $domain = "yahoo.com";
    $feedback .= $domain;
    echo $feedback;
    ?> 
    

    এটার আউটপুট উপরের টির মতই আসবে। নিচের কোডব্লক দুটির আউটপুট একই হবে

    <?php
    $test++;
    echo $test;
    ?>
    

    আউটপুট ১ আসবে,উল্লেখ্য যে $test ভেরিয়েবলের মান যদি ঠিক করে না দেন তাহলে পিএইচপি এটার মান বাই ডিফল্ট ০ ধরে নেবে।

    <?php
    $test = $test+1;
    echo $test;
    ?>
    

    এখানেও আউটপুট ১ আসবে।

    পিএইচপি (PHP) কোডব্লকে যেভাবে কমেন্ট করবেন

    পিএইচপি কমেন্ট:

    কয়েকটা চিহ্ন আছে যদি কোন পিএইচপি কোডের সামনে এগুলা দিয়ে রাখেন তাহলে এ কোডগুলি আর execute হবেনা। তবে কোডগুলি এডিটরে থাকবে, অনেক লম্বা সময় পর যদি খোলেন তাহলে এসব কমেন্ট দেখে বুঝতে পারবেন আসলে কি করতে চেয়েছিলেন। একটা লাইনকে কমেন্ট করে রাখতে চাইলে // বা # আর বহু লাইনকে কমেন্ট করে রাখতে চাইলে কোডের আগে /* এবং শেষে */ চিহ্ন ব্যাবহার করতে হবে।
    পরামর্শ: অনেক প্রাকটিস করুন,যেটুকু শিখেছেন সেটুকুই।
    যেমন

    <?php এবং ?> 

    কোডের ভিতর

    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    

    এসব লিখতে থাকুন।

    <?php
    echo "Hello World!";
    //ekhane line break diyesi but output ek line hobe
    echo "Hello World!";
    
    /*In above there are two line.but output will.
    
    will be one line.here multiple line
    
    */
    ?>
    

    উপরের কোডে দেখুন একটি লাইন কমেন্ট করেছি // এই চিহ্ন দিয়ে আর একাধিক লাইন কমেন্ট করেছি /**/ এই চিহ্নের ভিতরে রেখে। আর রান করান দেখুন পিএইচপি কোডের ভিতর স্পেস কাজ করেনা,এভাবে প্রাকটিস করলে নতুন নতুন জিনিস দেখতে পাবেন।

    পিএইচপি তে আউটপুট পাবেন যেভাবে

    পিএইচপি তে আউটপুটের জন্য ব্যবহৃত স্টেটমেন্ট সমূহ:

    echo() স্টেটমেন্ট
    প্রথম পেজে echo দিয়ে একটা স্ট্রিং কে ব্রাউজারে আউটপুট দেখানো হয়েছে।

    print() স্টেটমেন্ট

    <?php
    print "This is my first web page";
    ?> 
    

    ** বেশিরভাগ ক্ষেত্রে echo() স্টেটমেন্ট ব্যবহার করা হয় কারন এটা বেশি fast.তবে কোড ডিবাগিং এর সময় বিভিন্ন জায়গায় print() খুব কাজে লাগে,বিশেষ করে কোন অ্যারে echo() দিয়ে দেখা যায়না কিন্তু print() দিয়ে দেখা যায়।

    printf() স্টেটমেন্ট
    এই স্টেটমেন্ট দিয়ে আপনি একটা টেক্সটের মধ্যে ডাইনামিক ডেটা আউটপুট করতে পারেন।যেমন

    <?php
    printf("There are %d article in webtuts",250);
    ?>
    

    আউটপুট
    There are 250  article
    এখানে %d হচ্ছে type specifier, যখন printf() স্টেটমেন্ট এক্সিকিউট হবে তখন এই type specifier %d এর জায়গায় 250 এসে ঢুকে যাবে।এধরনের আরও অনেক type specifier আছে যেমন %s, %f, %o ইত্যাদি এগুলি পিএইচপি ম্যানুয়ালে আরও জানার জন্য দেখতে পারেন।
    আপনি ইচ্ছে করলে একসাথে একাধিক type specifier ব্যবহার করতে পারেন।যেমন

    <?php
    $myXam = 2;
    $myNum = 83.85484513;
    printf("In %d nd exam i have got %.3f percent marks",$myXam,$myNum);
    ?> 
    

    আউটপুট:
    In 2 nd exam i have got 83.855 percent marks

    *এখানে type specifier %f এর পরিবর্তে %.3f দিয়েছি কারন দশমিকের পর আমি ৩ ঘর পর্যন্ত চেয়েছি।
    sprintf() স্টেটমেন্ট
    sprintf() স্টেটমেন্ট printf() এর মতই এবং কাজও একই শুধু পার্থক্য হল printf ব্রাউজারে আউটপুট আনার জন্য ব্যবহৃত হয় আর sprintf একটা ভেরিয়েবলে assign করার জন্য ব্যবহৃত হয়।ইচ্ছে করলে এই ভেরিয়েবল echo করে ব্রাউজারে আউটপুট আনতে পারেন।যেমন

    <?php
    $how = sprintf("Here is output: %08.2f", 150.42 / 20);
    echo $how;
    ?>
    

    প্রথমে $how ভেরিয়েবলে sprintf স্টেটমেন্ট দিয়ে একটা মান assign করেছি এরপর ভেরিয়েবল টি echo করেছি।কিন্তু printf দিয়ে সরাসরি echo ‘র কাজ হয়ে যায়।এটা কাজে লাগে যখন আপনি ব্রাউজারে আউটপুট চাচ্ছেন না তবে এর মান কোডে কোথাও ব্যবহার করতে চাচ্ছেন।
    ** ১৫০.৪২ কে ২০ দ্বারা ভাগ করলে আসবে ৭.৫২১। এখানে সব মিলিয়ে কয়টি ঘর আছে? ৫টি (দশমিক সহ) আর type specifier আছে %08.2f এর অর্থ হচ্ছে ব্রাউজারে আউটপুট আমি ৮ ঘর পর্যন্ত চাই এবং দশমিকের পর ২ ঘর থাকবে।এখন আমাদের ভাগফল টিতে (৭.৫২১) আছে মাত্র ৫টি ঘর বাকি ৩ টি ঘরে তাহলে কি হবে? বাকি ঘরে হবে ০।এজন্য ৮ এর আগে শুন্য (০) দিয়েছি।
    আউটপুট
    Here is output: 00007.52

    পিএইচপি বেসিক সংকেত টিউটোরিয়াল (PHP Syntax)

    পিএইচপি কোড কে কাজ করাতে অবশ্যই ফাইলটি সেভ করার সময় .php এক্সটেনশন দিয়ে সেভ করতে হবে।যদি .html থাকে তাহলে পিএইচপি কোড execute হবেনা।
    * পিএইচপি কোড এর প্রতিটি অংশ চিহ্ন দিয়ে শেষ হবে।
    *প্রতিটি আলাদা instruction(code line) সেমিক্লোন দ্বারা শেষ হবে।
    ওকে এবার আপনার কোড এডিটর (নোটপ্যাড/ড্রিময়েভার বা আপনি যা ব্যাবহার করেন) খুলুন এবং নিচের মত লিখুন

    <?php 
    echo"This is my first php page";
    ?>
    

    এবার পেজটি mypage.php নামে সেভ করুন,সেভ করার সময় htdocs browse করে দেখিয়ে দিন save in এর জায়গায়।এবার ব্রাউজারের এড্রেসবারে লিখুন http://localhost/mypage.php এবং এন্টার দিন ফলে নিচের মত আউটপুট দেখতে পাবেন।

    This is my first php page

    এর ভিতরে কোড না লিখে এর কিছু সংক্ষিপ্ত রুপ আছে যেগুলি ব্যবহার করতে পারেন।যেমন উপরের কোড এইভাবে লিখলেও কাজ হবে

    <?= "This is my first web page";?> 
    

    অর্থ্যাৎ এর বদলে <? ?> এভাবে লিখলেও কাজ হবে আর echo এর বদলে উপরে = বসেছে।আরও কয়েকভাবে লেখা যায় যেমন

    <div>
    <div id="highlighter_352958">
    <div>
    <div>
     <?php script language="php">
      echo "This is my first web page";
     ?></div>
    </div>
    </div>
    </div>
    

    এছাড়া ASP স্টাইলে লেখা যায় তবে এই পদ্ধতিটি এখন বাতিল।
    *উপরের সব পদ্ধতির মধ্যে প্রথমটি সবসময় ব্যবহার করা উচিৎ।
    *সব ধরনের শর্টট্যাগ কাজ করার জন্য php.ini ফাইলে short_open_tag এনাবল থাকতে হবে

    পিএইচপি কোড কোথায় লিখবেন

    যদি C drive এ XAMPP ইনস্টল দিয়ে থাকেন তাহলে এই ফোল্ডারে htdocs নামে আরেকটা ফোল্ডার আছে সেখানে আপনার web content গুলো রাখবেন।
    সকল www ডকুমেন্টের মুল ডাইরেক্টরি হচ্ছে “C:/xampp/htdocs”(তবে যদি অন্য ড্রাইভে ইনস্টল দিয়ে থাকেন যেমন:D drive তখন এটা হবে “D:/xampp/htdocs”). এখন যদি এই ডাইরেক্টরিতে “mytest.php” নামে কোন ফাইল রাখেন তাহলে আপনি এটাতে অ্যাকসেস পেতে পারেন এভাবে-ব্রাউজারের এড্রেসবারে লিখুন http://localhost/mytest.php
    আচ্ছা এবার কোড লেখা শুরু করি চলুন,তার আগে একটা কথা কোড কোথায় লিখবেন?নোটপ্যাডে?লিখতে পারেন তবে পিএইচপি কোডলেখার জন্য কিছু স্পেশালাইজড সফটওয়ার আছে যেমন: Net Beans, Dreamweaver ইত্যাদি এগুলোতে কোড লিখলে অনেক সুবিধা পাবেন।এগুলো আর বললাম না লিখতে ধরলেই টের পাবেন,যে সুবিধাগুলো নোটপ্যাডে পাবেন না।এগুলোকে বলে IDE (Integrated Development Environment).আপনি যেটাতে সাচ্ছ্যন্দবোধ করেন সেটা ব্যাবহার করুন।

    পিএইচপি (PHP) ইনস্টলেশন

    প্রথম টিউটোরিয়ালটি তো পড়েছেন তাহলে এটা বুঝতে আর সমস্যা হবেনা।ক্লাইন্ট সফটওয়ারগুলিতো সবার আছেই এখন শুধু ইনস্টল দিতে হবে ওয়েব সার্ভার যেমন apache এবং অবশ্যই পিএইচপি আর একটা ডেটাবেস সফটওয়ারও ইনস্টল দিয়ে নিন যেমন: MySQL কি কাজে লাগবে তা পরে বলছি।এ সফটওয়ারগুলি সব ফ্রি পাওয়া যায়।নিশ্চয় এতক্ষনে গুগলে সার্চ দিয়ে সফটওয়ারগুলি খোজা শুরু করেছেন।একটা সহজ ঠিকানা দিচ্ছি এখানে এমন একটা সফটওয়ার পাবেন যেটা ইনস্টল দিলে সবগুলি একবারেই ইনস্টল হয়ে যাবে।আর আলাদা আলাদা ভাবে ইনস্টল দিতে হবেনা।সফটওয়ারটি হচ্ছে XAMPP. XAMPP এখান থেকে ডাউনলোড করে ইনস্টল করুন, অন্যান্য সফটওয়ার এর মত ইনস্টল দিন।
    ইন্সটল শেষে ডেস্কটপে XAMPP এর একটি আইকন দেখাবে সেখানে ডাবল ক্লিক করে ওপেন করুন অথবা অন্যভাবে করতে পারেন-যে ড্রাইভে ইনস্টল দিয়েছেন সেখানে গেলেই একটা XAMPP Control Panel নামে আইকন দেখতে পাবেন অর্থ্যাৎ আপনি যদি C ড্রাইভে ইনস্টল দেন তাহলে C:Program Filesxampp বা C:xampp এই লোকেশনে পাবেন। ব্যাস এখন শুধু start বাটনে click করুন(Apache এবং MySQL)।

    Apache ও MySQL চালুর পর ব্রাউজারের এড্রসবারে লিখুন http://localhost ফলে নিচের মত একটা পেজ খুলবে। না আসলে English বাটনে ক্লিক করুন।

    পিএইচপি টিউটোরিয়াল | বেসিক

    পিএইচপি এর আগে সার্ভার সাইড স্ক্রিপ্টিং সম্পর্কে একটু জানুন:
    আসলে স্ক্রিপ্টিং হচ্ছে প্রোগ্রামের আরেকটা সমার্থক শব্দ।এটা হচ্ছে কিছু instruction এর সেট যেটা run করলে স্বয়ংক্রিয় ভাবে কিছু কাজ হয়।“সার্ভার সাইড” বলতে বুঝানো হচ্ছে এই স্ক্রিপ্ট গুলোকে ইউজারের কম্পিউটার থেকে নিয়ন্ত্রনের বদলে সার্ভার থেকে handle করা।যখন কেউ পিএইচপি ওয়েব পেজ ভিজিট করবে তখন ওয়েব সার্ভার পিএইচপি কোডগুলিকে কিছু Process করবে যেমন:যেটা দেখানো দরকার (Picture,Content etc) সেটা দেখাবে আর যেটাকে লুকানো দরকার (math calculation,file operation etc) তা লুকাবে এবং শেষে HTML এ রুপান্তর করে ইউজারের ওয়েব ব্রাউজারে পাঠাবে।

    পিএইচপি কি?:
    পিএইচপি (PHP:Hypertext Preprocessor ) একটা সার্ভার সাইড,ক্রস প্লাটফর্ম,HTML-embedded স্ক্রিপ্টিং ল্যাংগুয়েজ।পিএইচপি এর বেশিরভাগ syntax গুলো C,Perl,Java থেকে ধার করা।এই ল্যাংগুয়েজটির উদ্দেশ্য হল ওয়েব পেজ দ্রুত তৈরী করা ডাইনামিকালি।

    পিএইচপি শেখার আগে কি জানা থাকা দরকার:
    ১. এইচটিএমএল
    ২. C জানা থাকে তাহলে সুবিধা আছে।
    কি কি সফটওয়ার প্রয়োজন ?:
    যেসব ওয়েব সার্ভার পিএইচপি সাপোর্ট করে সেখানে hosting(জায়গা) নিতে হবে।এ জন্য টাকা গুনতে হবে।
    আপাতত শেখার জন্য আমরা নিজের কম্পিউটারেই ওয়েব সার্ভার ইনস্টল করে নেব।এ জন্য নিম্নোক্ত সফটওয়ারগুলি ইনস্টল থাকতে হবে আপনার কম্পিউটারে-
    সার্ভার সফটওয়ার
    ১.একটা পিএইচপি-compitable ওয়েব সার্ভার যেমন: এপাচি
    ২.পিএইচপি
    ক্লাইন্ট সফটওয়ার
    ১.ওয়েব ব্রাউজার যেমন মজিলা ফায়ারফক্স (এটাতো সবার ইনস্টল দেয়াই আছে)
    ২.একটা টেক্সট এডিটর যেমন:নোটপ্যাড।আপনি পিএইচপি এর জন্য Specialized এডিটরও ব্যাবহার করতে পারেন।পরে বিস্তারিত আসছি … ।

    সিম্ফনিতে (Symfony) কীভাবে কাস্টম ফর্ম তৈরি করা যায়

    এই টিউটোরিয়ালে আমি দেখাব সিম্পনিতে (Symfony) কীভাবে কাস্টম ফর্ম তৈরি করা যায় আমি ধরে নিচ্ছি আগে থেকেই কমপ্লিট সিম্ফনি ইন্সটল করা আছে আপনার পিসিতে, যদি
    ইন্সটল করা না থাকে তাহলে আমার এই বাংলা ভিডিও তা দেখে নিতে পারেন

    এখন,আমার ডিরেক্টরিটা চেঞ্জ করতে হবে যেখানে আমার কমপ্লিট সিম্ফনি ইন্সটল করা আছে
    path
    আপনার ডিরেক্টরিটা ভিন্ন হতে পারে , কারন আমি এখানে লিনাক্স ব্যবহার করার মাধ্যমে দেখাচ্ছি , তারপর টাইপ করুন

    php app/console;

    টার্মিনালের মাধ্যমে , আপনে দেখতে পারবেন অনেকগুলো সিম্ফনি কমান্ড

    Rasel Khan:~$ php app/console
    Symfony version 2.6.4 - app/dev/debug
    
    Usage:
     [options] command [arguments]
    
    Options:
     --help (-h)           Display this help message
     --quiet (-q)          Do not output any message
     --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
     --version (-V)        Display this application version
     --ansi                Force ANSI output
     --no-ansi             Disable ANSI output
     --no-interaction (-n) Do not ask any interactive question
     --shell (-s)          Launch the shell.
     --process-isolation   Launch commands from shell as a separate process.
     --env (-e)            The Environment name. (default: "dev")
     --no-debug            Switches off debug mode.
    
    Available commands:
     help                                  Displays help for a command
     list                                  Lists commands
    acme
     acme:hello                            Hello World example command
    assetic
     assetic:dump                          Dumps all assets to the filesystem
     assetic:watch                         Dumps assets to the filesystem as their source files are modified
    assets
     assets:install                        Installs bundles web assets under a public web directory
    cache
     cache:clear                           Clears the cache
     cache:warmup                          Warms up an empty cache
    config
     config:debug                          Dumps the current configuration for an extension
     config:dump-reference                 Dumps the default configuration for an extension
    container
     container:debug                       Displays current services for an application
    debug
     debug:config                          Dumps the current configuration for an extension
     debug:container                       Displays current services for an application
     debug:event-dispatcher                Displays configured listeners for an application
     debug:router                          Displays current routes for an application
     debug:swiftmailer                     Displays current mailers for an application
     debug:translation                     Displays translation messages informations
     debug:twig                            Shows a list of twig functions, filters, globals and tests
    doctrine
     doctrine:cache:clear-metadata         Clears all metadata cache for an entity manager
     doctrine:cache:clear-query            Clears all query cache for an entity manager
     doctrine:cache:clear-result           Clears result cache for an entity manager
     doctrine:database:create              Creates the configured databases
     doctrine:database:drop                Drops the configured databases
     doctrine:ensure-production-settings   Verify that Doctrine is properly configured for a production environment.
     doctrine:generate:crud                Generates a CRUD based on a Doctrine entity
     doctrine:generate:entities            Generates entity classes and method stubs from your mapping information
     doctrine:generate:entity              Generates a new Doctrine entity inside a bundle
     doctrine:generate:form                Generates a form type class based on a Doctrine entity
     doctrine:mapping:convert              Convert mapping information between supported formats.
     doctrine:mapping:import               Imports mapping information from an existing database
     doctrine:mapping:info                 
     doctrine:query:dql                    Executes arbitrary DQL directly from the command line.
     doctrine:query:sql                    Executes arbitrary SQL directly from the command line.
     doctrine:schema:create                Executes (or dumps) the SQL needed to generate the database schema
     doctrine:schema:drop                  Executes (or dumps) the SQL needed to drop the current database schema
     doctrine:schema:update                Executes (or dumps) the SQL needed to update the database schema to match the current mapping metadata.
     doctrine:schema:validate              Validate the mapping files.
    generate
     generate:bundle                       Generates a bundle
     generate:controller                   Generates a controller
     generate:doctrine:crud                Generates a CRUD based on a Doctrine entity
     generate:doctrine:entities            Generates entity classes and method stubs from your mapping information
     generate:doctrine:entity              Generates a new Doctrine entity inside a bundle
     generate:doctrine:form                Generates a form type class based on a Doctrine entity
    init
     init:acl                              Mounts ACL tables in the database
    orm
     orm:convert:mapping                   Convert mapping information between supported formats.
    router
     router:debug                          Displays current routes for an application
     router:dump-apache                    Dumps all routes as Apache rewrite rules
     router:match                          Helps debug routes by simulating a path info match
    security
     security:check                        Checks security issues in your project dependencies
    server
     server:run                            Runs PHP built-in web server
     server:start                          Starts PHP built-in web server in the background
     server:status                         Outputs the status of the built-in web server for the given address
     server:stop                           Stops PHP's built-in web server that was started with the server:start command
    swiftmailer
     swiftmailer:debug                     Displays current mailers for an application
     swiftmailer:email:send                Send simple email message
     swiftmailer:spool:send                Sends emails from the spool
    translation
     translation:debug                     Displays translation messages informations
     translation:update                    Updates the translation file
    twig
     twig:debug                            Shows a list of twig functions, filters, globals and tests
     twig:lint                             Lints a template and outputs encountered errors
    yaml
     yaml:lint                             Lints a file and outputs encountered errors
    
    

    এখন, নতুন একটা সিম্ফনি বান্ডেল তৈরি করব জেনারেট কমান্ডের ( generate:bundle ) মাধ্যমে। বান্ডেল জেনারেট করতে সমস্যা হলে আমরা সেই বান্ডেলের হেল্প নিব এই

    php app/console generate:bundle --help;

    কমান্ডের মাধ্যমে, তাহলে সবগুলো কমান্ড দেখাবে কীভাবে তৈরি করতে হবে ।

    N:B The bundle namespace must end with “Bundle”.

    নীচের স্টেপগুলো অনুসরন করি কীভাবে বান্ডেল এবং ইনটিটি (Entity) তৈরি করতে পারি

    স্টেপ -১ নতুন একটা বান্ডেল তৈরি করব একমি ডিরেক্টরির ( Acme directory ) নিচে , সিম্ফনি ইন্সটল করার সময় ডিফল্ট অবস্থায় এই ডিরেক্টরিটা পাবেন । আমার বান্ডেলের নাম হবে টাস্ক-বান্ডেল (TaskBundle)।
    এখন টার্মিনালের মাধ্যমে টাইপ করেন

     php app/console generate:bundle --namespace=Acme/TaskBundle;

    তারপর এন্টার প্রেস করেন ।

    স্টেপ -২ আপনে দেখতে পারবেন আপনার বান্ডেলের নাম , নীচের কোডটার মত

    Bundle name [AcmeTaskBundle]:

    স্টেপ -৩ তারপর প্রেস এন্টার

    Target directory [/var/www/Symfony/src]:

    স্টেপ -৪ এই স্টেপে বলে দিতে হবে আপনার বান্ডেলটা কোন ফরম্যাট-এ কনফিগারেশন হবে , আমি বেবহার করছি yml ফরম্যাটে , নীচের কোডটার মত

    Configuration format (yml, xml, php, or annotation):yml

    স্টেপ -৫ তারপর টাইপ করেন yes , নীচের কোডটার মত

     Do you want to generate the whole directory structure [no]? yes

    You are going to generate a “AcmeTaskBundleAcmeTaskBundle” bundle
    in “/var/www/Symfony/src/” using the “annotation” format.

    স্টেপ -৬ প্রেস এন্টার

    Do you confirm generation [yes]?

    You saw Bundle generation
    Generating the bundle code: OK
    Checking that the bundle is autoloaded: OK

    স্টেপ -৭ এন্টার প্রেস করতে থাকেন যতক্ষণ না পর্যন্ত এই স্ট্রিং টা দেখায় “You can now start using the generated code! “। নীচের স্টাকচারটা পিকচারটা দেখেন
    pic_3

    স্টেপ -৮ এখন, আমি নতুন একটা ইনটিটি (Entity) তৈরি এই “doctrine:generate:entity” কমান্ডের মাধ্যমে ।

    php app/console doctrine:generate:entity;

    স্টেপ -৯ তারপর ইনটিটি (Entity) শর্টকাট নাম চাইবে

     Next The Entity shortcut name like AcmeTaskBundle:Task 

    স্টেপ -১০ এই স্টেপে বলে দিতে হবে আপনার ইনটিটি (Entity) ম্যাপিং ইনফর্মেশনটা ( mapping information) কোন ফরম্যাট-এ কনফিগারেশন হবে , আমি বেবহার করছি yml ফরম্যাটে ।

    Configuration format (yml, xml, php, or annotation) [annotation]:yml

    আপনার কমপ্লিট ফাঁকা একটা ইনটিটি (Entity) শুরু হয়ে গেল, এখন আপনার মনের মতন করে কিছু ফিল্ড বা ফাংশন অ্যাড করে নেন ।
    বি : দ্র আপনার ফিল্ড তৈরি করার পর প্রাইমারি কী (primary key) অটোমেটিক অ্যাড হয়ে যাবে, এটা নিয়ে আপনার ভাবতে হবে না

    কমপ্লিট ইন্সটল হওয়ার পর ওপেন করেন Task.php ফাইল এবং অ্যাড করেন নীচের কোডটা

    <?php
     namespace AcmeTaskBundleEntity; 
     
     class Task {  
    
    	 protected $task;  
     	 protected $dueDate; 
     
    	 public function getTask()     { 
    
             return $this->task;
    	}
    
    	public function setTask($task){
     
      		$this->task = $task;
     	}
     
         public function getDueDate(){
     
      		return $this->dueDate;
    	}
     
     	public function setDueDate(DateTime $dueDate = null){
     		$this->dueDate = $dueDate;
     	}
    }
     ?>
    

    টাস্ক Task নামে একটা ক্লাস তৈরি করলাম পুরাতন পিএইচপি অবজেক্ট-এর মত এবং সাথে কিছু ফাংশন আছে ……………।।
    বি : দ্র এই কোডটা সম্বন্ধে বেশী কিছু বললাম না, আমি ধরে নিচ্ছি যারা সিম্ফনি নিয়ে কাজ করতে আসছেন বা চান তারা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাল ধারনা রাখেন

    এখন, ওপেন করুন DefaultController.php ফাইল আন্ডার AcmeTaskBundleController ডিরেক্টরি এবং নীচের কোডটা অ্যাড করেন

     <?php
     // src/Acme/TaskBundle/Controller/DefaultController.php
     namespace AcmeTaskBundleController;
    
     use SymfonyBundleFrameworkBundleControllerController;
     use AcmeTaskBundleEntityTask;
     use SymfonyComponentHttpFoundationRequest;
    
     class DefaultController extends Controller{
     
     		public function formAction(Request $request){
     
     			$task = new Task();
     			$task->setTask('Write a blog post');
     			$task->setDueDate(new DateTime('tomorrow'));
    
     			$form = $this->createFormBuilder($task)
         			->add('task', 'text')
     				->add('dueDate', 'date')
     				->add('save', 'submit', array('label' => 'Create Post'))
     				->getForm();
     
     				return $this->render('AcmeTaskBundle:Default:new.html.twig',   array(
     					'form' => $form->createView(),
     				));
     		}
     }
     ?> 
    

    আমি নতুন একটা রাউট (Route) তৈরি করে নিয়েছি form(ফর্ম ) নামে , লাইন নাম্বার ১১ তে দেখুন formAction এই ফাংশনটা কাজ করবে যখন ব্রাউজারে এই yoursite.com/form টা পাস হবে ,
    এই এক্সামপলটা দেখাবে কীভাবে আপনার ফর্ম ডিরেক্টরিটা তৈরি হবে কন্ট্রোলারের (controller) মধ্য , ফর্মের জন্য আপনার দুইটা ফিল্ড আছে টাস্ক (task) এবং
    ডিউডেট (dueDate) লাইন নাম্বার ১৮, ১৯ এবং এদের প্রপার্টিগুলো আছে ইনটিটি Task.php ক্লাসে , ৫ নাম্বার লাইন -এ অ্যাড করেছি আমি use AcmeTaskBundleEntityTask; এটা অ্যাড করার ফলে আমি Task ক্লাসের প্রপার্টিগুলো ব্যবহার করতে পারছি,

    এখন আপনার ফর্ম তৈরি হয়ে গেল , তারপর এটাকে আমি render করে দিব অন্য একটা টেমপ্লেট-এ দেখানোর জন্য , ইহা সাকসেস হয় ভিউ (“view”) অবজেক্ট-এর মাধ্যমে , ফর্মের কিছু হেল্পার ফাংশন বেবহার করব ফর্মটা দেখানোর জন্য , ওপেন করুন এই src/Acme/TaskBundle/Resources/views/Default ডিরেক্টরিটা, এখানে নতুন একটা ফাঁকা টুয়িগ(twig) টেমপ্লেট তৈরি করেন ( form.html.twig) নামে, তারপর নীচের কোডটা অ্যাড করেন

     
    {{ form(form) }}
     
    

    এক্সামপলটা আপনি ফর্ম সাবমিট করতে পারবেন পোস্ট (POST) রিকুয়েস্টের মাধ্যমে এবং একই ইউ-আর-এল (URL) ইহা ডিসপ্লে করবে । পরবর্তীতে দেখাব কীভাবে Request ( রেকুএস্তে ) Method (ফাংশন) পরিবর্তন করা যায় .

    এখন, প্রয়োজন ইউজারের কাছ থেকে ডাটা সাবমিট করা , ইউজারটা অবশ্যই রাইট করবে ফর্মের মধ্য , এর জন্য কন্ট্রোলারে ( Controller) কিছু ফাংশন অ্যাড করে নিব , নীচের কোডটা দেখেন ।

     <?php
    
     $form->handleRequest($request);
    
    	if ($form->isValid()) {
    
    		return $this->redirect($this->generateUrl('task_success'));
     	}
     ?> 
    

    এই handleRequest() ফাংশনটা প্রবর্তিত হয় Symfony 2.3 তে , Request ( রিকুয়েস্টে ) টা গৃহীত হবে সাবমিট ফাংশন ধারা ..

    এখন, ফর্ম-এর ইনপুট ফিল্ড-এ ডাটা ইনপুট শেষ হলে যখন আমি সাবমিট বাটনে ক্লিক করব, তখন অন্য আরেকটা রাউট-এ (Route) রিডাইরেক্ট (Redirect) করবে , এটা করার জন্য আমি কন্ট্রোলারের ( Controller) মধ্য isClicked() ফাংশনটা ব্যবহার করব, নীচে দেখুন

    <?php
      
     	if ($form->isValid()) {
     
    		$nextAction = $form->get('save')->isClicked()
     				? 'task_success'
     				: 'task_fail';
    		return $this->redirect($this->generateUrl($nextAction));
     	}
    ?>
    

    এখানে, ইউজার যখন ফর্মটা সাবমিট করবে তখন এটা ভ্যালিড কিনা তা চেক করে নিলাম isValid() ফাংশনের মাধ্যমে , তারপর আমি Condition দিলাম যদি ক্লিকএবল এবং ভ্যালিড হয় তখন সে /task_success রাউট-এ (Route) রিডাইরেক্ট (Redirect) করবে , আর যদি ভ্যালিড না হয় /task_fail রাউট-এ (Route) রিডাইরেক্ট (Redirect) করবে।

    আমি এখানে forward() ফাংশনটা ব্যবহার করেছি দুইটা রাউট-এর জন্য
    For task_new:

    $this->forward('AcmeTaskBundle:Default:task_new');

    For task_success:

     $this->forward('AcmeTaskBundle:Default:task_success'); 

    এই হচ্ছে সিম্পল একটা ফর্ম তৈরি সিম্ফনিতে , কারও কোন প্রব্লেম হলে পোস্টের নীচে কমেন্ট করবেন , সবাই ভাল থাকবেন !!

    Laravel 4 install & configuration

    At first need composer setup, open your terminal , I’m using git bash use command below by terminal

    curl -sS https://getcomposer.org/installer | php

    you can showing downloading running… when download complete then use command

    php composer.phar

    see below many commands

    Rasel Khan:~$ composer
       ______
      / ____/___  ____ ___  ____  ____  ________  _____
     / /   / __ / __ `__ / __ / __ / ___/ _ / ___/
    / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
    ____/____/_/ /_/ /_/ .___/____/____/___/_/
                        /_/
    Composer version 1.0-dev (8e9659bd8317ad3f623c4d17940380443cf8772c) 2015-06-14 09:10:46
    
    Usage:
     command [options] [arguments]
    
    Options:
     --help (-h)           Display this help message
     --quiet (-q)          Do not output any message
     --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
     --version (-V)        Display this application version
     --ansi                Force ANSI output
     --no-ansi             Disable ANSI output
     --no-interaction (-n) Do not ask any interactive question
     --profile             Display timing and memory usage information
     --working-dir (-d)    If specified, use the given directory as working directory.
    
    Available commands:
     about            Short information about Composer
     archive          Create an archive of this composer package
     browse           Opens the package's repository URL or homepage in your browser.
     clear-cache      Clears composer's internal package cache.
     clearcache       Clears composer's internal package cache.
     config           Set config options
     create-project   Create new project from a package into given directory.
     depends          Shows which packages depend on the given package
     diagnose         Diagnoses the system to identify common errors.
     dump-autoload    Dumps the autoloader
     dumpautoload     Dumps the autoloader
     global           Allows running commands in the global composer dir ($COMPOSER_HOME).
     help             Displays help for a command
     home             Opens the package's repository URL or homepage in your browser.
     info             Show information about packages
     init             Creates a basic composer.json file in current directory.
     install          Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
     licenses         Show information about licenses of dependencies
     list             Lists commands
     remove           Removes a package from the require or require-dev
     require          Adds required packages to your composer.json and installs them
     run-script       Run the scripts defined in composer.json.
     search           Search for packages
     self-update      Updates composer.phar to the latest version.
     selfupdate       Updates composer.phar to the latest version.
     show             Show information about packages
     status           Show a list of locally modified packages
     update           Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
     validate         Validates a composer.json
    
    

    If you want globally install it then use command mv composer.phar /usr/bin/composer Now, you have composer install globally !!

    At this time needs laravel install & downloading, change your directory where you want install it, My directory changes for Desktop ! type command

    Rasel Khan:~: cd ~/Desktop 

    and with create a new directory called (laravel_lesson) mkdir laravel_lessson then change this directory user command

    Rasel Khan:~$ cd laravel_lesson 

    Now install laravel by composer use command

    composer create-project laravel/laravel your-project-directtory-name 

    This (your-project-directtory-name) means laravel_lesson directory, Because before I create directory Desktoplaravel_lesson, So finally command use

    composer create-project laravel/laravel laravel_lesson

    You can show all laravel files downloading running…. When download complete then you need third party dependency
    Now, use command

    composer update 

    You have all files downloaded into laravel_lesson directory

    Now you need server running use command

    Rasel Khan:~$ php artisan serve
    Laravel development server started on http://localhost:8000/
    
    

    Finally you showing by browser complete install laravel 4 !!