PDA

View Full Version : طریقه تعریف کردن داده های به صورت private در php



davidrobert
جمعه 15 اسفند 1393, 17:58 عصر
سلام و خسته نباشید من میخوام در php داده های را به صورت private تعریف کنم ولی در php داده ها به صورت Public هستش مثلا در این کد

<?php
if (isset($_POST['submit']))
{
include 'db.php';

$title=$_POST['txtid'] ;
$name= $_POST['txtname'] ;
$last=$_POST['txtlast'] ;
$year=$_POST['txtyear'] ;

mysql_query("INSERT INTO `table1`(id,name,last,year)
VALUES ('$title','$name','$last','$year')");


}
?>مثلا مقدار

$year
که تعریف کردم نه این بله مقدار های دگه که تعریف کردم در هر دستوری که در همون صفحه باز میکنم. به این صورت
<?php ?>مقدار $year در همه صفحه صدا زده میشود اگه بخوام نامی ایجاد کنم به همون نام قبلی یعنی این $year به کل به صورت متغیر سراسری میشناسه نه متغییر داخلی ممنون میشم کمک کنید تا بتونم مقدار متغییر ها رو داخلی تعریف کنم نه سراسری. برای تعریف متغییر داخلی باید چیکار کنم.

Veteran
جمعه 15 اسفند 1393, 18:04 عصر
هاااااااااااا ؟ :متفکر: واضحتر توضیح بده!

hamedarian2009
جمعه 15 اسفند 1393, 18:34 عصر
خودت متوجه شدی چی گفتی؟ private و public که توی شی گرایی و کلاس ها هستن شاید منظورت scope هست حقیقتا من هرچی خوندم متوجه نشدم چی گفتین

bagherok
جمعه 15 اسفند 1393, 18:55 عصر
خب واضحه که چی گفتن
منظورشون Variable scope هست
والبته که فک میکنم ایشون دات نت کار هستن
به خاطر همین این سوال رو پرسیدن


http://php.net/manual/en/language.variables.scope.php

davidrobert
جمعه 15 اسفند 1393, 19:27 عصر
ممنون دوست عزیز bagherok (http://barnamenevis.org/member.php?175630-bagherok) شما منظور من رو متوجه شدید بله من دات نت کار میکنم ولی تو php من این رو ایراد میبینم من در دات نت متغییری رو تعریف میکنم به این صورت if(texttbox1.text=="")
{string a;} من در این متغییر مقدار a رو تعریف کردم در همون مقدار if استفاده میشه غیر از اون جای دیگه استفاده نمیشه ولی در php کد رو مینویسم مثلا $year که تعریف میکنم این متغیر تو کل page میاد نمی دونم چطور باید جلو این موردر و بگیرم. ممنون میشم کمک کنید من رو.

imohammad
جمعه 15 اسفند 1393, 21:09 عصر
خب بعد دستورت اونو unset کن

rezakho
جمعه 15 اسفند 1393, 21:42 عصر
از کلوژرها استفاده کنید، مخصوص همین کارها ساخته شده، البته باید نسخه php تون 5.3 به بالا باشه
اگر هم نیاز داشتید متغیر سراسری رو داخل کلوژر استفاده کنید، همین جا بگید تا راهنمایی کنم


$f = function()
{
$title = $_POST['txtid'];
$name = $_POST['txtname'];
$last = $_POST['txtlast'];
$year = $_POST['txtyear'];

mysql_query("INSERT INTO `table1`(id,name,last,year) VALUES ('$title','$name','$last','$year')");
};

$f();

bagherok
جمعه 15 اسفند 1393, 22:28 عصر
البته دلیلی نمیبینم برای اینکار
ولی میشه از فانکشن استفاده کرد بصورت زیر
هردو حالت یکی هستند


function run($f){
$f();
}

if(1){
run(function(){
$a='a';
echo 'echo run== '.$a.'<br/>';
});
}

echo 'echo Global'.$a;






if(1){
call_user_func(function(){
$b='b';
echo 'echo call_user_func =='.$b.'<br/>';

});
}

echo 'echo Global '.$b.'<br/>';

rezakho
جمعه 15 اسفند 1393, 22:31 عصر
اینها چیه نوشتی bagherok (http://barnamenevis.org/member.php?175630-bagherok) ؟؟؟
اون if چکاره هست؟؟؟

bagherok
جمعه 15 اسفند 1393, 22:34 عصر
متوجه نمیشم؟؟؟

bagherok
جمعه 15 اسفند 1393, 22:34 عصر
اینها چیه نوشتی bagherok (http://barnamenevis.org/member.php?175630-bagherok) ؟؟؟
اون if چکاره هست؟؟؟
برای اینه که مقدار یه متغییر درون شرط و بیرون از شرط تست بشه





function run($f){
$f();
}

if (isset($_POST['submit']))

run(function(){

include 'db.php';
$title=$_POST['txtid'] ;
$name= $_POST['txtname'] ;
$last=$_POST['txtlast'] ;
$year=$_POST['txtyear'] ;
mysql_query("INSERT INTO `table1`(id,name,last,year)
VALUES ('$title','$name','$last','$year')");
});
}




if (isset($_POST['submit']))

call_user_func(function(){

include 'db.php';
$title=$_POST['txtid'] ;
$name= $_POST['txtname'] ;
$last=$_POST['txtlast'] ;
$year=$_POST['txtyear'] ;
mysql_query("INSERT INTO `table1`(id,name,last,year)
VALUES ('$title','$name','$last','$year')");

});
}