Home / PHP

PHP

How to fix qualified domain name

When you restart your apache server using the command

sudo /etc/init.d/apache2 restart

Someone get the following error:

Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2:
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Let’s go fix this issue !

This is just a friendly warning and not really a problem (as in that something does not work).

If you insert a

ServerName localhost 

in either httpd.conf or

apache2.conf in /etc/apache2 

and restart apache the notice will disappear.

If you have a name inside

/etc/hostname

you can also use that name instead of

localhost

And it uses

127.0.1.1

if it is inside your

/etc/hosts
127.0.0.1 localhost
127.0.1.1 myhostname

Use a text editor such as “sudo nano” via command line or “gksudo gedit” on the desktop to create a new file,

sudo nano /etc/apache2/conf.d/fqdn 

or

gksu "gedit /etc/apache2/conf.d/fqdn" 

then add
ServerName localhost
to the file and save. This can all be done in a single command with the following:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf 
sudo a2enconf fqdn 

WordPress Custom Post

WordPress has been gaining a foothold in the general content management system (CMS) game for a few years now, but the real breakthrough was the custom post type mechanism which allows for the creation of a wide variety of content in WordPress. In this plugin Custom Post For WordPress you can easily created your custom post like audio,video and portfolio…etc

==== Installation ====

  • Download Custom Post For WordPress.
  • Upload the Custom Post For WordPress directory to your /wp-content/plugins/ directory, using your favorite method (ftp, sftp, scp, etc…)
  • Activate Custom Post For WordPress from your Plugins page. (You’ll show “WPCustomPost” Menu in your admin sidebar.)
  • Then add new for WPCustomPost
  • After post has been created successfully then add new (post or page), then simply add shortcode [khan] in your post or page, You’ll show your all custompost 🙂

see more here

How to install Laravel 5 with Virtual Host configurations

I am sharing steps below with terminal command run screenshots that how to install laravel5 with Virtual Hosts configurations. we need to install composer to download laravel from remote server. for this first command will be for download composer using curl then second one move composer to local user directory for make composer globally use .

# installing composer
curl -sS https://getcomposer.org/installer | php
# move composer globally
sudo mv composer.phar /usr/local/bin/composer
# check composer working
composer

Composer

Now we’ve composer installed successfully!!. and then there are two method to install laravel
1. Via Laravel Installer
2. Via composer

1. Via Laravel Installer :

laravel installer is a new method to install added for laravel 5. it’s much faster method than installing via Composer.

# Download installer

Rasel Khan:~$ composer global require "laravel/installer=~1.1"
Changed current directory to /home/khan/.composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

#Setting up path

Rasel Khan:~$ export PATH="~/.composer/vendor/bin:$PATH"

# If you’ve successfully configure then command type ‘laravel’ , you’ll see your laravel installer version 1.2.1

Rasel Khan:~$ laravel
Laravel Installer version 1.2.1

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help  Displays help for a command
  list  Lists commands
  new   Create a new Laravel application.

#Change dir where to install

Rasel Khan:~$ cd /var/www/project/

# Download and installing

Rasel Khan:~$ laravel new laravel5

# giving permission

Rasel Khan:~$ sudo chmod -R 777 laravel5

2. Via Composer :-

After install composer you can directly install laravel by create-project command and give your destination path where you want to install laravel.

# checking composer is successfully installed

Rasel Khan:~$ composer

# Create a ditectory where to install

Rasel Khan:~$ sudo mkdir /var/www/project/laravel5
[sudo] password for khan: 

# downloading and install via composer

Rasel Khan:~$ sudo composer create-project laravel/laravel /var/www/project/laravel5

# setting up writable permission

Rasel Khan:~$ sudo chmod -R 777 /var/www/project/laravel5

Another way you can do manually download and install

Now, let’s go configure with Virtual Hosts, create a config file into /etc/apache2/sites-available/ directory, i’ve create this file name called laravel5.com.conf, another way you’ll use Vagrant environments

Rasel Khan:~$ sudo mkdir /etc/apache2/sites-available/laravel5.com.conf

# now open laravel5.com.conf file using any editor, I’m using nano editor .

Rasel Khan:~$ sudo nano /etc/apache2/sites-available/laravel5.com.conf

# past below this code into laravel5.com.conf file and save .


<VirtualHost *:80>
    ServerName laravel5.dev
    DocumentRoot "/var/www/project/laravel5/public/"
    DirectoryIndex index.php
    <Directory /var/www/project/laravel5/public/>
        AllowOverride All
    </Directory>
</VirtualHost>

# Enable this file

Rasel Khan:~$ sudo a2ensite laravel5.com.conf

# Reload apache server

Rasel Khan:~$ sudo service apache2 reload

# go to hosts file

Rasel Khan:~$ sudo nano /etc/hosts

# create a new one 127.0.0.1 laravel5.dev

127.0.0.1       localhost
127.0.1.1       raselkhan
127.0.0.1       symfony.dev
127.0.0.1       laravel5.dev

# If you’ve all configuration is ok then need to restart your server

Rasel Khan:~$  sudo service apache2 restart

# now go any browser addressbar url and type

http://laravel5.dev/

you’ll see laravel5 successfully install and configuration with virtual hosts.

laravel5

Enjoy 🙂

Fix WordPress Feed XML Parsing Errors

When you try to Export all content or rss feed in wordpress then it’ll show XML Parsing Error and not working with seo in your site and so was the WordPress source feed which showed “XML Parsing Error: XML or text declaration not at start of entity“. And all this while Google reader was correctly tracking our feed, while it was not loading in any web browser!

XML Parsing Error
Firefox showed this error on loading the feed

XML Parsing Error: XML or text declaration not at start of entity Location: http://www.quickonlinetips.com/archives/feed/ Line Number 2, Column 1: ^

Google Chrome revealed some more information

This page contains the following errors: error on line 2 at column 6: XML declaration allowed only at the start of the document Below is a rendering of the page up to the first error.

I found that it was most commonly caused by a Blank line before XML declaration

Basically this error arises if there is a whitespace before an XML declaration

<?xml ... ?>

appears in your feed. The blank line error means that the code has blank lines in it, which can be easily introduced in the WordPress php code by a plugin, theme, or any configuration file.

So basically I had to go looking for blank lines before PHP starting tag

<?php
and after the PHP closing tag
 ?>

I intended to use the ‘Fix RSS Feed WordPress plugin’ which promised to search all folders (except wp-admin and wp-includes directory) if the php file has blank lines in the head and tail line, and then delete blank lines. The plugin author writes that it will delete php files at only the beginning and end of the blank lines, and will not delete the blank lines between documents, so it will not affect the operation of the php programs.

Now, change your root directory where wp-config.php include, see below

Rasel Khan:~$ cd /var/www/project/wordpress
Rasel Khan:~$ ls
index.php    wp-activate.php     wp-comments-post.php  wp-content   wp-links-opml.php  wp-mail.php      wp-trackback.php
license.txt  wp-admin            wp-config.php         wp-cron.php  wp-load.php        wp-settings.php  xmlrpc.php
readme.html  wp-blog-header.php  wp-config-sample.php  wp-includes  wp-login.php       wp-signup.php

open your ‘index.php’ file via any editor, I’m using gedit editor

Rasel Khan:~$ sudo gedit index.php

Here ‘index.php’ file look

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

Now create a new file called ‘fix-rss.php’ in ‘wp-config.php’ directory and copy the follwing code

<?php
function wp_xml_fix_rss($input) {
	$allowed = false;

	$found = false;

	foreach (headers_list() as $header) {
		if (preg_match("/^content-type:s+(text/|application/((xhtml|atom|rss)+xml|xml))/i", $header)) {
			$allowed = true;
		}

		if (preg_match("/^content-type:s+/i", $header)) {
			$found = true;
		}
	}

	if ($allowed || !$found) {
		return preg_replace("/As*/m", "", $input);
	} else {
		return $input;
	}
}

ob_start("wp_xml_fix_rss");

Finally include ‘fix-rss.php’ file in ‘index.php’, see below look like

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
include './fix-rss.php';
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

It’ll be works ! 🙂
if any problem just comment here………

পিএইচপি অ্যারে

পিএইচপি অ্যারে

  • একটা ভেরিয়েবল একটা single value এর পাত্র(container).কিন্তু অ্যারে একাধিক value’র container বা পাত্র।
  • একটা অ্যারে হল কিছু উপাদান নিয়ে গঠিত যেখানে প্রত্যেকটি উপাদানের নির্দিষ্ট value আছে-key বা index বলে যেটা দিয়ে উপাদানটিকে রেফার করা হয়।
  • ধরুন আপনার কাছে কিছু শহরের নামের লিস্ট আছে এখন যদি এগুলোকে কোনো single variable এ store করে রাখতে চান তাহলে এমন হবে-

    $city1= “Dhaka”
    $city2= “Chittagong”
    $city3= “Rajshahi”
    $city4= “Sylet”
    $city5= “Khulna”
    $city6= “Barishal”

  • কিন্তু একটা অ্যারে এসবগুলোকে একটা ভ্যারিয়েবল এ ধরে রাখতে পারে।
  • অ্যারের সাধারন গঠন পদ্ধতি হচ্ছে কিছু উপাদানের ক্রম (series of element) যার উপাদানগুলির index ০ থেকে শুরু হয়ে ক্রমানুসারে বাড়তে থাকবে।
  • বেশ কয়েকভাবে অ্যারে লেখা যায় সবচেয়ে সহজটি হচ্ছে-

    <?php
    
    $city = array("Dhaka", "Chittagong", "Rajshahi","Sylet", "Khulna", "Barishal");
    
    ?>
    

    ব্যাস একটা variable এ সব শহরের নাম store হয়ে গেছে,প্রতিটি শহরের নাম এক একটি উপাদান এবং প্রতিটি উপাদানে একটি index নির্দিষ্ট হয়ে গিয়েছে।
    array’র ১ম উপাদান এর index/key হচ্ছে ০ তাহলে এখানে Dhaka[0], Chittagong[1]… এভাবে বাকিগুলো।
    এখন আপনি যেকোন উপাদান এর index number উল্লেখ করে সে উপাদানটি পেতে পারেন।যেমন

    <?php
    
    Print "$city[3]";
    
    ?>
    

    তবে যদি আমরা চাই তাহলে অ্যারের এই ডিফল্ট ভ্যালু পরিবর্তন করে দিতে পারি,=> এই অপারেটরটি দিয়ে। ধরি আমি চাচ্ছি এই উপরের অ্যারেটির starting index 2 দিয়ে শুরু হোক তাহলে এভাবে লিখতে হবে

    <?php
    
    $city=array(2=>"Dhaka", "Chittagong", "Rajshahi",
    "Sylet", "Khulna", "Barishal", "Barishal");
    
    ?>
    

    এই অপারেটর যেকোন উপাদানের পূর্বে ব্যাবহৃত হতে পারে তার index নির্দিষ্ট করার জন্য।

    অ্যাসোসিয়েটিভ অ্যারে (Associative array)

    এতক্ষনতো পূর্ন সংখ্যার index/key দেখলাম আপনি চাইলে string ও ব্যাবহার করতে পারেন।এটাকেই associative array বলে।যেমন:

    <?php
    
    $ages = array("adnan"=>32, "rezwan"=>30, "refat"=>34);
    
    ?>
    

    মাল্টিডাইমেনশনাল অ্যারে (Multidimensional array)

    এখানে একটা অ্যারের ভিতর প্রতিটি উপাদান একটি অ্যারে হতে পারে আবার এই সব অ্যারের প্রতিটি উপাদানও একটি অ্যারে হতে পারে এবং এভাবে আরও।

    <?php
    
    $continents=array("Asia"=>array("Bangladesh",
    "India","Pakistan"),"Europe"=>array("England",
    "France"),"Africa"=>array("Kenya","Libya","Somalia"));
    
    ?>
    

    আরও মাল্টিডাইমেনশনাল অ্যারে (Multidimensional array others)

    foreach() লুপ

  • foreach লুপ শুধুমাত্র অ্যারে ম্যানিপুলেট করার জন্য তৈরী করা হয়েছে। তাই এই লুপিং সিস্টেম শুধুমাত্র অ্যারের উপরে কাজ করবে।
  • foreach লুপে as শব্দের পরে যে ভেরিয়েবল থাকে (আপনার ইচ্ছেমত এই ভেরিয়েবলের নাম দিতে পারেন) সেই ভেরিয়েবলে অ্যারের এলিমেন্টগুলি একটা একটা করে আসবে।
  • অন্যান্য লুপিং এ আমরা ঠিক করে দেই যে লুপিং কত থেকে শুরু হবে এবং কত পর্যন্ত চলবে।
  • আর এখানে অ্যারের প্রথম এলিমেন্ট থেকে লুপিং শুরু হবে এবং অ্যারের শেষ এলিমেন্ট আসলে তখন লুপিং শেষ হবে।
  • <?php
    
    $city=array("Dhaka", "Chittagong", "Rajshahi",
    
    "Sylet","Khulna", "Barishal", "Barishal");
    
    foreach ($city as $value)
    
    {
    
    echo "$value.<br>";
    
    }
    
    ?> 
    

    Output

    Dhaka
    Chittagong
    Rajshahi
    Sylet
    Khulna
    Barishal
    Barishal

    range() ফাংশন দিয়ে অ্যারে তৈরী করা যায়।যেমন

    <?php
    
    $numeric1 = range(10,15);
    
    //This is similar to
    
    $numeric1 = array(10,11,12,13,14,15);
    
    //array with optional parameter (even array)
    
    
    $numeric2 = range(10,20,2);
    
    //This is similar to
    $numeric2 = array(10,12,14,16,18,20);
    
    
    //array odd
    
    $numeric3 = range(11,21,2);
    
    //This is similar to
    
    $numeric3 = array(11,13,15,17,19,21);
    
    //letter array
    
    $letter = range("C","K");
    
    //This is similar to
    
    $letter = array("C","D","E","F","G","H","I","J","K");
    
    ?>
    

    এভাবে range() ফাংশন দিয়ে অ্যারে লেখার সুবিধা হচ্ছে বড় অ্যারেকে কত ছোট করে লেখা যাচ্ছে কিন্তু কাজ একই অ্যারে চেক করা।

    is_array() ফাংশন দ্বারা একটা ভেরিয়েবল অ্যারে কিনা তা চেক করা যায়।যেমন

    <?php
    
    //letter array
    $letter = range("C","K");
    
    if(is_array($letter)){
     echo "this is an array and its 3rd value is $letter[2]";
    }else{
     echo "this is not an array";
    }
    
    ?>
    

    আউটপুট

    this is an array and its 3rd value is E

    অ্যারে উঠিয়ে দিয়ে কোন স্ট্রিং বা অন্যকিছু বসিয়ে দেখুন আউটপুট আসবে

    this is not an array

    print_r() দিয়ে অ্যারের সব কনটেন্ট দেখা কোড ডিবাগিং এর সময় এটা কাজে লাগে। ধরুন উপরের letter অ্যারেটির সব কনটেন্ট দেখতে চান তাহলে

    print_r($letter);
    

    আউটপুট

    Array ( [0] => C [1] => D [2] => E [3] => F [4] => G [5] => H [6] => K )
    

    পিএইচপি লুপঃ While লুপ, ফর লুপ

    আসলে এককাজ বারবার করতে আমাদের সকলেরই খারাপ লাগে যেমন একই সিল ৫০টা ইনভেলপ এর মধ্যে মারা বা ধরুন একই কথা ১০০টা পেজের মধ্যে লেখা ইত্যাদি।প্রোগ্রামিং এ মজার ব্যাপারটা হচ্ছে একটু চিন্তা করলেই এইসব পূনরাবৃত্তির কাজ কয়েক লাইন লিখেই করা যায়।লুপ দিয়ে এগুলো করা যায়।

    লুপ হচ্ছে এমন একটা statement যেটা দিয়ে একটা কোডের ব্লক কে নির্দিষ্ট কয়েকবার execute করা যায় যতক্ষন না আমাদের কাজটা শেষ হয়।

    ৪ ধরনের লুপ আছে-

  • While Loop
  • Do…while Loop
  • For Loop
  • Foreach Loop
  • পিএইচপি While লুপ

    যখন একটা condition true হয় তখন while লুপ টি একটা কোড ব্লক কে execute করে।

    সংকেত

    while (condition)
    {
    code to be executed;
    }
    

    যদি condition false হয় তখন ব্রাকেটের ভিতর কোডটি এড়িয়ে যায়।যখন শেষের ব্রাকেটটি আসবে তখন condition আবার চেক করবে,true হলে কোড আবার execute করবে।condition এ যতবার দেয়া আছে ততবার এভাবে চলবেই।যেমন:

    <html>
    <body>
    <?php
    $i=1;
    while($i<=5)
    {
    echo "The number is " . $i . "<br />";
     $i++;
    }
    ?>
    </body>
    </html>
    

    প্রথমে i=1. এরপর while($i<=5) অর্থ্যাৎ লুপটি ততক্ষন চলবে যতক্ষন I এর মান ৫ থেকে ছোট বা সমান হবে।আর লুপটি প্রতিবার ১ করে বাড়বে।কোডটি রান করলে আউটপুট আসবে এমন- The number is 1 The number is 2 The number is 3 The number is 4 The number is 5 এবার এর মান ৬ দিলে কি আউটপুট আসবে? কিছুই আসবেনা কারন তখন এটি while loop এর সাথে মিলবেনা তাই কোড execute হবেনা। Do…while loop

    এটা while loop এর মতই শুধু পার্থক্য এটুকু যে condition টি শেষে test করা হয়,শুরুতে করার পরিবর্তে,যেটা হয় while লুপ এ। অর্থাৎ কমপক্ষে একবার লুপ টি execute হবেই।

    সংকেত

    Do
    {
    Code to be executed
    }
    While(condition);
    

    যেমন নিচের উদাহরনটির কোডটিও উপরের মত একই আউটপুট দেবে শুধু কাজ করবে ভিন্নভাবে।

    <?php
    $i=1;
    do
    {
    $i++;
    echo "The number is " . $i . "<br />";
    }
    while ($i<=5);
    ?>
    

    কিন্তু এখানে যদি i=6 দেই তাহলে কি হবে?নিচের মত
    This is line 6
    This line is outside while loop.so it will not repeat.
    দেখুন লুপ টি প্রথমবার চেকিং ছাড়াই একবার কোড execute হয়েছে।প্রথমবার execution এর পর চেক করেছে যে লুপটি repeat হবে কিনা?কিন্তু while loop এ প্রথমবারই এই চেক হয়।

    ফর লুপ

    এই লুপ টি একটু জটিল।ফর লুপ এর কাজ while লুপ দিয়েও হয়,তবে কিছু সুবিধার কারনে এটি ব্যাহৃত হয়।

    সংকেত

    for (init; condition; increment)
    {
    code to be executed;
    } 
    
  • for loop statement ব্রাকেটের ভিতর ৩টি expression নেয় যেগুলো সেমিক্লোন দ্বারা বিভক্ত হয়।
    ১ম টি assignment statement(loop control variable),প্রথমবার লুপটি পূনরাবৃত্তির আগেই এটা একবার execution হয়।
  • ২য় টি Boolean expression যেটা প্রতিবার পূনরাবৃত্তির আগেই একবার এর মান নির্নীত(evaluate)হয়,এই মান true হলে পূনরাবৃত্তি চলবে আর false return করে তাহলে পূনরাবৃত্তি বন্ধ হয়ে যাবে।
  • ৩য় টি দিয়ে loop control variable এর মান বাড়াতে বা কমাতে ব্যাবহৃত হয়।
  • নিচের উদাহরনটি দেখুন লুপটি শুরু হয়েছে i=1 দিয়ে এবং এটি চলবে যতক্ষন I এর মান ৫ এর চেয়ে ছোট বা সমান হয়।আর I এর মান ১ করে বাড়বে।

    <?php
    for ($i=1; $i<=5; $i++)
    {
    echo "The number is " . $i . "<br />";
    }
    ?>
    

    Output

    The number is 1
    The number is 2
    The number is 3
    The number is 4
    The number is 5

    যেকোন expression ফাকা বা একটিতে একাধিক expression থাকতে পারে,যেগুলো কমা দ্বারা বিভক্ত হবে। যদি Boolean expression ফাকা থাকে তাহলে এর default মান true হয়। এই উদাহরনে সবগুলির আউটপুট ১-১০ হবে।
    আরেকটা লুপ আছে নাম foreach loop এটি array এর সাথে ব্যাবহৃত হয় তাই পরে আসছি।

    পিএইচপি কন্ডিশনাল স্টেটমেন্ট

    কোনো শর্তের উপর কোনো action নেয়ার জন্য কন্ডিশনাল স্টেটমেন্ট ব্যাবহৃত হয়। ধরুন আমি আমার ওয়েবসাইটে এমন একটা feature যোগ করতে চাই যাতে যদি কেউ আমার সাইটে দুপুর ১২ টার আগে ঢুকে তাহলে দেখাবে “Good Morning” আর যদি কেউ বিকেল ৫ টার পর ঢুকে তাহলে দেখাবে “Good evening” এই ধরনের বরং এর চেয়েও মজাদার ও অ্যাডভান্সড কাজগুলো করতে Conditional statement এর দরকার,condition এর উপর ভিত্তি করে পিএইচপি স্বয়ংক্রিয়ভাবে কাজগুলো করতেই থাকে।

    পিএইচপি তে কয়েক ধরনের Conditional statement আছে-

  • if statement
  • if…else statement
  • if…elseif…else statement
  • Switch statement
  • if statement

    if statement টি দিয়ে কিছু কোড execute করা হয় যখন আমাদের দেয়া condition টি true হয়।
    নিচে উদাহরনের আউটপুট হবে Have a nice day যদি ঐ দিন Saturday হয় যেদিন কোডটা লিখে রান করাবেন।

    <?php
    $d=date("D");
    if ($d=="Sat")
    echo "Have a nice Day";
    ?>
    

    if…else statement

    আচ্ছা কখনও তো একথা শুনেছেন যদি পরিশ্রম কর তাহলে ভাল ফল পাবে, কি হবে যদি পরিশ্রম না করেন,ফেইল।এটাই if…else statement এর উদাহরন। এগুলোতো অনেক সময় আমরা বাস্তবেই ব্যাবহার করে থাকি এখন শুধু এটাকে পিএইচপি কোড দিয়ে লিখব।

    <?php
    $d=date("D");
    if ($d=="Sat") echo "Have a nice Day";
    else
    echo “Today is not saturday”;
    ?>
    

    দেখুন condition যেটা দিয়েছি যদি সেটা true হয় অর্থ্যাৎ কোডটা যেদিন রান করাবেন সেদিন যদি Saturday হয় তাহলে আউটপুট হবে Have a nice day আর তা নাহলে Today is not Saturday.

    If…elseif…else statement

    এই statement দ্বারা এক বা একাধিক কোডের ব্লক execute করা যায়।

    <html>
      <body>
    <?php
    if ($number>=60)
      echo "First Division";
    elseif ($number>=45 and $number<60)
      echo “Second Division”;
    elseif($number>=33 and $number<45)
      echo "Third Division";
    else
      echo “Failed”;
    ?>
    </body>
    </html> 
    

    পিএইচপি অপারেটর

    অপারেটরস

    • ভ্যালু বা ভ্যারিয়েবলকে manipulate করতে ব্যাবহৃত হয়।

    ৩ ধরনের অপারেটর আছে ১.Unary – একটা ভ্যালু বা ভ্যারিয়েবলকে(operand) নিয়ে কাজ করে। ২.Binary-দুটি ভ্যালু বা ভ্যারিয়েবলকে নেয়। ৩.Ternary- ৩টি ভ্যালু বা ভ্যারিয়েবলকে নিয়ে থাকে।

    • এর পাশাপাশি আমরা Operator গুলোকে অনেকভাবে শ্রেনীবদ্ধ করতে পারি যেমন-Arithmetic, Assignment, Comparison Operator etc.

    অ্যাসাইনমেন্ট অপারেটর (Assignment Operator) এ অপারেটর গুলো একটা ভ্যালু বা ভ্যারিয়েবলকে অন্য একটা ভ্যালু বা ভ্যারিয়েবলের সমান করতে ব্যাহৃত হয়। $my_var = 4; $another_var = $my_var; এখন $my_var ও $another_var উভয়েরই মান হল ৪.

    <!--?php 
    $addition = 2 + 4;
    $subtraction = 6 - 2;
    $multiplication = 5 * 3;
    $division = 15 / 3;
    $modulus = 5 % 2;
    echo &quot;Perform addition: 2 + 4 = &quot;.$addition.&quot;<br ?-->";
    echo "Perform subtraction: 6 - 2 = ".$subtraction."
    ";
    echo "Perform multiplication:  5 * 3 = ".$multiplication."
    ";
    echo "Perform division: 15 / 3 = ".$division."
    ";
    echo "Perform modulus: 5 % 2 = " . $modulus ?>
    

    সেভ করে রান করান এমন দেখাবে

    Perform addition: 2 + 4 = 6
    Perform subtraction: 6 - 2 = 4
    Perform multiplication: 5 * 3 = 15
    Perform division: 15 / 3 = 5
    Perform modulus: 5 % 2 = 1

     স্ট্রিং অপারেটর (String Operator)

    • এটাতো আগেই আমরা দেখেছি আর ব্যাবহারও করেছি-“”, ‘’
    • Arithmetic এবং Assignment Operator এর Combination
    • Programming এ একটা পরিচিত কাজ হচ্ছে একটা ভ্যারিয়েবলকে নির্দিষ্ট হারে বাড়ানো,যেমন গননার ক্ষেত্রে

    আমি যদি ১ করে বাড়াতে চাই তাহলে $counter=$counter+1; যাহোক সংক্ষেপে এভাবে লেখে $counter+=1; Pre/Post-Increment এবং Pre/Post-Decrement: উপরেরটা একটু অদ্ভুত মনে হতে পারে,এটার আরেকটা সর্টকাট মেথড আছে কোন ভ্যরিয়েবল থেকে ১ করে বাড়ানো বা কমানোর $x++ যেটা $x += 1; অথবা $x = $x + 1 এর সমান। আর কমানোর ক্ষেত্রে শুধু “-” অপারেটরটা ব্যাবহৃত হবে।

    পিএইচপি (PHP) স্ট্রিং

    পিএইচপি স্ট্রিং এতক্ষন ব্যাবহার করলেও গভীর আলোচনা করা হয়নি। পিএইচপি Career এ এই স্ট্রিং একটা গুরত্বপূর্ন ভূমিকা পালন করে। তাই এ ব্যাপারে পরিষ্কার ধারনা থাকা আবশ্যক। স্ট্রিং ব্যাবহারের আগে এটাকে তৈরী করে নিতে হবে। একটা স্ট্রিং সরাসরি একটা ফাংশনে ব্যাবহার হতে পারে অথবা একটা ভ্যারিয়েবলে store থাকতে পারে। নিচে দেখুন একই স্ট্রিং দুবার তৈরী করেছি,একবার ভ্যারিয়েবলে store করা হয়েছে আরেকবার সরাসরি echo করা হয়েছে।

    <?php
    
    $my_string = "o merciful make me bold and brave!";
    echo " o merciful make me bold and brave!";
    echo $my_string;
    ?> 

    উপরের উদাহরনে প্রথম স্ট্রিং কে $my_string ভ্যারিয়েবলে ঢুকিয়ে দেয়া হয়েছে আর দ্বিতীয়বার আরেকটা স্ট্রিং কে echo করা হয়েছে,কোনো ভ্যারিয়েবলে না store করেই। একটা জিনিস মাথায় রাখতে হবে যে যখনই কোন স্ট্রিং কে আমরা একাধিকবার ব্যাবহারের প্লান করব শুধু তখনই এটাকে কোনো ভ্যারিয়েবলে ঢুকিয়ে store করে রাখব।
    আচ্ছা এবার উপরের কোডটুকু লিখে সেভ করে রান করান। ব্রাউজারে নিচের মত আউটপুট পাবেন।

    এতক্ষনতো Double quotes দ্বারা স্ট্রিং তৈরী করা হয়েছে এখন Single quotes দ্বারা স্ট্রিং তৈরী করতে পারেন বরং এটাই ঠিক,তা নাহলে আসলেতো ওটা apostrophes নামে পরিচিত।

    <?php
    $my_string = ‘o merciful make me bold and brave!’;
    echo ‘o merciful make me bold and brave!’;
    echo $my_string;
    ?>
    

    যদি স্ট্রিং এর ভিতর single quotes ব্যাবহার দরকার হয় তাহলে এভাবে করুন- echo ‘PHP it’s neat’ আমরা এখানে আপাতত double quotes ব্যাবহার করব এতে কিছু সুবিধা আছে যেটা single quotes এ নাই। পিএইচপি লেখার যে পদ্ধতিদুটি আলোচনা করা হল এ দুটি সাধারনত সব প্রোগ্রামিং ল্যাংগুয়েজ এর ক্ষেত্রে ব্যাবহৃত হয়,কিন্তু পিএইচপি তে একটা পাওয়ারফুল টুল আছে যেটা দিয়ে বহুলাইনের স্ট্রিং লেখা যায় কোনো quotation ব্যাবহার করা ছাড়াই।সেটা হল heredoc,একটু সতর্কতার সাথে স্ট্রিং কোডিং করতে হবে নাহলে ঝামেলা হবে।নিচে দেখুন কিভাবে এটা করতে হয়-

    এভাবে যদি স্ট্রিং লেখেন তাহলে কয়েকটি জিনিস অবশ্যই খেয়াল রাখতে হবে-

  • <<< বা কিছু identifier আছে যা আপনাকে ব্যাবহার করতে হবে heredoc শুরু করার আগে যেমন আমি TESTব্যাবহার করেছি। শেষেও এটি ব্যাবহার করেছি এবং সেমিক্লোন দিয়ে শেষ হবে।
  • এটা নিজেই একটা লাইন হবে,(indent) ফাকা রেখে লাইনটি শুরু করা যাবেনা।
  • আউটপুট নিচের মত আসবে যেহেতু আমরা
    (লাইনের ব্রেক দেয়ার জন্য ব্যাবহৃত হয়)ট্যাগ স্ট্রিং এর ভিতর ব্যাবহার করিনি।
  • পিএইচপি (PHP) ভেরিয়েবল স্কোপ

    ভেরিয়েবল স্কোপ

    একটা ফাংশনে একটা ভেরিয়েবল থাকতে পারে,নিচের উদাহরনটি দেখুন

    <?php
    $number = 8;
    
    function calculation(){
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$anothernumber;
    
    echo $addnumber;
    }
    
    echo "This $number variable from outside of calculation() function and its value is $number";
    
    echo "</br>";
    
    calculation();
    
    ?>
    

    আউটপুট

    This $number variable from outside of calculation() function and its value is 8
    18

  • দেখুন ভেরিয়েবল চিহ্ন $ এর আগে (ব্যাকস্লাশ) চিহ্ন দেয়াতে সেটা ভেরিয়েবল হিসেবে গন্য হয়নি বরং স্ট্রিং এর মত আউটপুট হয়েছে।এটাকে বলে এসকেপ ক্যারেক্টার (escape character)।
  • এখানে ফাংশনের ভিতর $number নামে একটা ভেরিয়েবল আছে এবং ফাংশনের বাইরেও এই একই নামে আরেকটা ভেরিয়েবল আছে ($number = 8;)।
  • ভেরিয়েবল দুটির নাম একই কিন্তু সম্পূর্ন আলাদা ভেরিয়েবল।কারন একটা ফাংশনের ভিতর আর একটা বাইরে।ভিতরের এই ভেরিয়েবলটিকে বলে লোকাল ভেরিয়েবল।
  • আর বাইরের ভেরিয়েবলটির নাম গ্লোবাল ভেরিয়েবল।
  • লোকাল ভেরিয়েবলটি শুধু এই ফাংশনের ভিতরেই ব্যবহার করা যাবে,ফাংশনের বাইরে থেকে একসেস পাওয়া যাবেনা।
  • এই যে একটা ভেরিয়েবল শুধু একটা নির্দিষ্ট জায়গায় ব্যবহার করা যাচ্ছে,এটাই হল এই ভেরিয়েবলটির স্কোপ।
  • গ্লোবাল ভেরিয়েবল

    গ্লোবাল ভেরিয়েবল একটা প্রোগ্রামের ভিতর যেকোন জায়গায় ব্যবহার করা যায়।একটা ফাংশনে গ্লোবাল ভেরিয়েবল ব্যবহার করার জন্য দুটি পদ্ধতি আছে-

    পদ্ধতি ১ ($GLOBALS[‘number’])

    ধরুন উপরের প্রোগ্রামে ব্যবহৃত গ্লোবাল ভেরিয়েবলটি যদি ফাংশনে ব্যবহার করতে চান তাহলে নিচের মত কোড লিখতে হবে

    <?php
    $number = 8;
    
    function calculation(){
    $GLOBALS["number"];
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$GLOBALS["number"];
    
    echo $addnumber;
    
    }
    calculation();
    
    ?>
    

    ফাংশনের বাইরের $number ভেরিয়েবলটিকে ফাংশনের ভিতর $GLOBALS অ্যারে দিয়ে নিয়ে এসেছি। ফাংশনটি যদি আরও বড় হত এবং আরও অন্য কোথাও গ্লোবাল ভেরিয়েবলটি ব্যবহার করতে হত তাহলে প্রতিবারই $GLOBALS[“number”] এটা লিখে ব্যবহার করতাম।

    পদ্ধতি ২ (global $number)

    এই পদ্ধতিতে একটা ম্যাজিক আছে একটু ভালভাবে পড়ুন।ধরুন আগের মতই ফাংশনের বাইরের $number (যেটা গ্লোবাল) ভেরিয়েবলটিকে ব্যবহার করার জন্য আমাদের শুধু $number এর আগে global শব্দটি লিখে দিতে হবে।অর্থাৎ নিচের মত

    1.global $number
    এবং এরপর থেকে যদি শতবারও এই ভেরিয়েবলটি ব্যবহার করতে হয় তাহলে কিভাবে লিখবেন? global $number এভাবে? না।বরং এভাবে $number. এবার ম্যাজিকটার কথা বলি নিচের কোড দেখুন

    <?php
    $number = 8;
    
    function calculation(){
    global $number;
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$number;
    echo $addnumber;
    
    }
    
    calculation();
    
    ?>
    

    উপরের কোডে (যেখানে $GLOBALS অ্যারে ব্যবহার করলাম) ৬ নম্বর লাইনে $number হচ্ছে লোকাল ভেরিয়েবল আর এই কোডে এই লাইনটি দ্বারা গ্লোবাল ভেরিয়েবলে নতুন নাম্বার ১০ assign করা হয়েছে।(কারনতো আগেই বলেছি যে global $number কে ব্যবহার করতে এখন $number এভাবে লিখতে হবে) এরপর ১০ নম্বর লাইনে এই ভেরিয়েবলটির সাথে তাকেই আবার যোগ করেছি,কোড রান করান আউটপুট আসবে ২০।কাজেই global শব্দ ব্যবহার করে ভেরিয়েবল ব্যবহারের সময় সতর্ক থাকতে হবে।সবচেয়ে ভাল $GLOBALS[“number”] এভাবে ব্যবহার করুন।তাহলে আর কোন শংকা থাকেনা।

    আরেকটা গুরত্বপূর্ন জিনিস,নিচের কোড দেখুন এখানে echo করলে আউটপুট কত আসবে?১০, ২০ না ৩০?

    <?php
    $number = 10;
    $number = 20;
    $number = 30;
    echo $number;
    ?>
    

    উত্তর হচ্ছে ৩০,কারন প্রথমে $number এর মান ছিল ১০,এরপরের বার $number এর মান assign করা হয়েছে ২০ আর সব শেষে ৩০ এবং শেষেরটা echo হয়েছে। এই কোডের উপরের কোডটাতে যখন global $number লিখেছিলাম তখন এর মান ছিল ৮ (কারন ফাংশনের বাইরে গ্লোবাল $number এর মান ৮ আছে) পরের লাইনে $number = 10 দেয়াতে এর মান assign হয়েছে ১০ এবং এটিই এখন এর আসল মান।

    স্টাটিক ভেরিয়েবল

    কোন ভেরিয়েবলের সামনে static শব্দটি লিখলে সেটা স্টাটিক ভেরিয়েবল হয়ে যায়।একটা ফাংশনে স্টাটিক ভেরিয়েবল ব্যবহৃত হয়।ফাংশনের হেডারে প্যারমিটার থাকতে পারে এগুলিও ভেরিয়েবল।যখন ফাংশন এক্সিকিউট শেষ হয়ে যায় তখন ভেরিয়েবলগুলিও ধ্বংশ হয়ে যায়।স্টাটিক ভেরিয়েবল ব্যবহার করলে তা হয়না বরং ফাংশন শেষ হয়ে গেলেও এই ভেরিয়েবল মান ধরে রাখে এবং ঐ ফাংশনকে আবার call করলে তখন সে ধরে রাখা মানটি পাঠিয়ে দেয় যেমনঃ

    <?php
    function test_stat() {
    static $ekta_variable = 0;
    $ekta_variable++;
    echo $ekta_variable;
    echo "<br />";
    }
    test_stat();
    test_stat();
    test_stat();
    ?>
    

    ব্যাখ্যা

    ফাংশনে প্রথমে $ekta_variable ভেরিয়েবলের মান ছিল ০ আর $ekta_variable++ দ্বারা এই মান ১ বৃদ্ধি পেল তাই প্রথম ফাংশনটা call করাতে আউটপুট দিল ১,এখন $ekta_variable এর মান ০ থেকে হয়ে গেল ১।এরপর দ্বিতীয়বার ফাংশটাকে call করাতে আউটপুট দিল ২ এভাবে বাকিগুলি।

    যদি static শব্দটি উঠিয়ে দেন তাহলে আউটপুট আসবে
    1
    1
    1

    আর স্টাটিক ভেরিয়েবল ব্যবহারের কারনে এখন আউটপুট আসবে

    1
    2
    3

    সুপারগ্লোবাল ভেরিয়েবল

    পিএইচপি আগে থেকেই কিছু ভেরিয়েবল তৈরী করে রেখেছে ইচ্ছে করলে এই ভেরিয়েবলগুলি কোডের যেকোন জায়গায় ব্যবহার করতে পারেন।নাম সুপারগ্লোবাল ভেরিয়েবল।এসব ভেরিয়েবল ব্যবহার করে অনেক গুরত্বপূর্ন তথ্য পেতে পারেন যেমন ইউজারের অপরেটিং সিস্টেম কি,কোন ব্রাউজার ব্যবহার করছে,বর্তমান সেশন,আইপি এড্রেস ইত্যাদি।যেমন


    আউটপুট

    Your browser is: Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
    এখানে

    $_SERVER['HTTP_USER_AGENT'] 

    হচ্ছে সুপারগ্লোবাল ভেরিয়েবল।এরকম আরো আছে যেমন

    $_SERVER['REMOTE_ADDR'] এটা দিয়ে ক্লাইন্টের আইপি এড্রেস জানতে পারবেন।
    $_POST
    $_GET
    $_FILES আপলোডকৃত ফাইলের তথ্য আনা যায়
    $_ENV
    $_SEESION
    $_COOKIE
    

    এগুলির প্রতিটির উপর পরে আলাদা আলাদা টিউটোরিয়াল আছে তাই এখানে বিস্তারিত দেয়া হলনা।

    কনস্টান্ট

    ভেরিয়েবলের মান কোডে বিভিন্ন সময় বিভিন্ন রকম হয় বা পরিবর্তন হয়।কিন্তু কনস্টান্টের মান নির্ধারিত পরিবর্তন হবেনা পুরো স্ক্রিপ্টে। পিএইচপিতে define() ফাংশন দ্বারা কনস্টান্ট এর মান ঠিক করে দেয়া যায়।যেমন

    <?php
    define ('TUTORIAL','Great web development tutorial site');
    echo TUTORIAL;
    ?>
    

    আউটপুট
    Great web development tutorial site

    একবার মান ঠিক করে দিলে আর কখনও এই মান পরিবর্তন হবেনা।যেমন পাই (Π) এর মান ৩.১৪১৬ ,এদের মান নির্ধারন করার ক্ষেত্রে কনস্টান্ট ব্যবহার করা উপকারী।